我是使用 Python 的初学者,我一直在尝试编写扫雷游戏。基本上,我对如何设置我的班级有点迷失,以便它使用列表列表创建一个 5x5 的单元格网格,然后在该网格上随机放置 3 个地雷,并计算每个单元格附近的地雷数量。
我想我会使用一种__init__
调用其他两种方法的方法:一种用于放置地雷,另一种用于计算每个单元的邻域。
我对如何设置这些有点迷茫,所以有什么建议吗?
我是使用 Python 的初学者,我一直在尝试编写扫雷游戏。基本上,我对如何设置我的班级有点迷失,以便它使用列表列表创建一个 5x5 的单元格网格,然后在该网格上随机放置 3 个地雷,并计算每个单元格附近的地雷数量。
我想我会使用一种__init__
调用其他两种方法的方法:一种用于放置地雷,另一种用于计算每个单元的邻域。
我对如何设置这些有点迷茫,所以有什么建议吗?
这里有一些代码可以帮助您入门:
>>> 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']]
每个单元格只是二维列表中的一个坐标 (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))
如果您想要更多地雷,您可以将这些代码行概括为一个循环并将坐标放入一个列表中。不过,可能有更简洁的方法来做到这一点。
不知道有一种简单的方法来计算我头顶上的相邻细胞。
要创建一个随机列表,最好这样做 -
import random
x = range(10)
random.shuffle(x)
这会随机打乱您的列表。
或者,如果您想从列表中随机获取一个元素,请尝试 -
random.choice(x)