Wie schieße ich in Pygame eine Kugel in Richtung der Maus?

DDD
Freigeben: 2024-10-29 19:17:30
Original
595 Leute haben es durchsucht

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

Wie man in Pygame eine Kugel in Richtung der Maus abfeuert

In Pygame kann man eine Kugel erstellen, die in Richtung der Maus abgefeuert wird. Dazu müsste man eine Klasse erstellen, die das Geschoss darstellt, und seine Anfangsposition und Richtung basierend auf der Mausposition festlegen.

Klasse für das Geschoss

Erstellen Sie zunächst eine Klasse für das Aufzählungszeichen. Diese Klasse sollte Attribute für die Position, Größe und Oberfläche des Geschosses enthalten. Die Oberfläche ist das, was auf dem Bildschirm gerendert wird.

<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>
Nach dem Login kopieren

Spielklassenfunktionen

Als nächstes erstellen Sie eine Klasse für das Spiel. Diese Klasse enthält Funktionen zum Schießen und Erzeugen von Kugeln.

<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>
Nach dem Login kopieren

Verwenden der Bullet-Klasse

Erstellen Sie in der Hauptspielschleife eine Instanz der Game-Klasse und Rufen Sie die Funktionen „shoot_bullet“ und „generate_bullet“ auf.

<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>
Nach dem Login kopieren

Dieser Code erstellt eine Kugel, die in Richtung der Maus geschossen wird. Die Kugel bewegt sich, bis sie vom Bildschirm verschwindet.

Das obige ist der detaillierte Inhalt vonWie schieße ich in Pygame eine Kugel in Richtung der Maus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!