2048规则:
1、可以上下左右移动
2、如果相邻数字相同,移动时需要合并,末尾为0
‘’’
0移动到末尾
lists_merge = [2, 0, 2, 2]
def zero_to_end(lists_merge):
'''
零移动到末尾
非0:向前移动,为0:删除后追加
'''
for i in range(len(lists_merge)-1, -1, -1):
if lists_merge[i] == 0:
# lists_merge.remove(lists_merge[i])
del lists_merge[i]
lists_merge.append(0)
元素合并
def merge(lists_merge):
'''
1.零元素移动到末尾
2.相邻元素相同则合并
'''
zero_to_end(lists_merge)
for i in range(len(lists_merge)-1):
if lists_merge[i] == lists_merge[i+1]:
lists_merge[i] += lists_merge[i+1]
# del lists_merge[i+1]
# 移除列表中对应的元素(从左至右)
# lists_merge.remove(lists_merge[i + 1])
# 删除列表中对应位置的变量绑定的对象
del lists_merge[i+1]
lists_merge.append(0)
左移
d
ef move_left():
for line in map:
merge(line)
右移
def move_right():
for line in map:
lists = line[::-1]
merge(lists) # 零元素移动到末尾、相邻元素合并
line[::-1] = lists # 将修改的结果列表反向存储
# line = lists[::-1] # 变量赋值
转置
def matrix_device():
'''
将矩阵对应位置按照同序数交换
'''
for i in range(len(map)-1): # 行
for j in range(i+1, len(map)): # 列
map[i][j], map[j][i] = map[j][i], map[i][j]
上移
def move_up():
matrix_device()
move_left()
matrix_device()
下移
def move_down():
matrix_device()
move_right()
matrix_device()