私の現在のプロジェクトは、pythonでスペースインベーダーを作ることです。私はそうするためにpygameライブラリを使用しています。これまでのところ、プレーヤーの発砲以外はすべて正常に動作します。プレイヤーが左のコントロールを押すと、プレイヤーは1発の弾を発射するはずです。代わりに、移動のような何かをするように指示されるまで、プレイヤーは発砲し続けます。誰もがこの問題で私を助けることができれば、それは非常に感謝される、コードは、ありがとうございます。あなたがK_LCTRL
を解放するまで - あなたはすべての時間をTrue
与えpygame.key.get_pressed()
を使用しているためpygameでの発射
def update(self):
self.speed_x = 0
keystate = pygame.key.get_pressed()
if keystate[pygame.K_LEFT]:
self.speed_x = -10
if keystate[pygame.K_RIGHT]:
self.speed_x = 10
self.rect.x += self.speed_x
if self.rect.right > DISPLAY_WIDTH:
self.rect.right = DISPLAY_WIDTH
if self.rect.left < 0:
self.rect.left = 0
if keystate[pygame.K_LCTRL]:
player.shoot()
あなたはshoot' 'の定義を掲示すべきで、それを実行 - (ときボタンの変更状態
pressed
からnot-pressed
に同じKEYUP
は一度だけ作成されます)。 –これは 'pygame.key.get_pressed()'を使用しているためです。これは 'True'を常に与えています - あなたが' K_LCTRL'を解放するまでです。 'fired = True/False'を使うと、最初の弾を発射した場合に制御することができます。また、 'event'は、' event.type == pygame.KEYDOWN'を 'pygame.key.get_pressed()'の代わりに使います。 – furas