我正在使用pygame和其他一些库用python制作游戏。 我将主菜单作为一个python文件,当选择播放器时,它会启动游戏文件。 如果您在玩游戏时选择返回菜单,它会再次启动菜单。但是,从新菜单中我无法再启动/打开游戏文件,它根本不做任何事情。 (每次打开文件后,我都会关闭前一个文件)
例如:
菜单-->玩家选择-->游戏启动-->菜单-->玩家选择-->中断/崩溃。
所以实际代码这将是第一个文件,即菜单名称"FlappyBirdMAIN","HappyBrid"是第二个游戏文件的名称。
if startGui == 2:
screen.blit(background, [0, 0])
import HappyBird
done=True
pygame.quit()
对于第二个文件"快乐鸟",我让它打开菜单,然后按"m"键连接:
if event.key == K_m:
pygame.mixer.fadeout(1)
import FlappybirdMAIN
done=True
所以它导入 FlappyBirdMAIN 然后 done=True 关闭"快乐鸟"文件
我已经发现,通过复制相同的文件("FlappyBirdMAIN"和"HappyBird"),然后使它们在系列中相互导入,我可以让菜单出现然后再次关闭(不止一次),但是当我将其链接回原始文件时,它会崩溃/中断,例如:
例1:
FlappyBirdMAIN-->HappyBird-->FlappyBirdMAIN2-->HappyBird2-->FlappyBirdMAIN3-->HappyBird3
例2:
FlappyBirdMAIN-->HappyBird-->FlappyBirdMAIN2-->HappyBird2-->FlappyBirdMAIN3-->HappyBird3-->FlappyBirdMAIN
问题出在使用导入命令。exec(open("HappyBird.py").read())
使用导入库斯Python认为它已经打开,因为它是一个智能导入系统。(或类似的东西)。
重复导入模块 - Python/Pygame
^链接到我是如何弄清楚的。
谢谢。
使用import
开始菜单不是好的解决方案。
如果您有menu.py
print("hello world")
它仅在您第一次导入时有效game.py
import menu
但是你可以把它放在函数中
def run_it():
print("hello world")
然后你可以使用很多次
import menu
menu.run_it()
# and again
menu.run_it()
# and again
menu.run_it()
如果您使用类
class Menu():
def update():
pass
def draw():
pass
def event_handler():
pass
def mainloop():
print("hello world")
然后你也可以运行很多次
menu = Menu()
menu.mainloop()
# and again
menu.mainloop()
# and again
menu.mainloop()