在python中制作跳棋板

时间:2016-04-18 17:16:11

标签: python

我正在尝试为python中的跳棋游戏制作一个8x8的2D数组。我该怎么做呢? 这是我目前的代码:

class Board():    
    board = [[]]

    def __init__(self,width,height):
        self.width = width
        self.height = height

    def __repr__(self):
        print(self.board)

    def setup(self):
        for y in range(self.height):
            for x in range(self.width):
                self.board[y].append(0)

board = Board(8,8)
board.setup()
print(board.board)

3 个答案:

答案 0 :(得分:3)

board = [[0]*8 for i in range(8)] # This makes you 8x8 list
>>>[[0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0]]

def setup(self):
    board = [[0]*self.height for i in range(self.width)]

您只需使用实例属性更改8(self.heigth,self.width)

答案 1 :(得分:0)

您的代码

self.board[y].append(0)

self.board只有一个元素,因此对于y>0,这将失败。您需要使self.board不包含一个空列表,但self.height空列表才能生效。

我没有详细说明,因为正如一位评论者提到的,这听起来很像家庭作业,在这种情况下,每个人都不能填写所有细节。

答案 2 :(得分:0)

嵌套列表有时很难处理。如果您不完全需要 2D列表,我建议使用dict。使用dict创建2D数组很容易。您可以使用(行,列)元组作为索引。

例如:

board = {}
for row in range(8):
    for column in range(8):
        board[(row, column)] = 0