我需要一些帮助来创建两个函数push_up
和push_down
(想想2048游戏),我已经成功地创建了函数,将值向左和向右推,然后如果它们的值相等,将它们相加。例如,[2,2,0,0]
将返回为[4,0,0,0]
。我有一个单独的函数,可以添加随机数
我需要做同样的上下,但我不知道如何去做。以下是我的起始阵列:
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]
]
任何帮助都将不胜感激。 先谢谢你
您的代码在语法方面看起来很好。您应该首先修复一些逻辑错误。向左和向右推还不起作用。就拿这个例子来说
对于右键返回:
对于左侧,返回相同的值,但反向。你能看出第一行和最后一行的错误吗?你应该重新考虑一下逻辑
完成后,可以使用循环创建列。(首先取每列的所有第一个数字,然后取所有第二个,…)
如果您有一个列列表,实际上可以使用向左或向右推的相同逻辑
我会在需要的时候提供更多的代码,我只是想先给你一些建议:)
相关问题 更多 >
编程相关推荐