Assignment 1 commit: Moon & Apollo - code quality improvements and implementation of .env file

This commit is contained in:
Brockmann
2025-10-26 15:53:16 +01:00
parent bf74311add
commit 4ab9122c3e
10 changed files with 149 additions and 69 deletions
-29
View File
@@ -1,29 +0,0 @@
import pygame
from game.game import Game
from numeric.compute import rot_2D, matmul
class Moon(Game):
def __init__(self):
super().__init__("Moon")
self.moon_position = None
self.center = (540, 355)
self.moon_distance = [[200], [0]]
self.angle = 0
def update_game(self):
self.angle = pygame.time.get_ticks() / 1000 # Zeit = Winkel
rot = rot_2D(self.angle)
rotated = matmul(rot, self.moon_distance)
self.moon_position = (
int(self.center[0] + rotated[0][0]),
int(self.center[1] + rotated[1][0])
)
return True
def draw_game(self):
self.screen.fill((30,30,30))
pygame.draw.circle(self.screen, (0,0,255), self.center, 12)
pygame.draw.circle(self.screen, (255,255,255), self.moon_position, 8)
pygame.display.flip()
-26
View File
@@ -1,26 +0,0 @@
import pygame
from game.Moon import Moon
from numeric.compute import rot_2D, matmul
class Apollo(Moon):
def __init__(self):
super().__init__()
self.orbiter_position = None
self.orbiter_distance = [[50], [0]]
def update_game(self):
super().update_game()
rot = rot_2D(-self.angle)
rotated = matmul(rot, self.orbiter_distance)
self.orbiter_position = (
int(self.moon_position[0] + rotated[0][0]),
int(self.moon_position[1] + rotated[1][0])
)
return True
def draw_game(self):
super().draw_game()
pygame.draw.circle(self.screen, (255,0,0), self.orbiter_position, 4)
pygame.display.flip()
+23 -7
View File
@@ -1,11 +1,28 @@
import os
from pathlib import Path
import pygame
from dotenv import load_dotenv
class Game:
def __init__(self, title, fps=60, size=(1080, 720)):
self.title = title
self.fps = fps
self.size = size
def __init__(self, title=None, fps=None, size=None):
load_dotenv(Path(__file__).resolve().parent.parent / 'config.env')
if size is None:
self.size = tuple(map(int, os.getenv("SIZE", "1080, 720").split(",")))
else:
self.size = size
if fps is None:
self.fps = int(os.getenv("FPS", "60"))
else:
self.fps = fps
if title is None:
self.title = os.getenv("TITLE", "Apollo")
else:
self.title = title
self.clock = pygame.time.Clock()
self.dt = 0
self.screen = None
@@ -15,14 +32,13 @@ class Game:
pygame.display.set_caption(self.title)
self.screen = pygame.display.set_mode(self.size)
def game_loop(self):
while True:
# Berechnung der Zeitdifferenz seit dem letzten Frame
self.dt = self.clock.tick(self.fps) / 1000
if self.event_handling() == False:
if not self.event_handling():
break
if self.update_game() == False:
if not self.update_game():
break
self.draw_game()