我需要一些帮助来创建 2 个函数push_up
,并且push_down
(想想 2048 游戏),我已经设法创建了将值向左和向右推的函数,然后如果它们具有相同的值,则将它们加在一起。例如,[2,2,0,0]
将返回为[4,0,0,0]
. 我有一个单独的函数来添加随机数。
我需要对 up 和 down 做同样的事情,但我不知道该怎么做。这是我的起始数组:
grid = [
[2, 2, 0, 2],
[0, 2, 0, 0],
[0, 2, 0, 4],
[4, 0, 4, 0]
]
这是我的功能:
def push_right(grid):
for row in grid:
for i, number in reversed(list(enumerate(row))):
if number == row[i-1]:
row[i] = number + row[i-1]
row[i-1] = 0
row.sort(key=lambda v: v != 0)
return grid
def push_left(grid):
for row in grid:
for i, number in reversed(list(enumerate(row))):
if number == row[i-1]:
row[i] = number + row[i-1]
row[i-1] = 0
row.sort(key=lambda v: v != 0, reverse=True)
return grid
print(push_right(grid))
print(push_left(grid))
哪个输出:
[
[0, 0, 4, 4],
[0, 0, 0, 2],
[0, 0, 2, 4],
[0, 0, 4, 4]
]
和:
[
[8, 0, 0, 0],
[2, 0, 0, 0],
[2, 4, 0, 0],
[8, 0, 0, 0]]
我有一个可以在网格上打印出来的函数,但是我需要一些帮助来编写可以上下移动和合并的函数。例如,对于数组:
[
[0, 0, 4, 4],
[0, 0, 0, 2],
[0, 0, 2, 4],
[0, 0, 4, 4]
]
下来将是:
[
[0, 0, 0, 0],
[0, 0, 4, 4],
[0, 0, 2, 2],
[0, 0, 4, 8]
]
向上将是:
[
[0, 0, 4, 4],
[0, 0, 2, 2],
[0, 0, 4, 8],
[0, 0, 0, 0]
]
任何帮助将非常感激。先感谢您。