WIP: update

This commit is contained in:
CoCo_Sol 2023-10-29 15:46:50 +01:00
parent cf894a13db
commit 95534b8aa7
2 changed files with 91 additions and 13 deletions

View file

@ -5,7 +5,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, Text, World
class Typing: class Typing(str):
""" """
Marque une entité comme un texte qui s'ecrit en fonction du clavier Marque une entité comme un texte qui s'ecrit en fonction du clavier
""" """
@ -18,8 +18,14 @@ def __update(world: World):
keyboard = world[Keyboard] keyboard = world[Keyboard]
for entity in world.query(Typing, Text): for entity in world.query(Typing, Text):
text = entity[Text] text = entity[Text]
pressed = keyboard.pressed for key in keyboard.pressed:
if key == "backspace":
text = text[:-1]
if key.startswith("["): # pavé numerique
key = key[1]
if key in entity[Typing]:
text += key
entity[Text] = Text(text)
PLUGIN = Scene( PLUGIN = Scene(

View file

@ -2,10 +2,14 @@
Définis la scène du jeu classique, sans variante. Définis la scène du jeu classique, sans variante.
""" """
import random
from plugins import typing from plugins import typing
from engine import ( from engine import (
Centered, Centered,
Clickable,
Display,
HoveredTexture, HoveredTexture,
Keyboard,
Order, Order,
Position, Position,
Scene, Scene,
@ -16,35 +20,103 @@ from engine import (
) )
class RandomNumber(int):
"""
La ressource qui est le nombre a deviner.
"""
class TextDialogue:
"""
Le component qui declare l'entitee Text qui affiche le plus petit ou le plus grand
"""
class NombreEssai(int):
"""
Le component qui declare le nombre d'essai
"""
def __initialize_world(world: World): def __initialize_world(world: World):
""" """
Initialise le monde du menu. Initialise le monde du menu.
""" """
world.create_entity( world.create_entity(
Position(1215, 964), Position(Display.WIDTH / 2, 964),
Order(1), Order(1),
Centered(), Centered(),
Texture("classique/valider.png"), Texture("classique/valider.png"),
HoveredTexture("classique/valider_hover.png"), HoveredTexture("classique/valider_hover.png"),
Clickable(lambda world, _: check_number(world)),
) )
world.create_entity( world.create_entity(
Position(519, 964), Position(Display.WIDTH / 2, 750),
Order(1),
Centered(),
Texture("classique/search_bar.png"),
)
world.create_entity(
Position(50, 750),
Order(2), Order(2),
Text("Salut"), Centered(),
typing.Typing("1234567890"),
Text(""),
TextSize(150), TextSize(150),
) )
# Text qui dit si ton nombre et trop grand ou trop petit
world.create_entity(
Position(Display.WIDTH / 2, 500),
Order(3),
Centered(),
TextDialogue(),
TextSize(150),
Text("Devine le nombre..."),
)
# Text qui affiche le nombre d'essai
world.create_entity(
Position(50, 300),
Order(4),
Centered(),
TextSize(100),
Text("il reste : 7 essai"),
)
world[NombreEssai] = NombreEssai(7)
world[RandomNumber] = RandomNumber(random.randint(0, 99))
def check_number(world: World):
"""
Verifie si le nombre donné est le meme que celui que l'on a choisi.
"""
for entity in world.query(typing.Typing, Text):
for entity_text in world.query(TextDialogue):
number: str = entity[Text]
if number == "":
entity_text[Text] = Text("tu doit entrer un nombre !")
break
if world[RandomNumber] == int(number):
entity_text[Text] = Text("Win!")
elif world[RandomNumber] > int(number):
entity_text[Text] = Text("Trop petit")
else:
entity_text[Text] = Text("Trop grand")
# One efface le nombre.
entity[Text] = Text("")
def __check_return(world: World):
"""
Verifie si la touche return est appuyée.
"""
keyboard = world[Keyboard]
if keyboard.is_key_pressed("return"):
check_number(world)
SCENE = ( SCENE = (
Scene( Scene(
[__initialize_world], [__initialize_world],
[], [__check_return],
[], [],
) )
+ typing.PLUGIN + typing.PLUGIN