将computerBoard = self.getComputerBoard(self.newBoard)
添加到我的def computerMove
中不起作用。它只告诉我:
computerBoard[x][y] = self.board[x][y]
TypeError:'NoneType'对象不可订阅
这可能与我在def getComputerBoard
中定义的计算机板有关,但我不明白为什么......
class BoardHandler:
def __init__ (self):
self.board = None
self.size = self.askSize()
self.newBoard()
def newBoard(self):
self.board = []
for i in range(self.size):
self.board.append([' '] * self.size)
答案 0 :(得分:1)
newBoard
没有返回新主板,只是初始化self.board
。所以
computerBoard = self.newBoard()
将computerBoard
设置为None
,并清除self.board
中的内容。
您应该更改newBoard
,以便返回主板而不是更新self
。
def newBoard(self):
board = []
for i in range(self.size):
board.append([' '] * self.size)
return board
或更简单:
def newBoar(self):
return [[' '] * self.size for i in range(self.size)]
然后更改__init__
方法以这种方式使用它:
def __init__(self):
self.size = self.askSize()
self.board = self.newBoard()