import math import pygame class Spark: """Ein Funken, der von einer Klinge oder einem Projektil ausgeht.""" def __init__(self, pos, angle, speed): self.pos = list(pos) self.angle = angle self.speed = speed def update(self): # Bewegt den Funken in seine Richtung self.pos[0] += math.cos(self.angle) * self.speed self.pos[1] += math.sin(self.angle) * self.speed # Macht den Funken langsamer, bis er stehen bleibt self.speed = max(0, self.speed - 0.1) # Gibt True zurück, wenn der Funken stillsteht (kann dann gelöscht werden) return not self.speed def render(self, surface: pygame.Surface, offset=(0, 0)): """Zeichnet den Funken als kleines, in Flugrichtung gestrecktes Viereck.""" render_points = [ ( self.pos[0] + math.cos(self.angle) * self.speed * 3 - offset[0], self.pos[1] + math.sin(self.angle) * self.speed * 3 - offset[1], ), ( self.pos[0] + math.cos(self.angle + math.pi * 0.5) * self.speed * 0.5 - offset[0], self.pos[1] + math.sin(self.angle + math.pi * 0.5) * self.speed * 0.5 - offset[1], ), ( self.pos[0] + math.cos(self.angle + math.pi) * self.speed * 3 - offset[0], self.pos[1] + math.sin(self.angle + math.pi) * self.speed * 3 - offset[1], ), ( self.pos[0] + math.cos(self.angle - math.pi * 0.5) * self.speed * 0.5 - offset[0], self.pos[1] + math.sin(self.angle - math.pi * 0.5) * self.speed * 0.5 - offset[1], ), ] pygame.draw.polygon(surface, (255, 255, 180), render_points) # (255, 255, 180)