Повторный запуск скрипта pygame/python

Используя IDLE, я написал интерактивную программу на Python с использованием pygame и сохранил ее как файл Songboard01.py. Я использую команду запуска IDLE или клавишу f5 для запуска сценария. Пользователь сначала отвечает на оболочку IDLE, которая задает вопрос запуска, после чего все ответы - это щелчки мышью на экране pygame. В дополнение к игре, экран позволяет пользователю выбирать альтернативные варианты, такие как (1) "Выйти", (2) "Инструкции", (3) "Кредиты", (4) "Решения" и (5) ". Играй еще раз ". Первые три работают нормально, и игра может без проблем работать после (2) или (3). Меня поставила в тупик "Играй снова".

Эта функция:

def new_game():
    done = True   # closes pygame while-loop
    pygame.quit()
    import Songboard01.py

запустит игру заново с вопросом о запуске в оболочке IDLE, но сработает только один раз. Если пользователь пытается получить новую игру во второй раз, сообщение об ошибке заканчивается:

Файл "/Users/anobium/Desktop/SongBoard/Songboard01.py", строка 314, в импорте new_game Songboard01.py ModuleNotFoundError: нет модуля с именем 'Songboard01.py'; Songboard01 - это не пакет

1 ответ

Программа python не может импортировать себя, и используя importфункция вызовет ошибку. Также не следует ставить ".py" в конце имени пакета. Я рекомендую поставить основной игровой цикл и поставитьbreakесли пользователь выбирает (1), (2), (3) или (4). Поставитьcontinueесли пользователь выбирает (5). Ваша игра вернется к началу, если пользователь выберет (5).

Образец кода:

#do your imports
import pygame #and all other needed modules

#Make classes or setup the game

while True:
    #Do all of the game stuff

    #Ok now make the buttons

    #if button = 1 or 2 or 3 or 4:
        break
    #else if button = 5:
        continue

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