2017-03-15 87 views
0

python中有一個python問題。我想在用戶進行特定輸入後(在這種情況下,當向上箭頭鍵被按下時)「跳轉」到一個功能,然後在該功能中(start1),我再次調用main() 「向上箭頭鍵」再次按下我想進入的start()玩家輸入的Python函數調用

當我運行程序我得到這個:

RecursionError:最大遞歸深度超過

有什麼建議?

下面是代碼:

def main(text, func): 

    exit = False 
    while not exit: 

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

     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_UP: 
       func 

      if event.key == pygame.K_DOWN: 
       pygame.quit() 
       quit() 

    screen.fill(black) 

    text = str(text) 
    font = pygame.font.SysFont('georgia', 16) 
    message = font.render(text, True, white) 
    screen.blit(message, (screen_width/2, screen_height/2)) 

    pygame.display.flip() 
    clock.tick(30) 



def start(): 
    main("Hello, press key-up to get to start 1!", start1()) 


def start1(): 
    os.system('cls') 
    main("Good, Back to start on Key-up", start()) 



start() 

回答

0

你不及格start1start功能main但你電話他們,而不是之前主甚至被稱爲。

def start(): 
    main("Hello, press key-up to get to start 1!", start1()) 

def start1(): 
    os.system('cls') 
    main("Good, Back to start on Key-up", start()) 

start調用start1,在每個例程評估main參數時它調用startmain沒有機會被稱爲:無限乒乓遞歸首先發生。

變化:

def start(): 
    main("Hello, press key-up to get to start 1!", start1) 

def start1(): 
    os.system('cls') 
    main("Good, Back to start on Key-up", start) 

main通過func()在這樣的代碼替換func通話的功能在這裏:

if event.key == pygame.K_UP: 
    func() 
+0

哦,不錯的小幫手! –

0

而是在跳躍的思維,試着從國家角度思考。狀態機是遊戲開發的一個非常典型的工具。

您有(至少)3個狀態:「未按下」,「向上按一次」,「向上按兩次」。

將此狀態存儲在變量中,並在按鍵上進行更新。然後,當按下向上時,您可以隨時知道是否要調用start()或不。