Implementation de la base de l'engine #3

Merged
yannis merged 33 commits from Engine_base into main 2023-12-26 16:36:16 +00:00
4 changed files with 56 additions and 8 deletions
Showing only changes of commit e020fd2b4c - Show all commits

View file

@ -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()

16
src/event_handler.py Normal file
View file

@ -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()

View file

@ -1,4 +1,4 @@
from engine import Engine
from src.engine import Engine
engine = Engine()
engine.loop()

View file

@ -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