From 2044ead63a36284bf5e641573ec7c30b7c618716 Mon Sep 17 00:00:00 2001 From: Tipragot Date: Sat, 28 Oct 2023 23:48:47 +0200 Subject: [PATCH] Ajout du menu principal pour l'exemple --- .../textures/{ => menu}/button_classique.png | Bin .../{ => menu}/button_classique_hover.png | Bin .../textures/{ => menu}/button_histoire.png | Bin .../{ => menu}/button_histoire_hover.png | Bin assets/textures/{ => menu}/button_menteur.png | Bin .../{ => menu}/button_menteur_hover.png | Bin .../textures/{ => menu}/button_tricheur.png | Bin .../{ => menu}/button_tricheur_hover.png | Bin src/engine.py | 12 +++++ src/main.py | 36 +++---------- src/plugins/__init__.py | 3 ++ src/scenes/__init__.py | 3 ++ src/scenes/menu.py | 51 ++++++++++++++++++ 13 files changed, 75 insertions(+), 30 deletions(-) rename assets/textures/{ => menu}/button_classique.png (100%) rename assets/textures/{ => menu}/button_classique_hover.png (100%) rename assets/textures/{ => menu}/button_histoire.png (100%) rename assets/textures/{ => menu}/button_histoire_hover.png (100%) rename assets/textures/{ => menu}/button_menteur.png (100%) rename assets/textures/{ => menu}/button_menteur_hover.png (100%) rename assets/textures/{ => menu}/button_tricheur.png (100%) rename assets/textures/{ => menu}/button_tricheur_hover.png (100%) create mode 100644 src/plugins/__init__.py create mode 100644 src/scenes/__init__.py create mode 100644 src/scenes/menu.py diff --git a/assets/textures/button_classique.png b/assets/textures/menu/button_classique.png similarity index 100% rename from assets/textures/button_classique.png rename to assets/textures/menu/button_classique.png diff --git a/assets/textures/button_classique_hover.png b/assets/textures/menu/button_classique_hover.png similarity index 100% rename from assets/textures/button_classique_hover.png rename to assets/textures/menu/button_classique_hover.png diff --git a/assets/textures/button_histoire.png b/assets/textures/menu/button_histoire.png similarity index 100% rename from assets/textures/button_histoire.png rename to assets/textures/menu/button_histoire.png diff --git a/assets/textures/button_histoire_hover.png b/assets/textures/menu/button_histoire_hover.png similarity index 100% rename from assets/textures/button_histoire_hover.png rename to assets/textures/menu/button_histoire_hover.png diff --git a/assets/textures/button_menteur.png b/assets/textures/menu/button_menteur.png similarity index 100% rename from assets/textures/button_menteur.png rename to assets/textures/menu/button_menteur.png diff --git a/assets/textures/button_menteur_hover.png b/assets/textures/menu/button_menteur_hover.png similarity index 100% rename from assets/textures/button_menteur_hover.png rename to assets/textures/menu/button_menteur_hover.png diff --git a/assets/textures/button_tricheur.png b/assets/textures/menu/button_tricheur.png similarity index 100% rename from assets/textures/button_tricheur.png rename to assets/textures/menu/button_tricheur.png diff --git a/assets/textures/button_tricheur_hover.png b/assets/textures/menu/button_tricheur_hover.png similarity index 100% rename from assets/textures/button_tricheur_hover.png rename to assets/textures/menu/button_tricheur_hover.png diff --git a/src/engine.py b/src/engine.py index 42d3529..57b4de8 100644 --- a/src/engine.py +++ b/src/engine.py @@ -29,6 +29,18 @@ class World: self._entities: dict[type[object], set[Entity]] = {} self.__resources: dict[type[object], object] = {} + def create_entity(self, *components: object) -> "Entity": + """ + Crée une nouvelle entité avec les composants donnés et l'ajoute au monde. + + Paramètres: + *components: les composants de l'entité. + + Retourne: + L'entité. + """ + return Entity(self, *components) + def __setitem__(self, resource_type: type[__T], resource: __T): if resource_type != type(resource): raise TypeError() diff --git a/src/main.py b/src/main.py index 3f11059..1754bc0 100644 --- a/src/main.py +++ b/src/main.py @@ -2,39 +2,15 @@ Example de l'utilisation du moteur de jeu. """ -from engine import ( - Centered, - Clickable, - Display, - Entity, - Game, - HoveredTexture, - Order, - Position, - Scene, - Texture, - World, - start_game, -) - -def initialize_world(world: World): - """ - Initialise le monde. - """ - Entity( - world, - Position(Display.WIDTH / 2, Display.HEIGHT / 2), - Order(0), - Centered(), - Texture("button_classique.png"), - HoveredTexture("button_classique_hover.png"), - Clickable(lambda w, e: w[Game].change_scene("test")), - ) +from engine import start_game +from scenes import menu start_game( - {"example": Scene([initialize_world], [], []), "test": Scene([], [], [])}, - "example", + { + "menu": menu.SCENE, + }, + "menu", title="Guess The Number", ) diff --git a/src/plugins/__init__.py b/src/plugins/__init__.py new file mode 100644 index 0000000..25d84e6 --- /dev/null +++ b/src/plugins/__init__.py @@ -0,0 +1,3 @@ +""" +Contient des plugins pour certaines features du jeu. +""" diff --git a/src/scenes/__init__.py b/src/scenes/__init__.py new file mode 100644 index 0000000..40fe25c --- /dev/null +++ b/src/scenes/__init__.py @@ -0,0 +1,3 @@ +""" +Contient toutes les scènes du jeu. +""" diff --git a/src/scenes/menu.py b/src/scenes/menu.py new file mode 100644 index 0000000..67e0662 --- /dev/null +++ b/src/scenes/menu.py @@ -0,0 +1,51 @@ +""" +Définis la scène du menu du jeu. +""" + +from engine import ( + Centered, + Clickable, + Display, + Game, + HoveredTexture, + Order, + Position, + Scene, + Text, + TextSize, + Texture, + World, +) + + +def __initialize_world(world: World): + """ + Initialise le monde du menu. + """ + world.create_entity(Position(), Order(0), Texture("menu/background.png")) + + world.create_entity( + Position(Display.WIDTH / 2, 200), + Order(1), + Centered(), + Text("Guess The Number"), + TextSize(200), + ) + + scenes_name = ["classique", "menteur", "tricheur", "histoire"] + for i, name in enumerate(scenes_name): + world.create_entity( + Position(Display.WIDTH / 2, 450 + 150 * i), + Order(1), + Centered(), + Texture(f"menu/button_{name}.png"), + HoveredTexture(f"menu/button_{name}_hover.png"), + Clickable(lambda world, entity: world[Game].change_scene(name)), + ) + + +SCENE = Scene( + [__initialize_world], + [], + [], +)