重复导入模块 - Python / Pygame

0 投票
1 回答
1475 浏览
提问于 2025-04-18 05:20

我正在用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())

撰写回答