6

さて、基本的な宇宙船ゲームを作っています。

ビットマップをスクランブルするため、回転を機能させることができませんが、それは別の質問です.GIFを使用する必要がありますか? 他のファイルタイプの提案はありますか?

ここで実際のポイントに戻ります。

k = pygame.key.get_pressed()

ええ、自明です。押された各キーを返すため、これは機能しません。

だから、他の場所:

d = k[pygame.K_d]

そして別の行:

print d

そして別:

if d:

したがって、キーボードの各キーが押されるたびに k が返されます。

d が押されたかどうかに関係なく、d は無期限に 0 を返します。

d は常に 0 です。

したがって、d に関する記述は決して真ではありません。

なぜこうなった?

4

2 に答える 2

2

(1) イベントと (2) キーステート入力を混合する場合、次のようになります。

import pygame
from pygame.locals import *

done = False    

while not done:
    for event in pygame.event.get():
        # any other key event input
        if event.type == QUIT:
            done = True        
        elif event.type == KEYDOWN:
            if event.key == K_ESC:
                done = True
            elif event.key == K_F1:
                print "hi world mode"

    # get key current state
    keys = pygame.key.get_pressed()
    if keys[K_SPACE]:
        #repeating fire while held
        fire() 

KEYDOWN と KEYUP についても同じことが当てはまると思いますが、

イベントをポーリングする必要があります。あなたがそれを行うことができる1つの方法は

while not done:
    for event in pygame.event.get():
        # any other key event input
        if event.type == QUIT:
            done = True        
        elif event.type == KEYDOWN:
            if event.key == K_ESC:
                done = True

    player.handle_event(event)

次にPlayer()

def handle_event(self, event):
    if event.type == KEYDOWN:
        if event.key == K_f: print 'Player.f pressed'
于 2013-06-29T04:18:56.940 に答える