end game
This commit is contained in:
parent
8b98f31d39
commit
af6d46200d
|
@ -7,6 +7,7 @@ from plugins import typing
|
||||||
from engine import (
|
from engine import (
|
||||||
Centered,
|
Centered,
|
||||||
Clickable,
|
Clickable,
|
||||||
|
Color,
|
||||||
Display,
|
Display,
|
||||||
Game,
|
Game,
|
||||||
HoveredTexture,
|
HoveredTexture,
|
||||||
|
@ -45,12 +46,26 @@ class NombreEssaiText:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
class IsRunning:
|
||||||
|
"""
|
||||||
|
Le component qui indique si le jeu est en cours
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
def __initialize_world(world: World):
|
def __initialize_world(world: World):
|
||||||
"""
|
"""
|
||||||
Initialise le monde du menu.
|
Initialise le monde du menu.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Fond d'ecran
|
||||||
world.create_entity(
|
world.create_entity(
|
||||||
Position(Display.WIDTH / 2, 964),
|
Position(),
|
||||||
|
Order(0),
|
||||||
|
Texture("classique/background.png"),
|
||||||
|
)
|
||||||
|
|
||||||
|
world.create_entity(
|
||||||
|
Position(Display.WIDTH / 2, 900),
|
||||||
Order(1),
|
Order(1),
|
||||||
Centered(),
|
Centered(),
|
||||||
Texture("classique/valider.png"),
|
Texture("classique/valider.png"),
|
||||||
|
@ -64,6 +79,7 @@ def __initialize_world(world: World):
|
||||||
Centered(),
|
Centered(),
|
||||||
typing.Typing("1234567890"),
|
typing.Typing("1234567890"),
|
||||||
Text(""),
|
Text(""),
|
||||||
|
Color(61, 22, 58),
|
||||||
TextSize(150),
|
TextSize(150),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -74,20 +90,31 @@ def __initialize_world(world: World):
|
||||||
Centered(),
|
Centered(),
|
||||||
TextDialogue(),
|
TextDialogue(),
|
||||||
TextSize(150),
|
TextSize(150),
|
||||||
|
Color(61, 22, 58),
|
||||||
Text("Devine le nombre..."),
|
Text("Devine le nombre..."),
|
||||||
)
|
)
|
||||||
|
|
||||||
# Text qui affiche le nombre d'essai
|
# Text qui affiche le nombre d'essai
|
||||||
world.create_entity(
|
world.create_entity(
|
||||||
Position(10, 10),
|
Position(Display.WIDTH - 700, 100),
|
||||||
Order(4),
|
Order(4),
|
||||||
TextSize(100),
|
TextSize(100),
|
||||||
NombreEssaiText(),
|
NombreEssaiText(),
|
||||||
|
Color(61, 22, 58),
|
||||||
Text("il reste : 7 essais"),
|
Text("il reste : 7 essais"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
world.create_entity(
|
||||||
|
Order(11),
|
||||||
|
Position(100, 100),
|
||||||
|
Texture("classique/arrow.png"),
|
||||||
|
Clickable(lambda world, _: world[Game].change_scene("menu")),
|
||||||
|
HoveredTexture("classique/arrow_hover.png"),
|
||||||
|
)
|
||||||
|
|
||||||
world[NombreEssai] = NombreEssai(7)
|
world[NombreEssai] = NombreEssai(7)
|
||||||
world[RandomNumber] = RandomNumber(random.randint(0, 99))
|
world[RandomNumber] = RandomNumber(random.randint(0, 99))
|
||||||
|
world[IsRunning] = IsRunning()
|
||||||
|
|
||||||
|
|
||||||
def check_number(world: World):
|
def check_number(world: World):
|
||||||
|
@ -95,25 +122,30 @@ def check_number(world: World):
|
||||||
Verifie si le nombre donné est le meme que celui que l'on a choisi.
|
Verifie si le nombre donné est le meme que celui que l'on a choisi.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# si le jeu s'est arrete, on empeche de continuer.
|
||||||
|
if IsRunning not in world:
|
||||||
|
world[Game].change_scene("classique")
|
||||||
|
|
||||||
for entity in world.query(typing.Typing, Text):
|
for entity in world.query(typing.Typing, Text):
|
||||||
for entity_text in world.query(TextDialogue):
|
# One efface le nombre.
|
||||||
if world[NombreEssai] == 1:
|
|
||||||
entity_text[Text] = Text("Lose!")
|
|
||||||
create_end_buton(world, "lose")
|
|
||||||
return
|
|
||||||
number: str = entity[Text]
|
number: str = entity[Text]
|
||||||
|
entity[Text] = Text("")
|
||||||
|
|
||||||
|
for entity_text in world.query(TextDialogue):
|
||||||
if number == "":
|
if number == "":
|
||||||
entity_text[Text] = Text("tu doit entrer un nombre !")
|
entity_text[Text] = Text("tu doit entrer un nombre !")
|
||||||
break
|
return
|
||||||
if world[RandomNumber] == int(number):
|
if world[RandomNumber] == int(number):
|
||||||
create_end_buton(world, "win")
|
end_game(world, "Gagné")
|
||||||
|
return
|
||||||
|
elif world[NombreEssai] <= 1:
|
||||||
|
end_game(world, "Perdu")
|
||||||
|
print("Perdu")
|
||||||
|
return
|
||||||
elif world[RandomNumber] > int(number):
|
elif world[RandomNumber] > int(number):
|
||||||
entity_text[Text] = Text("Trop petit")
|
entity_text[Text] = Text("Plus grand...")
|
||||||
else:
|
else:
|
||||||
entity_text[Text] = Text("Trop grand")
|
entity_text[Text] = Text("Plus petit...")
|
||||||
|
|
||||||
# One efface le nombre.
|
|
||||||
entity[Text] = Text("")
|
|
||||||
|
|
||||||
# on update l'affichage du nombre d'essai.
|
# on update l'affichage du nombre d'essai.
|
||||||
world[NombreEssai] = NombreEssai(world[NombreEssai] - 1)
|
world[NombreEssai] = NombreEssai(world[NombreEssai] - 1)
|
||||||
|
@ -123,23 +155,33 @@ def check_number(world: World):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def create_end_buton(world: World, state: str):
|
def end_game(world: World, state: str):
|
||||||
"""
|
"""
|
||||||
Create the end buton
|
Create the end buton
|
||||||
"""
|
"""
|
||||||
|
del world[IsRunning]
|
||||||
|
|
||||||
# sup toutes les entitées
|
for entity_text in world.query(TextDialogue):
|
||||||
for entity in world.query():
|
entity_text[Text] = Text(f"{state} !")
|
||||||
del entity
|
|
||||||
|
|
||||||
world.create_entity(
|
# On empeche de pourvoir continuer le jeu.
|
||||||
Order(3),
|
for entity in world.query(typing.Typing, Text):
|
||||||
Texture(f"classique/{state}.png"),
|
del entity[typing.Typing]
|
||||||
Clickable(lambda world, _: world[Game].change_scene("menu")),
|
|
||||||
)
|
if state == "Gagné":
|
||||||
|
for entity in world.query(NombreEssaiText):
|
||||||
|
entity[Text] = Text("")
|
||||||
|
else:
|
||||||
|
for entity in world.query(NombreEssaiText):
|
||||||
|
entity[Text] = Text(" plus d'essais")
|
||||||
|
|
||||||
|
# on change la texture du button submit.
|
||||||
|
for entity in world.query(Clickable, Centered):
|
||||||
|
entity[Texture] = Texture("classique/play_again.png")
|
||||||
|
entity[HoveredTexture] = HoveredTexture("classique/play_again_hover.png")
|
||||||
|
|
||||||
|
|
||||||
def __check_return(world: World):
|
def _check_return(world: World):
|
||||||
"""
|
"""
|
||||||
Verifie si la touche return est appuyée.
|
Verifie si la touche return est appuyée.
|
||||||
"""
|
"""
|
||||||
|
@ -151,7 +193,7 @@ def __check_return(world: World):
|
||||||
SCENE = (
|
SCENE = (
|
||||||
Scene(
|
Scene(
|
||||||
[__initialize_world],
|
[__initialize_world],
|
||||||
[__check_return],
|
[_check_return],
|
||||||
[],
|
[],
|
||||||
)
|
)
|
||||||
+ typing.PLUGIN
|
+ typing.PLUGIN
|
||||||
|
|
Loading…
Reference in a new issue