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