在Python语言中,您会使用什么数据结构来表示MineSweeper网格的内部状态?
每个x,y位置将保存一个数值,该数值表示其当前单元格状态(未探索,我的,标志,?)。
我应该使用嵌套列表吗?这似乎是最接近二维数组的东西,也是我可能会在任何其他语言中使用的(即二维数组)。
我没有使用Python的经验,所以有人能给我一个建议吗?
发布于 2009-11-27 04:26:28
您可以使用一个二维数组,为每个字段的状态保存对象:
class FieldState(object):
def __init__(self):
self.unexplored = True
self.mine = Random()
self.flag = Random()
...
for x in range(12):
for y in range(24):
list[x][y] = FieldState()发布于 2009-11-27 06:14:50
为了混用另一个选项,您可以使用按元组索引的字典
board = {}
board[1, 2] = 9发布于 2009-11-27 04:54:41
如果您使用Board类的实例,则可以在以后随时更改内部表示。
class Board(object):
def __init__(self, width, height):
self.__width, self.__height = width, height
self._board = [[FieldState() for y in xrange(height)]
for x in xrange(width)]
@property
def width(self):
return self.__width
def mark(self, x, y):
self._board[x][y].mark()
def __getitem__(self, coord):
"""
>>> board = Board(3, 4)
>>> field = board[1,2] # 2nd column, 3rd row
"""
x, y = coord
return self._board[x][y]
...其中FieldState与@zlack's answer中的类似。
https://stackoverflow.com/questions/1805480
复制相似问题