如果语句只循环一次

时间:2013-10-09 18:49:44

标签: python if-statement pygame keypress

嗨,我在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 

好吧现在说如果我在菜单中并按下空间开始(它完美地工作)它进入游戏模块然后开始游戏,然后如果我按下逃脱如果我已经手动打开游戏模块(不是通过按空间),它也很完美但是如果我按下空格键然后按下逃生返回菜单就没有任何反应,所以只有通过打开游戏模块本身直接打开它才有效。此外,工作按键只能工作一次,所以如果我从菜单中按空格然后再逃避然后再次空间它就会停留在菜单上,那么我将如何使这些“if”循环无限

1 个答案:

答案 0 :(得分:1)

我认为你混淆了import声明的目的。 import旨在“加载”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...'

要多次进行打印,您可以多次从main.py调用run()函数...

import game

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

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