Python 中的 2048 游戏

Posted

技术标签:

【中文标题】Python 中的 2048 游戏【英文标题】:2048 game in Python 【发布时间】:2020-02-12 02:59:03 【问题描述】:

作为初学者,我开始编写 2048 游戏。我制作了矩阵并用0填充它。然后我想写一个循环遍历整个矩阵并找到所有 0 值的函数。然后保存 0 值的坐标,稍后用 2 或 4 值替换它们。我做了一个随机变量来选择 2 或 4 之间。问题是,我真的不知道如何将 0 值的 x 和 y 坐标推送到数组然后读取它们。




table = [[0, 0, 0, 0],
         [0, 0, 0, 0],
         [0, 0, 0, 0],
         [0, 0, 0, 0]]


options = []



def saveOptions(i, j):
     options.append([i , j])
     return options




def optionsReaderandAdder(options):
    if len(options) > 0:
        spot = random.random(options)
        r = random.randint(0, 1)
        if r > 0.5:
            table  <-------- THIS IS THE LINE WHERE I WOULD LIKE TO CHANGE THE VALUE OF THE 0 TO 2 OR 4.










def optionsFinder():
    for i in range(4):
        for j in range(4):
            if table[i][j] == 0:
                saveOptions(i, j)

    optionsReaderandAdder(options)


addNumber()

print('\n'.join([''.join([':4'.format(item) for item in row])
                 for row in table]))

【问题讨论】:

i , j 是一个无序的set。您可能想要tuple(i , j)。除非 2048 是对称的,否则我不知道。 【参考方案1】:

您可以遍历表格的行和列:

for row in table:
    for element in row:
        if element == 0:
             # now what?

我们不知道坐标是什么。

Python 有一个名为enumerate 的有用函数。我们可以像以前一样进行迭代,但我们也可以获取数组的索引或位置。

zeroes = []

for i, row in enumerate(table):
    for j, element in enumerate(row):
        if element == 0:
             zeroes.append((i, j))

然后我们可以设置值,例如 all 为2

for i, j in zeroes:
    table[i][j] = 2

你的随机码看起来不错。

【讨论】:

非常感谢!回家看看

以上是关于Python 中的 2048 游戏的主要内容,如果未能解决你的问题,请参考以下文章

用随机列表中的 2 个值填充 2D 数组(2048 游戏)

尝试用 React 制作 2048 游戏。状态中的数据在不应该发生变化时发生了变化

不敢想!不敢想!我用Python自动玩转2048游戏

不敢想!不敢想!我用Python自动玩转2048游戏

Python 2048游戏实现

python写2048小游戏