Prog3A-Moon/game/game.py

70 lines
1.8 KiB
Python

import os
from pathlib import Path
import pygame
from dotenv import load_dotenv
class Game:
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
def init_game(self):
pygame.init()
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 not self.event_handling():
break
if not self.update_game():
break
self.draw_game()
def exit_game(self):
pygame.quit()
def event_handling(self): # bleibt in der Unterklasse unverändert
for event in pygame.event.get():
if not self.handle_event(event):
return False
return True
def handle_event(self, event): # wird in der Unterklasse überschrieben
if event.type == pygame.QUIT:
return False
return True
def update_game(self):
return True
def draw_game(self):
pygame.display.flip()
def run(self):
self.init_game()
self.game_loop()
self.exit_game()