WIP: update
This commit is contained in:
parent
cf894a13db
commit
95534b8aa7
|
@ -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(
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue