2016-11-28 22 views
0

キーを押すと変数が変更される関数を作成しようとしています。これはスプライトを画面上で動かすクラスに入れられます。 whileループは、キーが離されたときから切り離されます。しかし、何も起こらない。 whileループは実行されており、エラーは発生しません。なぜこれが起こっているのか誰にも分かりますか?モジュール 'pygame.key.get_pressed()'を正しく使用しているかどうかはわかりません。pythonの 'pygame.key.get_pressed()'モジュールでキープレスが認識されない

import pygame 
from pygame.locals import * 
def move(): 
    for event in pygame.event.get(): 
      if event.type == QUIT: 
       pygame.QUIT() 
       sys.exit() 
    while True: 
     pressed = pygame.key.get_pressed() 
     if pressed[pygame.K_UP]: 
      print("something happens") 
     #runs this, but when up arrow key is pressed does nothing 
     if event.type == KEYUP: 
      False 

screen = pygame.display.set_mode((512,384)) 
move()   
pygame.display.update() 
+0

' 'あなたは' pygame.event.getを() 'を実行していない場合は動作しません)(get_pressedでそれを行う理由は、これがあります) 'を一度だけ実行します。 – furas

答えて

1

get_pressed()戻りリストに行くことができる複数のキー名については
`

def move(): 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.QUIT() 
      sys.exit() 

     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_UP: 
       print("up pressed") 

      # etc. 

     if event.type == pygame.KEYUP: 
      if event.key == pygame.K_UP: 
       print("up released") 

      # etc. 

` を行うことができますが、このリストは、によって更新されますpygame.event.get()などのイベント機能を使用するので、常にpygame.event.get()を実行する必要があります。しかし、あなたは、 `pygame.event.getを(実行 - 私たちはwhile-loop

import pygame 

pygame.init() 
screen = pygame.display.set_mode((512,384)) 

while True: 

    # get events and (somewhere in background) update list 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.quit() 
      sys.exit() 

    # get current list. 
    pressed = pygame.key.get_pressed() 
    if pressed[pygame.K_UP]: 
     print("UP") 
1

あなたは押されたキーに関する情報をpygame key docs

+0

これは異なる結果をもたらすようには見えません。まだ印刷されたステートメントはありません。しかし、私はエラーが発生しない? – Tyler

+0

whileループを削除しましたが、今すぐ動作します。ありがとうございました! – Tyler

+0

問題ありません、喜んで助けてください! –

関連する問題