首頁 > 後端開發 > 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 中,可以創建一顆朝滑鼠方向發射的子彈。為此,需要建立一個代表項目符號的類,並根據滑鼠位置設定其初始位置和方向。

項目符號的類別

首先,為項目符號建立一個類別。此類別應包含子彈位置、大小和表面的屬性。表面是將在螢幕上渲染的內容。

<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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板