繁体   English   中英

在Python中将项目随机放置在列表列表中

[英]Randomly placing items in a list of lists in Python

我是使用Python的初学者,并且一直在尝试编写Minesweeper游戏。 基本上,我对如何设置班级有点迷茫,以便使用列表列表创建一个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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM