"""
2048 游戏核心算法
"""
list_target = None
def zero_to_left():
"""
把0移动到末尾
:param list_target:
:return:
"""
for index in range(len(list_target) - 1, -1, -1):
if list_target[index] == 0:
del list_target[index]
list_target.append(0)
def merge_left():
"""
合并相邻相同的数
:return:
"""
# 把0移动到最后面
zero_to_left()
for index in range(len(list_target) - 1):
if list_target[index] != 0 and list_target[index] == list_target[index + 1]:
list_target[index] *= 2
list_target[index + 1] = 0
zero_to_left()
def square_matrix_transpose(sqr_matrix):
"""
方正转置
:param sqr_matrix: 二位列表
:return:
"""
for c in range(0, len(sqr_matrix) - 1):
for r in range(c + 1, len(sqr_matrix)):
sqr_matrix[r][c], sqr_matrix[c][r] = sqr_matrix[c][r], sqr_matrix[r][c]
def map_move_to_left():
"""
地图左移
:param map_target:
:return:
"""
for index in range(len(map_target)):
global list_target
list_target = map_target[index]
merge_left()
return map_target
def map_move_to_right():
"""
地图右移
:param map_target:
:return:
"""
for line in map_target:
global list_target
# 从右向左取出数据 形成 新列表
list_target = line[::-1]
merge_left()
# 从右向左接收数据
line[::-1] = list_target
def map_move_to_up():
"""
地图上移动
:return:
"""
square_matrix_transpose(map_target)
map_move_to_left()
square_matrix_transpose(map_target)
def map_move_to_down():
"""
地图下移
:return:
"""
square_matrix_transpose(map_target)
map_move_to_right()
square_matrix_transpose(map_target)
map_target = [
[2, 0, 0, 2],
[4, 4, 2, 2],
[2, 4, 0, 4],
[0, 0, 2, 2],
]
# map_move_to_left()
# print(map_target)
# map_move_to_right()
# print(map_target)
# map_move_to_top()
# print(map_target)
map_move_to_down()
print(map_target)
python 2048游戏核心算法
最新推荐文章于 2024-01-08 17:41:27 发布