2016-06-28 2 views
0

По какой-то причине я не могу выйти из этого цикла, когда я перехожу к intro = false, может ли кто-нибудь помочь в том, как выйти из этого оператора if. Это мой экран меню, и как только я нажимаю «новую игру», я хочу, чтобы он вышел из функции 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 находится внутри функции, когда вы создаете переменную внутри функции, s не связано ни с чем вне функции.

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

Этот код печатает:

True 

intro переменная внутри myfunction создается как совершенно отдельной переменной из одного снаружи.

Похоже, что у вас может быть и другая отдельная переменная intro внутри функции game_intro.

Вы можете обойти эту проблему, используя global ключевое слово, но вы могли бы быть лучше попытаться найти другой способ структурирования кода (global считается плохой практикой.)

Смежные вопросы