重复导入模块 - Python / Pygame
我正在用Pygame制作一个简单的游戏,现在我正处于为每个关卡添加事件结果的阶段,比如说“死亡”。目前我设置的是,当按下回车键时,如果发生死亡,就会导入同一个模块,这样关卡就会“重启”。这段代码在第一次“重启”时运行得很好,但如果我再玩一次,它就不会第二次导入同一个关卡了。
这是我目前写的代码:
elif event.type == pygame.KEYDOWN and event.key == pygame.K_RETURN and health == 0:
import PracticeLevel
我对Python还很陌生,如果有任何错误请多包涵,任何帮助都非常感谢 :)
1 个回答
1
这是一种很奇怪的做法,但你的问题在于,Python在导入模块时是“聪明”的,它不会重复导入同一个模块。导入模块主要是为了获取模块中的函数和类,而不是像你这样单纯地执行一个Python文件。一般来说,处理这种情况的方式是创建一个 run_level(filename)
函数,这个函数会加载关卡数据并运行它。不过,如果你不想改变现在的格式,你可以直接使用 execfile("PracticeLevel.py")
,而不是使用 import
语句。
编辑
如果你使用的是Python 3(在这个版本中 execfile
不是内置函数),你可以这样写:
exec(open(filename).read())