diff --git a/src/engine.py b/src/engine.py index 0381a80..659a522 100644 --- a/src/engine.py +++ b/src/engine.py @@ -1,6 +1,31 @@ +from src.event_handler import EventHandler +from src.renderer import Renderer +import pygame + + class Engine: + """Classe principale qui regroupe tous les composants du programme (Renderer, MapManager, EventHandler, etc ...)""" def __init__(self): - pass + # L'initialisation de Pygame est nécéssaire pour tous les modules + pygame.init() + self.running = False + self.renderer = Renderer(self) + self.event_handler = EventHandler(self) def loop(self): - pass + """Fonction à lancer au début du programme et qui va lancer les updates dans une boucle. + Attend jusqu'à la fin du jeu.""" + self.running = True + while self.running: + self.update() + + def update(self): + """Fonction qui regroupe toutes les updates des composants. Elle permet de mettre à jour le jeu quand on + l'appelle.""" + self.renderer.update() + self.event_handler.update() + + def stop(self): + """Arrete le programme.""" + self.running = False + pygame.quit() diff --git a/src/event_handler.py b/src/event_handler.py new file mode 100644 index 0000000..689239c --- /dev/null +++ b/src/event_handler.py @@ -0,0 +1,16 @@ +from pygame import event +from pygame.locals import QUIT + +import src.engine as engine + + +class EventHandler: + """Classe utilisée pour traiter les pygame.event.get() et gérer les interactions avec le reste du programme.""" + def __init__(self, core: 'engine.Engine'): + self.engine = core + + def update(self): + """Vérifie s'il y a de nouvelles interactions et les traites.""" + for e in event.get(): + if e.type == QUIT: + self.engine.stop() diff --git a/src/main.py b/src/main.py index 1f9775b..987faf4 100644 --- a/src/main.py +++ b/src/main.py @@ -1,4 +1,4 @@ -from engine import Engine +from src.engine import Engine engine = Engine() engine.loop() diff --git a/src/renderer.py b/src/renderer.py index 67b57c5..5223935 100644 --- a/src/renderer.py +++ b/src/renderer.py @@ -1,6 +1,13 @@ -class Renderer: - def __init__(self): - pass +from pygame import display + +import src.engine as engine + +class Renderer: + """Classe contenant le moteur de rendu. On utilise, pour cela la bibliothèque Pygame.""" + def __init__(self, core: 'engine.Engine'): + self.engine = core + self.window = display.set_mode((600, 600)) + + def update(self): + """Fait le rendu du jeu.""" - def loop(self): - pass