как имитировать ходы между игроками, используя циклы while в Python

1

Поэтому я делаю простую игру с 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-loop
tic-tac-toe

1 ответ

1
Лучший ответ

Попробуйте поместить оба цикла в другой цикл, как это

while True:
   while first_player_move is True:
       # Your stuff here
   while first_player_move is False:
       # More of your stuff

Код последователен, поэтому программа будет выполняться первой в while цикл, то выход, выполнить второй во while цикла, выход, а затем, так как нет другого кода он покидает всю программу. Это заставит его переоценить операторы while неопределенный срок

Ещё вопросы

Сообщество Overcoder
Наверх
Меню