2016-07-07 9 views
0

私はプログラムを作成しています。これは私の実行システムです:pygame event.key == pygame.K_dとl == 1または0

if event.type == pygame.KEYDOWN: 
    if (event.key == pygame.K_a) and (i is 2 or 0): 
     y_change = display_height/200 
     i = 1 
    elif (event.key == pygame.K_d) and (i is 1 or 0): 
     y_change = display_height/200 
     i = 2 

これは、AまたはDを2回押して結果を得ることができないようになっています。しかしそれの代わりに、それは全く何もしません。

編集:私は解決deepspaceのソリューションを使用して(私は私に2または0でスイッチ[2,0]私は1または0)であるために(同じ)私はあなたがAを交互ていると思う問題

+0

「i」は他の場所で定義していますか? – Ares

+2

それが問題の根本的な原因であるかどうかは分かりませんが、もう1つの問題は 'iが2または0'で、' iが1または0'です。例えば、 'i == 0'ならば、' iは1または0です 'はあなたが期待する' True'の代わりに '0'と評価され' False'に評価されます。これらをそれぞれ[0、2]のiと[0、1] iのiに変更する必要があります。 – DeepSpace

+0

@DeepSpaceうん、それはそのように働いた。どうも –

答えて

0

とD、そう?これはどう?

expected_key = pygame.K_a # somewhere in your initialization code 

... other code ... 

if event.type == pygame.KEYDOWN: 
    if (event.key == pygame.K_a) and (event.key == expected_key): 
     y_change = display_height/200 
     expected_key = pygame.K_d 
    elif (event.key == pygame.K_d) and (event.key == expected_key): 
     y_change = display_height/200 
     expected_key = pygame.K_a 

あるいは、複数のキーのために、

expected_keys = [pygame.K_a, pygame.K_d] # somewhere in your initialization code 
next_keys = {pygame.K_a: [pygame.K_d], pygame.K_d: [pygame.K_a]} 
    # after an A, you want a D, and vice versa 

... other code ... 

if (event.type == pygame.KEYDOWN) and (event.key in expected_keys): 
    y_change = display_height/200 
    expected_keys = next_keys[event.key] 

expected_keysは、あなたが今処理するために喜んでいる1つ以上のキーである、とnext_keysは、特定のキーが押された後、あなたが受け入れるだろうかを表示します。

関連する問題