我正在为学校设计一个游戏。到目前为止进展很顺利,所以我现在尝试在每个玩家回合后实现一个撤销选项。你知道吗
到目前为止,我有一个方法可以将状态保存到3中提到的列表中。你知道吗
def save_state(self):
copied_board = copy.copy(self.board)
self.saved_states.append(copied_board)
我测试了这个,这个似乎有效。问题出在别的地方。你知道吗
因此,我将从用户那里获得输入,如果他输入'u'而不是实际有效的游戏输入,我想做以下操作:
if input == 'u':
print('Undoing last turn!')
self.board = self.saved_states.pop()
self.player_2()
我只想把游戏的当前状态改成上一个状态,让玩家2(再次)轮到他们。你知道吗
这里有什么问题?每次轮到每个玩家时,我也在操纵棋盘上的元素。为什么我不能把整个电路板换成以前的呢?我看不出有什么区别。你知道吗
谢谢你的帮助和建议!你知道吗
这是一种疯狂的猜测:如果你的
self.board
是“一个7x7矩阵”,那么它可能是一个列表列表,所以你应该使用copy.deepcopy
来复制电路板。否则,内部的列表仍然是相同的,当您修改当前板时,您也修改了所有的“副本”。你知道吗或者,不是存储每个回合的棋盘布局,而是存储玩家执行的移动并相应地重放游戏。你知道吗
相关问题 更多 >
编程相关推荐