我已经构建了一个井字游戏,但有一个错误,无法验证玩家是否赢了,然后脱离循环


def DrawField(field):
for row in range(5):  
if row%2 == 0:
practicalrow = int(row/2)
for column in range(5): 
if column%2 == 0:
practicalcolumn = int(column/2)
if column !=4:
print(field[practicalcolumn][practicalrow],end="")
else:
print(field[practicalcolumn][practicalrow])
else:
print("|",end="")
else:
print("-----")
Player = 1
CurrentField = [[" ", " ", " "],[" ", " ", " "],[" ", " ", " "]]
print(CurrentField)
DrawField(CurrentField)
while(True):
print("Players Turn:", Player)
MoveRow = int(input("PLease enter the rown"))
MoveCol = int(input("PLeasae enter the columnn"))
if Player == 1:
if CurrentField[MoveCol][MoveRow] == " ":
CurrentField[MoveCol][MoveRow] = "X"
#make move for player 1
Player = 2
else:
continue
else:
if CurrentField[MoveCol][MoveRow] == " ":
CurrentField[MoveCol][MoveRow] = "O"
#make move for player 2
Player = 1
else:
continue
DrawField(CurrentField)

所以,这是Gthe Tictactoe游戏的代码,我有一个错误,玩家可以重写彼此的动作。 我最终修复了这个问题,但另一个错误是,一旦玩家获胜,循环就不会中断。 此外,如果有办法在玩家获胜后要求重播 一些琐碎的信息:currentField列表的每个子列表中的空格分别引用游戏板的每一列。

我不知道你如何验证一方是否获胜,如果你做到了,我会假设你会,因为这不是你问题的主题。

对于中断while循环的问题,您可以使用break,例如:

while True:
if has_won == true:
break
####other code

if 语句将是 while 循环中的第一次检查,它在开始时很重要,因为如果它在最后,就会发生回合,并且检查上一回合的游戏是否结束只会发生。

break可用于whilefor循环,因为它只是在循环之外中断

最新更新