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
可用于while
和for
循环,因为它只是在循环之外中断