日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python实现2048游戏_python实现一个简单的2048游戏

發布時間:2025/3/13 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python实现2048游戏_python实现一个简单的2048游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[Python]代碼

# -*- coding: utf8 -*-

import random

data = [[0, 0, 0, 0],

[0, 0, 0, 0],

[0, 0, 0, 0],

[0, 0, 0, 0]]

_MAX_X = 4

_MAX_Y = 4

_RECT_SIZE = _MAX_X * _MAX_Y

class GameOverException(Exception):

pass

def zero_list(size):

return [0] * size

def initialize():

for index in range(_MAX_Y):

data[index] = zero_list(_MAX_X)

new_pos()

def is_empty(x, y):

try:

return data[y][x] == 0

except IndexError as e:

return False

def to_xy(no):

return no % _MAX_Y, no // _MAX_X

def get_random_pos():

no = random.randint(0, _RECT_SIZE - 1)

for index in range(no, _RECT_SIZE):

x, y = to_xy(index)

if is_empty(x, y):

return x, y

raise GameOverException

def print_map():

for row in data:

print(row)

def get_by_xy(x, y):

return data[y][x]

def get_row(index):

return data[index]

def get_col(index):

return [row[index] for row in data]

def replace_col(index, col):

assert type(col) == list

assert len(col) == _MAX_Y

for y in range(_MAX_Y):

data[y][index] = col[y]

def replace_row(index, row):

assert type(row) == list

assert len(row) == _MAX_X

for x in range(_MAX_X):

data[index][x] = row[x]

def merge_data(src, *, reverse=False):

pre_len = len(src)

source = [item for item in src if item != 0]

if reverse:

source.reverse()

for start in range(1, len(source) // 2 + 1):

for index in range(start, len(source) - start + 1):

moon = source[index - 1]

star = source[index]

if moon == star:

moon += star

star = 0

elif moon == 0:

moon = star

star = 0

source[index - 1] = moon

source[index] = star

source.extend(zero_list(pre_len - len(source)))

if reverse:

source.reverse()

return source

def new_pos():

x, y = get_random_pos()

data[y][x] = 2

def show():

print_map()

def vertical(*, reverse=False):

changed = False

for index in range(_MAX_X):

source = get_col(index)

summary = merge_data(source, reverse=reverse)

changed |= (summary != source)

replace_col(index, summary)

return changed

def horizontal(*, reverse=False):

changed = False

for index in range(_MAX_Y):

source = get_row(index)

summary = merge_data(source, reverse=reverse)

changed |= (summary != source)

replace_row(index, summary)

return changed

def up():

if vertical():

new_pos()

def down():

if vertical(reverse=True):

new_pos()

def left():

if horizontal():

new_pos()

def right():

if horizontal(reverse=True):

new_pos()

if __name__ == '__main__':

pass

標簽:

代碼

版權申明:本站文章部分自網絡,如有侵權,請聯系:west999com@outlook.com

特別注意:本站所有轉載文章言論不代表本站觀點!

本站所提供的圖片等素材,版權歸原作者所有,如需使用,請與原作者聯系。

總結

以上是生活随笔為你收集整理的python实现2048游戏_python实现一个简单的2048游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。