This commit is contained in:
jaegerfl104085 committed 2026-10-20 16:04:15 +02:00
commit a8ee8bad99
7 files changed
+458

No files matched your search

+85
View File
@@ -0,0 +1,85 @@
import math
import sys
import pygame
class Moon:
def __init__(
self,
center: tuple[float, float] = (400, 300),
distance: float = 180.0,
speed: float = 0.02,
radius: int = 15,
color: tuple[int, int, int] = (200, 200, 200),
):
self.center = center # Drehzentrum (standardmäßig die Erde)
self.distance = distance # Bahnradius
self.angle = 0.0 # Aktueller Winkel
self.speed = speed # Winkelgeschwindigkeit
self.radius = radius # Darstellungsradius
self.color = color # Farbe (Mond: grau)
self.x = 0.0
self.y = 0.0
self.update_position()
def update_angle(self) -> None:
"""Erhöht den Drehwinkel um die eigene Geschwindigkeit."""
self.angle += self.speed
def compute_relative_position(self) -> tuple[float, float]:
"""Berechnet die relative Position zum Mittelpunkt über Polar- zu Kartesischen Koordinaten."""
dx = self.distance * math.cos(self.angle)
dy = self.distance * math.sin(self.angle)
return dx, dy
def update_position(self) -> None:
"""Setzt die absolute Position basierend auf dem Zentrum und dem relativen Offset."""
self.update_angle()
dx, dy = self.compute_relative_position()
self.x = self.center[0] + dx
self.y = self.center[1] + dy
def draw(self, screen: pygame.Surface) -> None:
"""Zeichnet das Objekt auf den Bildschirm."""
pygame.draw.circle(
screen,
self.color,
(int(self.x), int(self.y)),
self.radius,
)
def main():
pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Mond-Simulation")
clock = pygame.time.Clock()
earth_pos = (400, 300)
moon = Moon(center=earth_pos)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Aktualisierung
moon.update_position()
# Zeichnen
screen.fill((10, 10, 25)) # Weltraum-Hintergrund
# Erde zeichnen
pygame.draw.circle(screen, (30, 100, 220), earth_pos, 40)
# Mond zeichnen
moon.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
sys.exit()
if __name__ == "__main__":
main()