Это простой варнинг, он вряд ли будет являтся причиной закрытия скрипта.
Давайте по порядку разберем.
Запускаете главный файл, код доходит до этих строк.
game_over = True
running = True
while running:
time_delta = clock.tick(60)/1000.0
#Меню
if game_over:
menu()
Так как
game_over == True, сразу выполняется функция
menu. Функция
menu в бесконечном цикле ожидает нажатие escape, после чего ее выполнение заканчивается и поток возвращается в основной файл.
running = True
while running:
time_delta = clock.tick(60)/1000.0
#Меню
if game_over:
menu()
if not check_menu:
running = False
check_menu будет равен
None. Условие
not None дает нам
True и мы присваиваем
running = False. Дальше какой-то неинтересующий нас код, цикл
while доходит до конца и не начинается заново, так как
runnig уже равен
False. Так что выходим из цикла и выполняем
pygame.quit(). Конец, код отработал ровно так, как написан.
Как правило я так не делаю, но тут могу только посоветовать что нибудь изучить на тему Python и PyGame. Потому что, даже обладая некоторыми знаниями, читать подобный код не самое простое занятие. Боюсь представить как это выглядит для незнающего человека. Вы сами запутались в своих конструкциях, именах функций, переменных, самой логике приложения