【问题标题】:Making shift up into shift left in 2048 game [duplicate]在 2048 年游戏中将上移到左移 [重复]
【发布时间】:2018-07-08 15:55:14
【问题描述】:

所以我有一些代码可以在 2048 游戏中将数字板向上移动:

data = [0, 2, 4, 8, 0, 2, 8, 0, 0, 0, 0, 2, 4, 2, 2, 0]

def drawBoard(): # Making the board into a 2d array
    count = 0
    for i in range(16):
        print(data[i], end = ' ')
        count += 1
        if count == 4:
            print("")
            count = 0
print(drawBoard())

for col in range(4): #Loop to shift numbers up
    count = 0
    for row in range(4): # read loop
        if data[row*4+col] != 0:
            data[count*4+col] = data[row*4+col]
            count += 1
    for row in range(count, 4):
        data[row*4+col] = 0

print(drawBoard())

这基本上是获取数据,将其制成 4 x 4 板并将所有非零数字向上移动。
非轮班板:

2 2 4 8
0 2 8 0
0 0 0 2
4 2 2 0

转板:

2 2 4 8
4 2 8 2
0 2 2 0
0 0 0 0 

有没有办法使用与我评论的“循环向上移动数字”相同的格式并将这个向上移动功能变成向左移动功能?

所以左移的棋盘看起来像:

2 2 4 8
2 8 0 0 
2 0 0 0 
4 2 2 0

【问题讨论】:

  • 请检查您的代码。我得到IndentationError 和另一行None。另外,这显然是python-3.x,所以不要用 2.7 标记。
  • 无我无法修复但我修复了缩进错误
  • None 是因为您打印了drawBoard 的结果。您还可以修复标签。

标签: python python-3.x python-2.7 list


【解决方案1】:

我建议您旋转行/列引用,代码将相同。想象一下,你逆时针转动网格,所以你的第一列是最后一行,你的第一行是第一列

【讨论】:

  • 我试过了,还是不行。
猜你喜欢
  • 2017-08-19
  • 1970-01-01
  • 2014-09-11
  • 2020-02-12
  • 2020-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多