蟒蛇菜单游戏菜单游戏..等



我正在使用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-->Happy

Bird2-->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()

最新更新