0

嗨,我在 pygame 中的 if 语句只执行一次,然后在执行它们后它们不再起作用......这是我的一些菜单代码(简单的按键):

    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_SPACE:
            import game
        if event.key == pygame.K_i:
            import Instructions
        if event.key == pygame.K_c:
            import controls

然后是我的一些主要游戏代码(再次按键):

if event.key == pygame.K_ESCAPE:
                import menu 

好的,现在说如果我在菜单中并按空格键启动(它运行良好)它会进入游戏模块然后启动游戏,然后如果我手动打开游戏模块(而不是按空格键)按 Escape ,它也可以完美运行,但是如果我通过按空格键然后按退出键返回菜单来运行游戏,则没有任何反应,所以它只有在我通过打开游戏模块本身直接打开它时才有效。此外,工作按键只能工作一次,而且只有一次,所以如果我从菜单中按空格,然后退出,然后再次空格,它只会停留在菜单上,那么我将如何让这些“if”循环无限

4

1 回答 1

1

我认为你混淆了import声明的目的。Animport旨在“加载”python 脚本。您不应该使用它来运行另一个 python 文件中的所有代码。

例如,假设您的 game.py 文件如下所示:

a = 'Test'
print 'Running...'

然后,您的 main.py 文件如下所示:

import game
import game
import game

当您运行 main.py 时,第一个import发生。这会导致game模块被加载。这意味着脚本已运行,并且在模块game.py中定义的所有变量/函数/等都在那里定义。game

想想你是如何使用 pygame 的。你用了一条import pygame线。这里的目标不是“运行”一个 pygame 脚本,而是让您自己访问pygame模块中的内容。

你想要做的是在你的 game.py 文件中创建一个函数:

def run():
    print 'Running...'

要使打印多次发生,您可以多次调用run()main.py 中的函数...

import game

game.run()
game.run()
game.run()

这将导致您在文件(也称为模块)的run()函数中定义的代码运行多次。game.pygame

于 2013-10-09T19:13:18.550 回答