スペース バーで弾丸を撃つにはどうすればよいですか?
コードでは、スペース バーを押すとプレーヤーが消えます。おそらく射撃とプレイヤーの動きのループが別々になっているためだと思われます。これを修正するには、両方のアクションをメイン アプリケーション ループに組み込みます。
弾丸の発射には、リスト (bullet_list など) を利用して弾丸の位置を保存します。発砲時に、弾を発射するオブジェクトの開始位置をリストに追加します。箇条書きリストを反復処理し、各箇条書きの位置を更新し、画面外にある箇条書きを削除します。
箇条書きクラスのシュート メソッドの while ループは、条件 if y
に変更します。さらに、メイン アプリケーション ループにイベント処理を実装して、キーの押下をキャプチャします。 pygame.key.get_pressed() を使用してキーの状態を継続的に取得します。キーの押下に基づいて、プレーヤーの位置を更新し、弾丸の発射をトリガーします。
これらの修正を組み込んだ改訂されたコード スニペットは次のとおりです:
<code class="python">bullets = [] while True: # Event handling for event in pygame.event.get(): pass if event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE: bullets.append(Bullet(p.x+p.width//2, p.y)) if event.key == pygame.K_LEFT: p.move_left() if event.key == pygame.K_RIGHT: p.move_right() # Update objects keys = pygame.key.get_pressed() if keys[pygame.K_LEFT]: p.move_left() if keys[pygame.K_RIGHT]: p.move_right() for b in bullets: b.update() if b.y <= 0: bullets.remove(b) # Clear display d.fill((98, 98, 98)) # Draw scene for b in bullets: b.draw() p.draw() # Update display win.update()</code>
以上がPygameでプレイヤーの消失を修正し、スペースバーを使用して弾丸射撃を実装する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。