2016-06-28 16 views
0

何らかの理由で、私はintro = falseに変更するときにこのループを終了できません。誰もこのif文を終了する方法についてお手伝いできます。これは私のメニュー画面で、 'new game'をクリックすると、game_intro関数を終了します。終了If文ループ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変数は、一つの外部から完全に独立変数として作成されています。

別のintroという別の変数がgame_intro機能内にある可能性があります。

globalが悪い習慣と考えられている。)あなたはglobalキーワードを使用して、この問題を回避することができますが、あなたのコードを構造化する別の方法を見つけようとしたほうが良いかもしれません

関連する問題