我正在使用pygame和其他一些库在python中制作游戏。我将主菜单作为一个python文件,当选择一个播放器时,它启动游戏文件。如果您选择在玩游戏时返回菜单,则会再次启动菜单。然而,从新菜单我不能再开始/打开游戏文件它根本不做任何事情。 (每次打开文件后我关闭前一个文件)
例如:
菜单 - > playerSelect - > gameStartUp - >菜单 - > playerSelect - >分隔/碰撞
所以实际代码是第一个文件,即菜单名称“FlappyBirdMAIN”,“HappyBrid”是第二个游戏文件的名称。
if startGui == 2:
screen.blit(background, [0, 0])
import HappyBird
done=True
pygame.quit()
对于第二个文件“happyBird”我打开菜单连接到按下“m”键:
if event.key == K_m:
pygame.mixer.fadeout(1)
import FlappybirdMAIN
done=True
所以导入FlappyBirdMAIN然后done = True关闭“HappyBird”文件
我已经想通过制作相同文件的副本(“FlappyBirdMAIN”和“HappyBird”)然后让它们相互串联导入我可以让菜单出现然后再次下降(不止一次)但是当我将它链接回原始文件时,它会崩溃/中断,例如:
EX1:
FlappyBirdMAIN - > HappyBird - > FlappyBirdMAIN2 - > HappyBird2 - > FlappyBirdMAIN3 - > HappyBird3
EX2:
FlappyBirdMAIN - > HappyBird - > FlappyBirdMAIN2 - > HappyBird2 - > FlappyBirdMAIN3 - > HappyBird3 - > FlappyBirdMAIN
问题是使用import命令。 EXEC(开( “HappyBird.py”)。读())
使用import cuases python认为它已经打开,因为它是一个智能导入系统。 (或类似的东西)。
Repeating Import Module - Python / Pygame
^我想出来的链接。
感谢。
答案 0 :(得分:0)
使用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()