随机将项目放在Python列表中

时间:2011-12-10 04:37:30

标签: python list minesweeper

我是使用Python的初学者,我一直在尝试编写扫雷游戏。基本上,我有点迷失在如何设置我的类,以便它使用列表列表创建一个5x5网格的单元格,然后随机地在这个网格上放置3个地雷,并计算每个单元格邻域中的地雷数量。

我想我会使用__init__方法来调用另外两种方法:一种用于放置地雷,另一种用于计算每个小区的邻域。

虽然有任何建议,但我对如何设置它们感到有点失落?

3 个答案:

答案 0 :(得分: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']]

答案 1 :(得分:1)

每个单元格只是2d列表中的坐标(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))

如果您想要更多地雷,您可以将这些代码行概括为循环并将坐标放入列表中。可能有一种更简洁的方法来做到这一点。

不知道一种简单的方法来计算我头顶的邻居细胞。

答案 2 :(得分:0)

要创建随机列表,最好是这样做 -

import random

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

这会随机随机播放您的列表。

或者,如果您想随机从列表中获取元素,请尝试 -

random.choice(x)