Выход из скрипта python на терминал после того, как скрипт был восстановлен

На этой неделе я изучал python, который начался с урока игры со змеями. Затем я добавил функции в игру, чтобы сделать ее потрясающей. Одна функция, которую я добавил, - это возможность перезапустить игру после смерти змеи. После смерти появляется экран, который предлагает пользователю нажать y или n, чтобы перезапустить игру. Нажатие y всегда перезапускает игру, что меня очень порадовало. Нажатие n завершает работу сценария обратно в терминал, но только в том случае, если в игру играют только один раз. Если в игру играют дважды, то выбирается n, экран становится черным, и все не отвечает. После смерти змеи вызывается функция. Есть и другие кусочки, но я считаю, что именно здесь возникает проблема:

while True:
    for evt in pygame.event.get():
        if evt.key == ord('y')
            restart = "y"
            break
        elif evt.key == ord('n'):
            restart = "noty"
            break
if restart == 'y'
    os.execl(sys.executable, sys.executable, × sys.argv)
else:
    pygame.quit()
    sys.exit()
    os.exit()

заранее спасибо

1 ответ

Вы можете просто выйти из цикла.

while True:
    for evt in pygame.event.get():
        if evt.key == ord('y')
            restart = "y"
            break
        elif evt.key == ord('n'):
            pygame.quit() # just quit here 
            sys.exit()
if restart == 'y':
    os.execl(sys.executable, sys.executable,sys.argv)

Там же нет os.exit() это os._exit() который я не думаю, будет казнен после sys.exit()

Из документов:

Примечание Стандартный способ выхода sys.exit(n). _exit() обычно должен использоваться только в дочернем процессе после fork().

Другие вопросы по тегам