„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie schieße ich in Pygame eine Kugel in Richtung der Maus?

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

Veröffentlicht am 07.11.2024
Durchsuche:959

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 Aufzählungszeichen darstellt, und seine Anfangsposition und Richtung basierend auf der Mausposition festlegen.

Klasse für das Aufzählungszeichen

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.

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))

Spielklassenfunktionen

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

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

Verwenden Sie die Bullet-Klasse

In der Hauptspielschleife, Erstellen Sie eine Instanz der Game-Klasse und rufen Sie die Funktionen „shoot_bullet“ und „generate_bullet“ auf.

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()

Dieser Code erzeugt eine Kugel, die in Richtung der Maus geschossen wird. Die Kugel bewegt sich, bis sie den Bildschirm verlässt.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3