Я пытаюсь написать игру на линкоре.Я прошел курс по codecademy и продолжил игру, которую написал там, но я разделил вещи на их собственные модули и создал классы.Я все еще очень плохо знаком с питоном и программированием в целом.Я уже проходил курс CS, и сейчас я работаю через CS50x для EDX
. В моей программе я объявляю переменную play_again и устанавливаю ее в 0. Затем я использую оператор while для запуска своей игры сwhile play_again != 2:
Это, по сути, мое «Главное меню» для игры.
play_again = 0
while play_again != 2:
if play_again == 0:
print("Would you like to play a game of Battleship?")
print("Enter 1 to play")
print("Enter 2 to exit")
play_again = int(input("Make a selection: "))
if play_again == 1:
В этом блоке я сталкиваюсь с проблемами, он вложен в блок if
выше после некоторыхдругой код, который просто создает игровое поле и корабль для поиска.
for turn in range(4):
print("Turn: ", turn + 1)
guess_row = int(input("Guess Row: ")) - 1 # the "-1"s here
compensate for our count starting at 0
guess_col = int(input("Guess Col: ")) - 1
#checks to see if the users guess is correct
if guess_row == ship_row and guess_col == ship_col:
print("Congratulations! You sank my battleship!")
play_again == 0
break
У меня действительно есть проблемы с этим оператором разрыва.Я использую Pycharm, и в отладчике переменная play_again
никогда не устанавливается на 0. Она остается 1 в «Главном меню», и я не могу понять, почему она не меняется.Я чувствую что-то супер простое.Я чувствую, что это как-то связано с тем, как работает область видимости в python, но переменная создается в той же функции, в которой она используется, поэтому я не уверен, почему область видимости будет отличаться между ними.Меняется ли область действия, когда вы входите в цикл?
Спасибо за любую помощь!