2016-05-09 9 views
1

私はPygameとPythonを使ってゲームを作っています.2つのキーを同時に押してブロックを移動したいと思います。私はそれをどうやって行うことができますか?私は単一のキーを使用してブロックを移動することができます..しかし、一緒に2つのキーのために動作しません。Pygameを使って1つのイベントに対して2つのキーを同時に押すことはできますか?

私は一緒に私は「右キー」と「1」を押してブロックは温家宝を移動したい

与えられたコードは、効率的に、私が試した、単一のキー

if event.type==KEYDOWN: 
     if event.key==K_RIGHT: 
      move_fullcube=left 

を使用して移動する作品"と"を使用しても、それでも動作しません。

if event.type==KEYDOWN: 
      if event.key==K_RIGHT and event.key==K_1: 
       move_fullcube=left 

答えて

1

最も簡単な方法は​​です。これは、次の例のように使用できるキーのリストを返します。

keys = pygame.keys.get_pressed() 

if keys[pygame.K_RIGHT] and keys[pygame.K_LEFT]: 
    move_fullcube = left 
+0

pygayme.key.get_pressed()は私をしばらく固定してくれましたが、本当に役に立ちました。 – shinite

0

pygameでキーボードイベント処理を行うには2通りの方法があります。最初の方法はあなたがやっていることです。そこでは、すべてのイベントのリストを取得し、そのリストをループします。あなたのアプローチの問題は、一度に1つのイベントしか見ることができないため、event.keyは、単一のキーであるため、K_RIGHTK_1とは決して等しくなりません。両方のイベントになりますが、一度に1つしか見ることはできません。このようにしたい場合は、2つの変数right_pressedone_pressedを設定する必要があります。このようなもの

right_pressed = False 
one_pressed = False 
for event in pygame.event.get(): 
    if event.type==KEYDOWN: 
     if event.key==K_RIGHT: 
      right_pressed = True 
     if event.key==K_1: 
      right_pressed = True 

これらの両方が真であるかどうかを確認します。

他の簡単な方法は、pygame.keys.get_pressed()を使用することです。これは、個々のキーが現時点でダウンしているかどうかを確認するのにはるかに便利です。

+0

ありがとう、本当に役に立ちました。 – shinite

関連する問題