首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何合并/上下移动行/列的基础2048游戏

如何合并/上下移动行/列的基础2048游戏
EN

Stack Overflow用户
提问于 2020-06-30 21:08:11
回答 1查看 395关注 0票数 0

我需要一些帮助来创建两个函数push_uppush_down (想想2048年的游戏),我已经设法创建了一个函数,它可以将值左右推送,如果它们的值相等,则将它们相加。例如,[2,2,0,0]将作为[4,0,0,0]返回。我有一个单独的函数来添加随机数。

我需要对up和down做同样的事情,但是我不确定该怎么做。下面是我的起始数组:

代码语言:javascript
复制
grid = [
  [2, 2, 0, 2],
  [0, 2, 0, 0],
  [0, 2, 0, 4],
  [4, 0, 4, 0]
]

下面是我的函数:

代码语言:javascript
复制
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))

以下哪项输出:

代码语言:javascript
复制
[
  [0, 0, 4, 4],
  [0, 0, 0, 2],
  [0, 0, 2, 4],
  [0, 0, 4, 4]
]

和:

代码语言:javascript
复制
[
  [8, 0, 0, 0],
  [2, 0, 0, 0],
  [2, 4, 0, 0],
  [8, 0, 0, 0]]

我有一个打印在网格上的函数,但我需要一些帮助来编码函数,这将移位和合并向上和向下。例如,对于数组:

代码语言:javascript
复制
[
  [0, 0, 4, 4],
  [0, 0, 0, 2],
  [0, 0, 2, 4],
  [0, 0, 4, 4]
]

下一步是:

代码语言:javascript
复制
[
  [0, 0, 0, 0],
  [0, 0, 4, 4],
  [0, 0, 2, 2],
  [0, 0, 4, 8]
]

而up将是:

代码语言:javascript
复制
[
  [0, 0, 4, 4],
  [0, 0, 2, 2],
  [0, 0, 4, 8],
  [0, 0, 0, 0]
]

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

EN

回答 1

Stack Overflow用户

发布于 2020-07-01 16:34:23

您的代码在语法上看起来很好。有一些逻辑错误你应该首先修复。左推和右推还不起作用。以这个例子为例

代码语言:javascript
复制
[
  [0, 4, 0, 4],
  [0, 0, 0, 2],
  [0, 0, 2, 4],
  [4, 2, 2, 4]
]

对于右侧,这将返回:

代码语言:javascript
复制
[
[0, 0, 4, 4], 
[0, 0, 0, 2], 
[0, 0, 2, 4], 
[0, 0, 8, 4]
]

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

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62658214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档