""" Ceci est un exemple de comment l'on peut utiliser le moteur du jeu. """ from engine import * from engine.math import Vec2 from engine.plugins.clickable import Clickable, ClickablePlugin from engine.plugins.hover import Hover, HoverPlugin from engine.plugins.render import ( Order, RenderPlugin, Position, Offset, Texture, ) from engine.plugins.timing import Time, Delta, TimePlugin from engine.plugins.pygame import Display, Keyboard, PygamePlugin from random import random # Initialisation game = Game( TimePlugin(), PygamePlugin("Guess The Number"), RenderPlugin(), HoverPlugin(), ClickablePlugin(), ) # On créer une tache pour afficher des sprites def spawn_sprites(world: World) -> None: """ Ajoute des sprites au monde. """ for i in range(100): red = random() < 0.1 entity = world.create_entity( Position(random() * Display.WIDTH, random() * Display.HEIGHT), Texture("directory.png") if red else Texture("test.png"), Order(1 if red else 0), ) if red: entity.set(Clickable(lambda world, entity: print("click"))) # On ajoutant la tache game.add_startup_tasks(spawn_sprites) # On créer un tache pour vérifier le système d'hover def change_on_hover(world: World) -> None: """ Change la texture du sprite quand on passe la souris sur lui. """ for entity in world.query(Position, Texture): if Hover in entity: entity.set( Texture( f"animations/search_directory/{(int(world[Time] * 60) % 270):04}.png" ) ) entity.set(Offset(-48, -176)) else: entity.set(Texture("directory.png")) entity.remove(Offset) # On ajoute la tache game.add_update_tasks(change_on_hover) def move_sprites(world: World) -> None: """ Change la position des sprites. """ move = Vec2( (-1.0 if world[Keyboard].is_key("q") else 0.0) + (1.0 if world[Keyboard].is_key("d") else 0.0), (-1.0 if world[Keyboard].is_key("z") else 0.0) + (1.0 if world[Keyboard].is_key("s") else 0.0), ) for entity in world.query(Position): if entity[Order] == 1: continue entity.set(Position(entity[Position] + (move * world[Delta] * 1000.0))) # On ajoute la tache game.add_update_tasks(move_sprites) # On créer une tache pour tester si les plugins fonctionnent def salutations(world: World) -> None: """ Affiche "Bonjour" si la touche B est pressé et "Au revoir" si la touche B est relachée. """ if world[Keyboard].is_key_pressed("b"): print("Bonjour") if world[Keyboard].is_key_released("b"): print("Au revoir") # On ajoute la tache de test game.add_update_tasks(salutations) # On lance la boucle game.run()