初始化扫雷器板

时间:2019-01-07 07:02:17

标签: python minesweeper

在Python 2.7中初始化扫雷器板时遇到问题。到目前为止,这是我的代码:

class Minesweeper():

def __init__(self, size, num_bombs):

    # Initialize board of zeros
    self.board = [[0]*size]*size
    self.game_over = False
    self.size = size

    self.add_bombs(num_bombs)


def add_bombs(self, num_bombs): 
    # Add bombs
    for i in range(num_bombs):
        row = randint(0, self.size-1)
        column = randint(0, self.size-1)
        self.board[row][column] = 'B'

    print self.board

由于某种原因,我的add_bombs代码正在相同地操纵板子的每个子阵列,我也不知道为什么。

即。 x = Minesweeper(5,2)的结果是:

[[0, 0, 0, 'B', 'B'], [0, 0, 0, 'B', 'B'], [0, 0, 0, 'B', 'B'], [0, 0, 0, 'B', 'B'], [0, 0, 0, 'B', 'B']]

而不是总共增加2枚炸弹。有人看到我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

将空零列表初始化为:

[[0] * size for _ in range(size)]

这将创建每个子列表的副本,而不是创建对同一列表的引用。