diff --git a/assets/sounds/click.wav b/assets/sounds/click.wav deleted file mode 100644 index 2797a50..0000000 Binary files a/assets/sounds/click.wav and /dev/null differ diff --git a/assets/sounds/click/click0.wav b/assets/sounds/click/click0.wav new file mode 100644 index 0000000..db905d2 Binary files /dev/null and b/assets/sounds/click/click0.wav differ diff --git a/assets/sounds/click/click1.wav b/assets/sounds/click/click1.wav new file mode 100644 index 0000000..e4b267e Binary files /dev/null and b/assets/sounds/click/click1.wav differ diff --git a/assets/sounds/click/click2.wav b/assets/sounds/click/click2.wav new file mode 100644 index 0000000..5881f78 Binary files /dev/null and b/assets/sounds/click/click2.wav differ diff --git a/assets/sounds/lose_sound.wav b/assets/sounds/lose_sound.wav new file mode 100644 index 0000000..f324b3f Binary files /dev/null and b/assets/sounds/lose_sound.wav differ diff --git a/assets/sounds/menu_click.wav b/assets/sounds/menu_click.wav new file mode 100644 index 0000000..a92759a Binary files /dev/null and b/assets/sounds/menu_click.wav differ diff --git a/assets/sounds/win_sound.wav b/assets/sounds/win_sound.wav new file mode 100644 index 0000000..b80f922 Binary files /dev/null and b/assets/sounds/win_sound.wav differ diff --git a/src/engine.py b/src/engine.py index 5d5cd95..718595b 100644 --- a/src/engine.py +++ b/src/engine.py @@ -6,6 +6,7 @@ Un moteur de jeu inspiré de bevy. import json import math import os +import random from typing import Callable, Optional, Sequence, SupportsFloat, TypeVar, Union from time import time import pygame @@ -592,6 +593,12 @@ class Sound: stop_on_remove: bool = False, ) -> None: self.name = name + + if os.path.isdir(f"assets/sounds/{name}"): + list_files = os.listdir(f"assets/sounds/{name}") + random_file = random.choice(list_files) + self.name = f"{name}/{random_file}" + self.volume = volume self.loop = loop self.callback = callback diff --git a/src/plugins/typing.py b/src/plugins/typing.py index 761fa09..6379dd3 100644 --- a/src/plugins/typing.py +++ b/src/plugins/typing.py @@ -2,7 +2,7 @@ Definit un plugin qui crée un texte avec les touches frappées """ -from engine import Keyboard, Scene, Text, World +from engine import Keyboard, Scene, Sound, Text, World class Typing(str): @@ -20,10 +20,12 @@ def __update(world: World): text = entity[Text] for key in keyboard.pressed: if key == "backspace": + world.create_entity(Sound("click")) text = text[:-1] if key.startswith("["): # pavé numerique key = key[1] if key in entity[Typing]: + world.create_entity(Sound("click")) text += key entity[Text] = Text(text) diff --git a/src/scenes/classique.py b/src/scenes/classique.py index 6bf3f7a..d60c505 100644 --- a/src/scenes/classique.py +++ b/src/scenes/classique.py @@ -9,12 +9,14 @@ from engine import ( Clickable, Color, Display, + Entity, Game, HoveredTexture, Keyboard, Order, Position, Scene, + Sound, Text, TextSize, Texture, @@ -111,7 +113,7 @@ def __initialize_world(world: World): Order(11), Position(100, 100), Texture("classique/arrow.png"), - Clickable(lambda world, _: world[Game].change_scene("menu")), + Clickable(on_menu_button), HoveredTexture("classique/arrow_hover.png"), ) @@ -121,12 +123,22 @@ def __initialize_world(world: World): world[IsRunning] = IsRunning() +def on_menu_button(world: World, entity: Entity): + """ + Fonction qui s'execute quand on clique sur un bouton. + """ + world[Game].change_scene("menu") + entity[Sound] = Sound("click") + + def _update(world: World): """ Verifie si le nombre donné est le meme que celui que l'on a choisi. Boucle du jeu. """ + world.create_entity(Sound("menu_click.wav")) + # si le jeu s'est arrete. if IsRunning not in world: # on relance le jeu. @@ -167,6 +179,12 @@ def end_game(world: World, state: str): """ del world[IsRunning] # le jeu est fini. + # On joue le son + if state == "Gagné": + world.create_entity(Sound("win_sound.wav")) + else: + world.create_entity(Sound("lose_sound.wav")) + # On affiche le message de fin. for entity_text in world.query(TextDialogue): entity_text[Text] = Text(f"{state} !") diff --git a/src/scenes/menu.py b/src/scenes/menu.py index 0f60cd4..1fb3d80 100644 --- a/src/scenes/menu.py +++ b/src/scenes/menu.py @@ -36,7 +36,7 @@ def on_click_butons(world: World, entity: Entity, name: str): """ Fonction qui s'execute quand on clique sur un bouton. """ - entity[Sound] = Sound("click.wav") + entity[Sound] = Sound("click") world[Game].change_scene(name)