gtn/src/main.py

99 lines
2.5 KiB
Python
Raw Normal View History

"""
Ceci est un exemple de comment l'on peut utiliser le moteur du jeu.
"""
2023-10-24 12:11:58 +00:00
from engine import *
from engine.math import Vec2
2023-10-27 16:17:29 +00:00
from engine.plugins.animation import AnimatedSprite, AnimationPlugin
from engine.plugins.clickable import Clickable, ClickablePlugin
2023-10-27 16:17:29 +00:00
from engine.plugins.hover import HoverPlugin
2023-10-26 15:29:15 +00:00
from engine.plugins.render import (
Order,
RenderPlugin,
Position,
Texture,
2023-10-26 15:29:15 +00:00
)
2023-10-27 16:17:29 +00:00
from engine.plugins.timing import Delta, TimePlugin
2023-10-25 17:41:03 +00:00
from engine.plugins.pygame import Display, Keyboard, PygamePlugin
from random import random
2023-10-23 10:14:28 +00:00
# Initialisation
2023-10-27 13:26:37 +00:00
game = Game(
TimePlugin(),
PygamePlugin("Guess The Number"),
RenderPlugin(),
HoverPlugin(),
ClickablePlugin(),
2023-10-27 16:17:29 +00:00
AnimationPlugin(),
2023-10-27 13:26:37 +00:00
)
# 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),
2023-10-27 16:17:29 +00:00
Texture("directory.png") if red else Texture("error.png"),
Order(1 if red else 0),
)
if red:
entity.set(
2023-10-27 16:17:29 +00:00
Clickable(
lambda world, entity: entity.set(
AnimatedSprite(
"search_directory",
lambda world, entity: print("finished !"),
)
)
)
)
2023-10-27 16:17:29 +00:00
# On ajoutant la tache
game.add_startup_tasks(spawn_sprites)
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
2023-10-23 11:15:50 +00:00
game.run()