"""Die Raumkapsel Apollo kreist um den Mond.""" import pygame from compute import rot_2d from moon import MOON_RADIUS, Moon, Point APOLLO_RADIUS = 4 APOLLO_DISTANCE = MOON_RADIUS + 15 # Abstand Mond-Apollo (Mittelpunkte) RED = (255, 0, 0) class Apollo(Moon): """Erweitert die Mond-Simulation um die Raumkapsel Apollo.""" def __init__( self, title: str = "Apollo", fps: int = 60, size: tuple[int, int] = (640, 400), ) -> None: """Legt Startposition und Rotationsmatrix von Apollo fest.""" super().__init__(title, fps, size) self.position_apollo: Point = (APOLLO_DISTANCE, 0.0) # relativ zum Mond # doppelte Winkelgeschwindigkeit, entgegengesetzte Drehrichtung self.rot_apollo: list[list[float]] = rot_2d(-2 * self.theta, unit="rad") def update_game(self) -> bool: """Bewegt erst den Mond, dann Apollo.""" running = super().update_game() self.position_apollo = self.rotate(self.position_apollo, self.rot_apollo) return running def draw_bodies(self) -> None: """Zeichnet Erde und Mond und zusätzlich Apollo.""" super().draw_bodies() moon_x, moon_y = self.moon_screen_position() apollo_pos = ( moon_x + self.position_apollo[0], moon_y + self.position_apollo[1], ) pygame.draw.circle(self.screen, RED, apollo_pos, APOLLO_RADIUS) if __name__ == "__main__": apollo = Apollo() apollo.run()