2016-09-26 15 views
3

私は2人のレースゲームを作ろうとしていますが、event.key == pygame.K_LEFTを追加しようとするとAttributeError: 'Event' object has no attribute 'key'と表示されます。私はパイゲームとevent.keyで2人のレースゲームを作ろうとしています

私は()を追加して多くのことを試しましたが、何も修正されておらず、私はそれについての手がかりがありません。

コード:

import pygame 

pygame.init() 

display_width = 1280 
display_height = 720 

black = (0, 0, 0) 
white = (255, 255, 255) 
red = (255, 0, 0) 
green = (0, 255, 0) 
blue = (0, 0, 255) 

gameDisplay = pygame.display.set_mode((display_width, display_height)) 
pygame.display.set_caption('U-race multiplayer') 
clock = pygame.time.Clock() 

car1 = pygame.image.load('car1.png') 

def carone(xone, yone): 
    gameDisplay.blit(car1,(xone, yone)) 

xone = (display_width * 0.48) 
yone = (display_height * 0.8) 

xone_change = 0 


crashed = False 

while not crashed: 

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

     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_LEFT: 
       xone_change = -5 
     elif event.key == pygame.K_RIGHT: 
      xone_change = 5 

     if event.type == pygame.KEYUP: 
      if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: 
       xone_change = 0 

エラーメッセージ:

RESTART: C:\Users\Osamas\Desktop\U-racing multiplayer\U-racing multiplayer.py 
Traceback (most recent call last): 
    File "C:\Users\Osamas\Desktop\U-racing multiplayer\U-racing multiplayer.py", line 44, in <module> 
    elif event.key == pygame.K_RIGHT: 
AttributeError: 'Event' object has no attribute 'key' 
+1

'elif event.key == pygame.K_RIGHT:'はあなたの問題です。あなたは 'elif event.type == pygame.keydown:'を追加し、event.key == pygame.k_right'を追加するか、答えを下にしたい。 – MooingRawr

答えて

1
if event.type == pygame.KEYDOWN: 
    if event.key == pygame.K_LEFT: 
     xone_change = -5 
    elif event.key == pygame.K_RIGHT: #indented to be part of the keydown events 
     xone_change = 5 

あなたはこれをしたいです。あなたの押し込みは間違っていた。

あなたはあなたがそれについて考えれば意味が分からないあなたのイベントタイプでチェックしています:elif event.key == pygame.K_RIGHT:

1

エラーが発生する理由は、イベントによって属性が異なるためです。公式pygame docsでどのイベントがどの属性を持つかを調べることができます。

はのは、イベントの2種類の例を見てみましょう:

  1. イベントタイプをQUIT属性はありません。
  2. KEYDOWNイベントタイプ属性ユニコードキーMODを持っています。

これは、我々は、イベントがタイプKEYDOWN(またはKEYUP)であることを確認してください作ったまで、私たちはイベントにキー属性を確認することができないことを意味します。

あなたが持っているあなたのコードで

for event in pygame.event.get(): 
    if event.type == pygame.KEYDOWN: 
     if event.key == pygame.K_LEFT: 
      xone_change = -5 
    elif event.key == pygame.K_RIGHT: 
     xone_change = 5 

イベントタイプがKEYDOWNない場合、あなたはイベントの型である場合、属性のエラーが発生しますイベントのキー属性、でチェックしていますQUIT,などのイベントまたはKEYDOWNまたはKEYUP以外のイベントが含まれている可能性があります。

これを修正するには、MooingRawrが答えて、最初のifステートメントの最後の2行をインデントしたことを確認します。ちょうど私がなぜそれが間違っているのか答えを与えるだろうと思った。

関連する問題