2014-01-20 31 views
0

由於一些奇怪的原因(我對python/pygame有點新鮮),while循環沒有加載另一個。我擁有它,所以有兩個球員。它在一個while循環中從玩家一開始,然後一旦玩家完成,它將第二個while循環變成真,等等。但是,一旦第二個循環結束,它不會將第一個循環變爲真,只是結束程序。爲什麼不是這個while循環reitterating?

一環:

game = True 
while game: 
    for event in pygame.event.get(): 
     pygame.event.get() 

     if event.type == pygame.KEYDOWN and event.key == pygame.K_a: 
      count1 = pygame.draw.circle(window, (255, 255, 255),(200, countY - 100), 25, 0) 
      game = False 
      game2 = True 
      print("Test") 
      pygame.display.update() 

環兩(這應該打開第一循環爲真時, 「J」 推):

while game2: 
    for event in pygame.event.get(): 
     pygame.event.get() 

     if event.type == pygame.KEYDOWN and event.key == pygame.K_j: 
      count3 = pygame.draw.circle(window, (255, 255, 255),(500, countY - 100), 25, 0) 
      game2 = False 
      game = True 
      print("Test third") 
      pygame.display.update() 

回答

3

你會需要另一環以上兩個while gamewhile game2環路:

while True: 
    while game: 
     # 

    while game2: 
     # 

現在當game2結束時,最外面的while循環返回到第一個while game循環。

結束遊戲需要你跳出while True循環;您可以使用關鍵字break,在while gamewhile game2循環之外執行。

+0

謝謝你這麼多:d – user3216654

+0

是的,對不起,我沒有做到這一點早,但有一個時間限制,我可以做到這一點。再一次,謝謝。 – user3216654

1

while Python中的循環不會經常檢查其條件爲True

game while循環正如您所說的在game2循環之前執行。

while game: 
    # do stuff 

while game2: 
    # do stuff 

game2game爲True,這並不意味着while game循環將再次開始執行。一個while循環及其遞歸的主體只執行一次。 Python將繼續執行腳本的其餘部分並終止。沒有任何其他控制流程,while game循環無法再次執行。

另一種選擇是將gamegame2轉換爲函數,並在其他函數中調用它們,當它們的遊戲應該開始時。

如果game2執行應該結束一次game開始,那麼這樣的事情就夠了:

def game(): 
    while True: 
     for event in pygame.event.get(): 
      pygame.event.get() 
      if event.type == pygame.KEYDOWN and event.key == pygame.K_a: 
       count1 = pygame.draw.circle(window, (255, 255, 255),(200, countY - 100), 25, 0) 
       game2() # Begin player 2 game 
       print("Test") 
       pygame.display.update() 
       return # Stop execution of game() 

def game2(): 
    while True: 
     for event in pygame.event.get(): 
      pygame.event.get() 
      if event.type == pygame.KEYDOWN and event.key == pygame.K_j: 
       count3 = pygame.draw.circle(window, (255, 255, 255),(500, countY - 100), 25, 0) 
       game() # Begin player 1 game 
       print("Test third") 
       pygame.display.update() 
       return 
+0

這個很好,但是Martijn Pieter可能會以更加pythonic的方式做到這一點。 – KodyVanRy