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