在Python中随机放置列表中的列表项

1 投票
3 回答
1550 浏览
提问于 2025-04-17 08:05

我刚开始学习Python,正在尝试编写一个扫雷游戏。简单来说,我有点迷茫,不知道怎么设置我的类,让它创建一个5x5的格子,这个格子是用列表的列表来表示的。然后,我还需要在这个格子上随机放置3个地雷,并计算每个格子周围的地雷数量。

我想我可以用一个__init__方法来调用另外两个方法:一个是放置地雷,另一个是计算每个格子周围的地雷数量。

不过我对怎么设置这些方法有点迷茫,所以如果有建议的话,我会很感激!

3 个回答

0

要创建一个随机列表,最好的方法是这样做 -

import random

x = range(10)
random.shuffle(x)

这个方法会在原地随机打乱你的列表。

如果你想从列表中随机获取一个元素,可以试试 -

random.choice(x)
1

每个单元格其实就是你二维列表中的一个坐标(x, y)。所以如果我理解得没错,你只需要想出三个随机的坐标,然后把它们赋值给board[x][y]。

我可能会这样做。

x = range(5)
y = range(5)

coord1_x = x.pop(randrange(5))
coord1_y = y.pop(randrange(5))

coord2_x = x.pop(randrange(4))
coord2_y = y.pop(randrange(4))

coord3_x = x.pop(randrange(3))
coord2_y = y.pop(randrange(4))

如果你想要更多的地雷,可以把这些代码的部分放进一个循环里,把坐标放到一个列表中。不过可能还有更简洁的方法来实现这个。

我现在想不出有什么简单的方法来计算邻近的单元格。

5

这里有一段小代码,可以帮助你入门:

>>> import random
>>> cells = [['empty'] * 5 for i in range(5)]
>>> for i in range(3):
        x = random.randrange(5)
        y = random.randrange(5)
        cells[x][y] = 'mine'


>>> import pprint
>>> pprint.pprint(cells)
[['empty', 'empty', 'empty', 'empty', 'empty'],
 ['mine', 'empty', 'mine', 'empty', 'empty'],
 ['empty', 'empty', 'empty', 'empty', 'mine'],
 ['empty', 'empty', 'empty', 'empty', 'empty'],
 ['empty', 'empty', 'empty', 'empty', 'empty']]

撰写回答