日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 2048源码_一个python的2048简单实现

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

一個python的2048簡單實現

2018-11-28

# -*- 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

免責聲明:本文僅代表文章作者的個人觀點,與本站無關。其原創性、真實性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容文字的真實性、完整性和原創性本站不作任何保證或承諾,請讀者僅作參考,并自行核實相關內容。

http://www.pinlue.com/style/images/nopic.gif

總結

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

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