Поэтому я делаю простую игру с tic tac toe, и у меня возникают трудности с попыткой выяснить, как сделать так, чтобы каждый игрок двигался поочередно. Я попытался использовать два цикла while с логическим значением, которое должно меняться после выполнения каждого цикла. Я не уверен, почему, но это не работает, только в результате одна итерация каждого цикла while, а затем она останавливается. Ниже мой код. Может ли кто-нибудь помочь рассказать мне, как исправить это, чтобы они чередовались, и если есть более простой способ сделать это?
moves = 0
first_player_move = True
while first_player_move is True:
print("It the first player move")
if ask_for_move("O") is True:
if 3 <= moves <= 5:
if check_if_won("O") is True:
print("The first player won. Congrats! Game over")
return
elif moves ==5:
print("The game ended in a tie.")
return
else:
first_player_move = False
else:
moves +=1
first_player_move = False
elif ask_for_move("O") is False:
continue
while first_player_move is False:
print("It the second player move")
if ask_for_move("X") is True:
if check_if_won("X") is True:
print("The second player won. Congrats! Game over")
return
else:
first_player_move = True
elif ask_for_move("X") is False:
continue
Для контекста ask_for_move() - это функция, которая принимает символ игрока в качестве аргумента и возвращает значение True, если они делают допустимый ход и False, если они этого не делают.
Попробуйте поместить оба цикла в другой цикл, как это
while True:
while first_player_move is True:
# Your stuff here
while first_player_move is False:
# More of your stuff
Код последователен, поэтому программа будет выполняться первой в while
цикл, то выход, выполнить второй во while
цикла, выход, а затем, так как нет другого кода он покидает всю программу. Это заставит его переоценить операторы while
неопределенный срок