2017-03-05 3 views
0

私はこれについての答えを探してきましたが、私はそれを見つけることができませんでした。キー入力はPygameで動作しません

私はこの問題は、単純なpygameスクリプトを書くためにSublime Text 3を使用するときにキー入力に応答することができないということです。私がキー(具体的に矢印キー)を押すたびに、これはゲームウィンドウではなくエディタに登録されます。マウス入力は登録されていますが、それはさらに奇妙です。

アドバイスはありますか?

import pygame 
pygame.init() 

display_width = 800 
display_height = 600 

gameDisplay = pygame.display.set_mode((display_width, display_height)) 
pygame.display.set_caption('A bit Racey') 

black = (0, 0, 0) 
white = (255, 255, 255) 

clock = pygame.time.Clock() 
crashed = False 
carImg = pygame.image.load('racecar.png') 
x = (display_width * 0.45) 
y = (display_height * 0.8) 


def car(x, y): 
    gameDisplay.blit(carImg, (x, y)) 


x_change = 0 
car_speed = 0 

while not crashed: 
    #print(pygame.event.get_grab()) 
    #pygame.event.set_grab(1) 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      print("Hello") 
      crashed = True 
     ############################ 
     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_LEFT: 
       x_change = -5 
      elif event.key == pygame.K_RIGHT: 
       x_change = 5 
     if event.type == pygame.KEYUP: 
      if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: 
       x_change = 0 
     if event.type == pygame.MOUSEBUTTONDOWN: 
      print("hello my baby") 
     ###################### 
    ## 
    x += x_change 
    gameDisplay.fill(black) 
    car(x, y) 
    pygame.display.update() 
    pygame.display.flip() 
    clock.tick(30) 

pygame.quit() 
quit() 
+0

python2.7とpygame 1.9.3(python3.5とpygame 1.9.4.dev0の代わりに)を使用すると、私のトリックがありました。 これらのディスカッションは役に立ちます:[bitbucket.org/pygame/pygame/issues/203/](https://bitbucket.org/pygame/pygame/issues/203/window-does-not-get-focus-on-os) -x-with)とhttps://stackoverflow.com/questions/42512141/pygame-only-detects-mouse-events-does-not-detect-keydown-events?noredirect=1&lq=1 –

答えて

0
if event.type == KEYDOWN: 
    if event.key == K_LEFT: 
      x_change = -5 
    elif event.key == K_RIGHT: 
      x_change = 5 
elif event.type == KEYUP: 
    if event.key == K_LEFT or event.key == K_RIGHT: 
      x_change = 0 
elif event.type == MOUSEBUTTONDOWN: 
    print("hello my baby") 

私はあなたのコードに加えられた変更は、あなたが持った問題を解決すると思います。それがうまくいくかどうか私に教えてください。

編集:すべての私のpygameスクリプトに「from pygame.locals import *」をインポートリストに含めて、すべてのものの前にpygameと入力しないようにします。それは私のスクリプトで持っていたエラーを解決するはずです。

+0

残念ながら、それは動作しません。 "KEYDOWN"が定義されていないというエラーメッセージが表示され、直接クラッシュします。しかし、とにかく助けてくれてありがとう。 – RocketSwed

+0

これはうまくいって、Python 2.79で完璧に動作します。申し訳ありません。 – oxrock

関連する問題