2017-07-08 64 views
1

我想爲我的角色移動時創建一個程序。這裏是我的代碼Python事件沒有關鍵屬性

while True: 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 
     elif event.type == KEYDOWN: 
      if(event.key == K_RIGHT): 
      playerPos[0] +=1 
    if (event.key == K_RIGHT) and playerPos[0] < MAPWIDTH -1: 
     playerPos[0] =+ 1 

這裏是錯誤

Traceback (most recent call last): 
    File "H:\python things\firstgame.py", line 90, in <module> 
if (event.key == K_RIGHT) and playerPos[0] < MAPWIDTH -1: 
AttributeError: 'Event' object has no attribute 'key' 
+0

您預期會發生什麼?更多地解釋你的代碼應該做什麼,這樣答案給出的建議將有助於你的最終目標。 –

+0

非常抱歉,這是我的移動代碼,所以在遊戲中,我按下鍵盤上的右箭頭,角色向右移動。如果他是在地圖的邊緣,它不會讓人物向右移動了@Davy中號 –

+0

你也可以或許結合你兩個'if'語句組合在一起,比如'如果(event.type == KEYDOWN)和(事件.key == K_RIGHT):' –

回答

0

我認爲這個問題是if (event.key == K_RIGHT) and playerPos[0] < MAPWIDTH -1: 是for循環之外因此事件沒有一個關鍵屬性。

forloop中的事件有一個關鍵屬性,因爲pygame.event.get():在forloop內部移動該行並且應該解決您的問題。

while True: 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 
     elif event.type == KEYDOWN: 
      if(event.key == K_RIGHT): 
      playerPos[0] +=1 
     elif (event.key == K_RIGHT) and playerPos[0] < MAPWIDTH -1: 
      playerPos[0] =+ 1 

我也建議你把線87和88成一個像這樣的 elif(event.type == KEYDOWN) and (event.key == K_RIGHT):

我希望這有助於。

1

如果有人遇到這個帖子,並有同樣的問題,我修復了我的錯誤,並以此結束。添加評論以幫助他人瞭解

while True: 
    #get all the user events 
    for event in pygame.event.get(): 

     #if user wants to quit 
     if event.type == pygame.locals.QUIT: 
      #and the game close the window 
      pygame.quit() 
      sys.exit() 

     #if a key is pressed 
     elif event.type == pygame.locals.KEYDOWN: 
      #if right arrow is pressed 
      if event.key == K_RIGHT and playerPos[0] < MAPWIDTH - 1: 
       #change player's x postion 
       playerPos[0] +=1 
      if event.key == K_LEFT and playerPos[0] > 0: 
       #change player x position 
       playerPos[0] -=1 
      if event.key == K_UP and playerPos[0] > 0: 
       #change players x position 
       playerPos[1] -=1 
      if event.key == K_DOWN and playerPos[1] < MAPHEIGHT -1: 
       #change player x position 
       playerPos[1] += 1 
+1

for循環之後的代碼應該縮進一級。縮進在Python中很重要,所以確保它是正確的。 –