【问题标题】:How to merge/shift rows/columns up or down basis 2048 game如何根据 2048 游戏合并/移动行/列向上或向下
【发布时间】:2020-10-20 19:14:59
【问题描述】:

我需要一些帮助来创建 2 个函数 push_uppush_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]
]

任何帮助将不胜感激。 提前谢谢你。

【问题讨论】:

  • 右推和左推是一样的吗?顺序对合并很重要。我知道您最终将其反转,但这并不能使合并正确?
  • 我对编码还是很陌生,这可能是一个错误。我只是在看输出是什么。请给我一些关于如何修复它的建议。

标签: python arrays merge 2048


【解决方案1】:

您的代码在语法上看起来不错。您应该首先修复一些逻辑错误。左右推还不行。举个例子

[
  [0, 4, 0, 4],
  [0, 0, 0, 2],
  [0, 0, 2, 4],
  [4, 2, 2, 4]
]

正确返回:

[
[0, 0, 4, 4], 
[0, 0, 0, 2], 
[0, 0, 2, 4], 
[0, 0, 8, 4]
]

对于左,返回相同但相反。你能看到第一行和最后一行的错误吗?你应该重新考虑逻辑..

完成后,您可以使用循环创建列。 (首先取每列的所有第一个数字,然后取所有第二个,...)

如果你有一个列列表,你实际上可以使用向左或向右推相同的逻辑。

我会在需要时提供更多代码,我只是想先给你一些建议:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多