ホームページ > バックエンド開発 > Python チュートリアル > Pygameでマウスの方向に弾丸を発射するにはどうすればよいですか?

Pygameでマウスの方向に弾丸を発射するにはどうすればよいですか?

DDD
リリース: 2024-10-29 19:17:30
オリジナル
656 人が閲覧しました

How to shoot a bullet in the direction of the mouse in Pygame?

Pygame でマウスの方向に弾丸を発射する方法

Pygame では、マウスの方向に発射される弾丸を作成できます。これを行うには、弾丸を表すクラスを作成し、マウスの位置に基づいてその初期位置と方向を設定する必要があります。

Bullet のクラス

まず、弾丸のクラスを作成します。このクラスには、弾丸の位置、サイズ、および表面の属性が含まれている必要があります。サーフェスは、画面上にレンダリングされるものです。

<code class="python">import pygame

class Bullet:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.height = 7
        self.width = 2
        self.bullet = pygame.Surface((self.width, self.height))
        self.bullet.fill((255, 255, 255))</code>
ログイン後にコピー

ゲーム クラス関数

次に、ゲームのクラスを作成します。このクラスには、弾丸を発射および生成するための関数が含まれます。

<code class="python">class Game:
    def __init__(self):
        self.bullets = []
    
    def shoot_bullet(self):
        mouse_x, mouse_y = pygame.mouse.get_pos() # Get the mouse position
        for bullet in self.bullets:
            rise = mouse_y - bullet.y # Calculate the difference between mouse and bullet y position
            run = mouse_x - bullet.x # Calculate the difference between mouse and bullet x position
            angle = math.atan2(rise, run) # Calculate the angle between mouse and bullet

            bullet.x += math.cos(angle) * 10 # Update bullet x position
            bullet.y += math.sin(angle) * 10 # Update bullet y position

            # Rotate and draw the bullet
            rotated_bullet = pygame.transform.rotate(bullet.bullet, -math.degrees(angle))
            screen.blit(rotated_bullet, (bullet.x, bullet.y))

    def generate_bullet(self):
        mouse_buttons = pygame.mouse.get_pressed() # Check if mouse is clicked
        if mouse_buttons[0]: # If left mouse button is clicked
            self.bullets.append(Bullet(player.x, player.y)) # Create a new bullet</code>
ログイン後にコピー

Bullet クラスの使用

メイン ゲーム ループで、Game クラスのインスタンスを作成し、関数shoot_bulletとgenerate_bulletを呼び出します。

<code class="python">game = Game()

while running:
    # Event handling

    # Update
    game.shoot_bullet()
    game.generate_bullet()
    
    # Draw
    screen.fill((0, 0, 0))
    for bullet in game.bullets:
        screen.blit(bullet.bullet, (bullet.x, bullet.y))
    pygame.display.update()</code>
ログイン後にコピー

このコードは、マウスの方向に発射される弾丸を作成します。弾丸は画面から消えるまで移動します。

以上がPygameでマウスの方向に弾丸を発射するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート