Ну, во-первых, again
не определяется, когда вы тестируете его внизу.
Во-вторых, эта строка:
if input("Play again? (type y or n)") != "y" or "Y":
Не будет делать то, что вы думаете, что он делает. Он не проверяет, равен ли вход «y» или «Y». Скорее, он проверяет, равен ли ввод «y», а если нет, то оценивает «Y», что является правдой. Вы, вероятно, хотите что-то вроде этого:
while True:
print("What game would you like to play?")
print("")
print("(please only type in a number)")
Ghoice = int(input("We have: \n 1. Rock Paper Scissors \n 2. Hangman \n 3. Guess the number \n 4. Two player Tic Tac Toe"))
if Ghoice == 1:
import ROCK_PAPER_SCISSORS
while True:
ROCK_PAPER_SCISSORS.RPS
if input("Play again? (type y or n)") not in ["y", "Y"]:
break
# Code for other choices
if input("Do you want to play another game? (type y or n)") in ["n", "N"]:
break
Теперь вы полагаетесь на то, что игровой код запускается во время загрузки модуля, но это произойдет только один раз, независимо от того, сколько раз выполняется оператор import
. Чтобы это исправить, вам нужно заменить последнюю строку кода игры на
if __name__ == "__main__":
RPS()
Это гарантирует, что при загрузке модуля ничего не запускается автоматически, но вы сможете запускать игру как отдельную программу, если хотите. Затем вы захотите заменить
...
while True:
ROCK_PAPER_SCISSORS.RPS
...
с
...
while True:
ROCK_PAPER_SCISSORS.RPS()
...
для фактического запуска игрового кода на каждой итерации цикла while.