这是一个使用OOP的井字游戏的开始。我在更新类的实例变量时遇到了麻烦(如果我的术语正确的话)。在遍历while循环时,我没有存储条目。在
我已经阅读了文档并对OOP有一点经验,我也尝试过一些其他的方法,但是我不能判断我的前提是错误的,我需要往另一个方向发展,或者我离解决方案只有一线之遥。(希望格式正确!)在
class Board:
def __init__(self, square1=' ', square2=' ', square3=' ', square4=' ', square5=' ', square6=' ', square7=' ', square8=' ', square9=' '):
self.square1 = square1
self.square2 = square2
self.square3 = square3
self.square4 = square4
self.square5 = square5
self.square6 = square6
self.square7 = square7
self.square8 = square8
self.square9 = square9
self.grid = '\nSQUARES ARE 0-8, TOP LEFT TO BOTTOM RIGHT, TRAVEL HORIZONTALLY\n | | \n '+square1+' | '+square2+' | '+square3+' \n___|___|___\n | | \n '+square4+' | '+square5+' | '+square6+' \n___|___|___\n | | \n '+square7+' | '+square8+' | '+square9+' \n | | '
game=Board()
print(game.grid)
while True:
entry = input('Please enter a number\n')
if entry == '0':
update = Board(square1='X')
elif entry == '1':
update = Board(square2='X')
elif entry == '2':
update = Board(square3='X')
elif entry == '3':
update = Board(square4='X')
elif entry == '4':
update = Board(square5='X')
elif entry == '5':
update = Board(square6='X')
elif entry == '6':
update = Board(square7='X')
elif entry == '7':
update = Board(square8='X')
elif entry == '8':
update = Board(square9='X')
print(update.grid)
以下是我认为从当前代码到工作示例的最短方法。在
这绝对不是我推荐从头开始编写这段代码的方式—其他答案展示了如何使用Python列表和方法/函数来干净地编写代码。在
不过,看看我所做的改变,并与你原来的版本进行比较,可能会很有用。我认为您在如何使用类方面遇到了困难(在
update = Board(square2='X')
这样的地方)。在您可以尝试以下方法:
OOP代表面向对象编程。在本例中,您的对象是
Board
。class
与您用于创建其他板的模板类似,使用:从那时起,您必须使用您的
new_board
,这是一个Board
的实例。我这里的意思是,在你的while
循环中,当你做update = Board...
而不是修改之前的一个时,你会创建新的电路板。在为了做到这一点,你应该把方法添加到你的板上。这些功能可以修改电路板。此外,您应该使用其他类型的数据结构(如列表)在类中存储数据。例如:
^{pr2}$我希望你能感觉到。在
相关问题 更多 >
编程相关推荐