2024-03-29 10:24:27 发布
网友
现在更新了它,所以每个旧的“函数”都被移到了我的类下面。现在看来我唯一的问题之一就是弄清楚所有这些drawBoard() takes 1 positional argument but 2 were given
drawBoard() takes 1 positional argument but 2 were given
这只是我当前课程的开始,只是为了向你展示我目前正在处理的问题
正如我在评论中所说,我认为您应该在类BoardHandler的方法中生成这两个函数。这将为您提供更好的encapsulation并且非常容易实现,以下是方法:
BoardHandler
class BoardHandler: def __init__ (self, size, board): self.size = size self.board = board def ask_size(self): try: self.size = int(input("Which size would you want?")) except ValueError: print("Wrong! try again") ask_size() def getNewBoard(self): board=[] for i in range(self.size): board.append([' ']* self.size) self.board = board def resetBoard(self): for x in range(self.size): for y in range(self.size): self.board[x][y] = ' ' n=int(size/2-1) self.board[n][n] = 'B' self.board[n+1][n] = 'W' self.board[n][n+1] = 'W' self.board[n+1][n+1] = 'B' def drawBoard(self): HLINE = ' ' for y in range(self.size): print(y+1, end=' ') for x in range(Q): print('| %s' % (self.board[x][y]), end=' ') print('|') print(HLINE)
如果出于某种原因想将它们保留在类之外,则需要修改它们,以接受BoardHandler类实例作为参数:
这假设您的程序创建一个BoardHandler类实例,并对该对象执行所有操作。在
更新依据:
Every run of the program will give the option which size the board should be ... every board in the code shall be the same size
我们将size作为一个类变量,并且只有在尚未设置大小时才提示输入大小。所有后续的电路板创建将使用与第一块板相同的尺寸:
size
class BoardHandler: size = None def __init__(self): self.board = None if BoardHandler.size is None: self.ask_size() self.getNewBoard() def ask_size(self): # no self use, method could be a function while True: try: BoardHandler.size = int(input("Which size would you want? ")) break except ValueError: print("Wrong! try again") def getNewBoard(self): self.board = [] for _ in range(BoardHandler.size): self.board.append([' '] * BoardHandler.size) def resetBoard(self): for x in range(BoardHandler.size): for y in range(BoardHandler.size): self.board[x][y] = ' ' n = int(BoardHandler.size / 2 - 1) self.board[n][n] = 'B' self.board[n + 1][n] = 'W' self.board[n][n + 1] = 'W' self.board[n + 1][n + 1] = 'B' def drawBoard(self): HLINE = ' ' + '-' * (4 * BoardHandler.size) + '-' print(HLINE) for y in range(BoardHandler.size): print("{:2d}".format(y + 1), end=' ') for x in range(BoardHandler.size): print('| {}'.format(self.board[x][y]), end=' ') print('|') print(HLINE) handler = BoardHandler() handler.resetBoard() handler.board[0][0] = 'W' handler.drawBoard() print(BoardHandler.size) handler2 = BoardHandler() handler2.drawBoard() # empty board but same size as first
正如我在评论中所说,我认为您应该在类
BoardHandler
的方法中生成这两个函数。这将为您提供更好的encapsulation并且非常容易实现,以下是方法:如果出于某种原因想将它们保留在类之外,则需要修改它们,以接受
^{pr2}$BoardHandler
类实例作为参数:这假设您的程序创建一个
BoardHandler
类实例,并对该对象执行所有操作。在更新依据:
我们将
size
作为一个类变量,并且只有在尚未设置大小时才提示输入大小。所有后续的电路板创建将使用与第一块板相同的尺寸:相关问题 更多 >
编程相关推荐