2016-06-28 249 views
0

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

这是我定义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") 
+0

你可以简单地做到这一点'回报'声明。 –

回答

0

intro变量在函数内部,当你在函数内部创建一个变量时,没有连接到功能外的任何东西。

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

此代码打印:

True 

myfunction的内部的intro变量作为来自外部的一个完全独立的变量来创建。

看起来你可能在game_intro函数中也有另一个单独的intro变量。

可以解决这个得到使用global关键字,但你可能会更好试图找到一种不同的方式来组织你的代码(global被认为是不好的做法。)