退出If语句循环python

时间:2016-06-28 04:22:29

标签: python-3.x if-statement pygame

出于某种原因,当我更改为intro = false时,我无法退出此循环,任何人都可以帮助我如何退出此if语句。这是我的菜单屏幕,一旦我点击“新游戏”,我希望它退出game_intro功能。

这是我定义game_intro的地方:

def game_intro():
    intro = True

    if intro == True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

        window.fill(superlightgrey)
        fontvertical = pygame.font.SysFont("comicsansms", 100)    
        text = fontvertical.render("Connect 4", True, skyblue)
        word = (10, 1)
        window.blit(text,word)
        ButtonIntro("New Game", 340, 140, 200, 50, superlightgrey, superlightgrey, "Play")

这是我创建按钮功能的地方:

def ButtonIntro(msg, x, y, w, h, ic, ac, action=None):
    mouse = pygame.mouse.get_pos()
    click = pygame.mouse.get_pressed()
    if x+w > mouse[0] > x and y+h > mouse[1] > y:
        pygame.draw.rect(window, ac, (x, y, w, h))
        if click[0] == 1 and action != None:
            pygame.draw.rect(window, lightgrey, (x, y, w, h))
            if action == "Play":            
                intro = False
                ##WHAT DO I NEED HERE TO EXIT LOOP

这就是我调用函数的地方:

while intro == True:
    game_intro()
print("loopexited")

1 个答案:

答案 0 :(得分:0)

intro变量位于函数内部,当您在函数内部创建变量时,它不会连接到函数外部的任何内容。

intro = True
def myfunction():
  intro = False
myfunction()
print(intro)

此代码打印:

True

intro中的myfunction变量被创建为与外部变量完全独立的变量。

看起来您在intro函数中可能还有另一个game_intro变量。

您可以使用global关键字解决此问题,但最好不要尝试找到一种不同的方法来构建代码(global被视为不良做法。)