ホームページ  >  記事  >  バックエンド開発  >  Pygameでプレイヤーの消失を修正し、スペースバーを使用して弾丸射撃を実装する方法は?

Pygameでプレイヤーの消失を修正し、スペースバーを使用して弾丸射撃を実装する方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-04 07:22:30391ブラウズ

How to Fix Player Disappearance and Implement Bullet Shooting with Space Bar in Pygame?

スペース バーで弾丸を撃つにはどうすればよいですか?

コードでは、スペース バーを押すとプレーヤーが消えます。おそらく射撃とプレイヤーの動きのループが別々になっているためだと思われます。これを修正するには、両方のアクションをメイン アプリケーション ループに組み込みます。

弾丸の発射には、リスト (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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。