|
|
|
@ -13,6 +13,7 @@ from plugins import render
|
|
|
|
|
from plugins import writing
|
|
|
|
|
from plugins.assets import Assets
|
|
|
|
|
from plugins.hover import HoveredTexture
|
|
|
|
|
from plugins.inputs import Pressed
|
|
|
|
|
from plugins.render import Sprite
|
|
|
|
|
from plugins.text import Text
|
|
|
|
|
from plugins.writing import Writing
|
|
|
|
@ -93,6 +94,7 @@ def __initialize_world(world: World):
|
|
|
|
|
PlayAgain(),
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Assigne le nombre d'essai et la couleur du texte enf ocntion du mode de jeux
|
|
|
|
|
match world[GameMode]:
|
|
|
|
|
case GameMode.CLASSIC:
|
|
|
|
|
world.set(RemainingAttempts(7))
|
|
|
|
@ -104,14 +106,6 @@ def __initialize_world(world: World):
|
|
|
|
|
world.set(RemainingAttempts(10))
|
|
|
|
|
text_color = pygame.Color(133, 51, 25)
|
|
|
|
|
|
|
|
|
|
match world[GameMode]:
|
|
|
|
|
case GameMode.CLASSIC:
|
|
|
|
|
world.set(RemainingAttempts(7))
|
|
|
|
|
case GameMode.LIAR:
|
|
|
|
|
world.set(RemainingAttempts(15))
|
|
|
|
|
case GameMode.CHEATER:
|
|
|
|
|
world.set(RemainingAttempts(10))
|
|
|
|
|
|
|
|
|
|
world.new_entity().set(
|
|
|
|
|
Text(
|
|
|
|
|
f"Il reste : {world[RemainingAttempts]} essais",
|
|
|
|
@ -135,7 +129,7 @@ def __initialize_world(world: World):
|
|
|
|
|
|
|
|
|
|
world.new_entity().set(
|
|
|
|
|
Text(
|
|
|
|
|
"",
|
|
|
|
|
"...",
|
|
|
|
|
150,
|
|
|
|
|
text_color,
|
|
|
|
|
Vec2(render.WIDTH / 2, 650),
|
|
|
|
@ -145,6 +139,13 @@ def __initialize_world(world: World):
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __key_check(world: World):
|
|
|
|
|
pressed = world[Pressed]
|
|
|
|
|
for key in pressed:
|
|
|
|
|
if key == "return" or key == "enter":
|
|
|
|
|
__update(world)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __update(world: World):
|
|
|
|
|
# Gestion du pluriel pour le nombre d'essais restants
|
|
|
|
|
pluriel = "s"
|
|
|
|
@ -153,7 +154,10 @@ def __update(world: World):
|
|
|
|
|
else:
|
|
|
|
|
pluriel = "s"
|
|
|
|
|
lying = False
|
|
|
|
|
|
|
|
|
|
# On verifie si le mode actuel est le mode tricheur
|
|
|
|
|
if world[GameMode] == GameMode.LIAR:
|
|
|
|
|
# On verifie si l'ordinateur triche a durant ce tour-ci
|
|
|
|
|
lie = random.randint(1, 4)
|
|
|
|
|
if lie == 4:
|
|
|
|
|
lying = True
|
|
|
|
@ -172,27 +176,37 @@ def __update(world: World):
|
|
|
|
|
world.set(CurrentScene(CHEATER))
|
|
|
|
|
|
|
|
|
|
for entity in world.query(Text, Writing):
|
|
|
|
|
if entity[Text].text != "":
|
|
|
|
|
# On verifie si l'entrée est vide ou contient le texte par defaut
|
|
|
|
|
if entity[Text].text != "" and entity[Text].text != "...":
|
|
|
|
|
# On verifie si l'entrée est égale au nombre choisie
|
|
|
|
|
if int(entity[Text].text) == world[Number]:
|
|
|
|
|
for response in world.query(Text, Response):
|
|
|
|
|
response[Text].text = "Gagné !"
|
|
|
|
|
entity[Text].text = ""
|
|
|
|
|
# Le jeu est finit et on ne peux plus ecrire
|
|
|
|
|
del world[IsRunning]
|
|
|
|
|
del entity[Writing]
|
|
|
|
|
|
|
|
|
|
# On verifie si l'entrée est superieur au nombre choisie
|
|
|
|
|
elif int(entity[Text].text) > world[Number]:
|
|
|
|
|
# On verifie que l'ordinateur ne ment pas
|
|
|
|
|
if world[GameMode] != GameMode.LIAR or not lying:
|
|
|
|
|
for response in world.query(Text, Response):
|
|
|
|
|
response[Text].text = "Plus petit"
|
|
|
|
|
# Sinon il dit l'invers
|
|
|
|
|
else:
|
|
|
|
|
for response in world.query(Text, Response):
|
|
|
|
|
response[Text].text = "Plus grand"
|
|
|
|
|
|
|
|
|
|
# Dans tout les cas
|
|
|
|
|
world[RemainingAttempts] -= 1
|
|
|
|
|
for attempts in world.query(Text, Attempts):
|
|
|
|
|
attempts[
|
|
|
|
|
Text
|
|
|
|
|
].text = f"Il reste : {world[RemainingAttempts]} essai{pluriel}"
|
|
|
|
|
entity[Text].text = ""
|
|
|
|
|
entity[Text].text = "..."
|
|
|
|
|
|
|
|
|
|
# Dans tous les autre cas (quand c'est inferieur)
|
|
|
|
|
else:
|
|
|
|
|
if world[GameMode] != GameMode.LIAR or not lying:
|
|
|
|
|
for response in world.query(Text, Response):
|
|
|
|
@ -206,15 +220,20 @@ def __update(world: World):
|
|
|
|
|
attempts[
|
|
|
|
|
Text
|
|
|
|
|
].text = f"Il reste : {world[RemainingAttempts]} essai{pluriel}"
|
|
|
|
|
entity[Text].text = ""
|
|
|
|
|
else:
|
|
|
|
|
for response in world.query(Text, Response):
|
|
|
|
|
response[Text].text = "Veuillez entrer un nombre."
|
|
|
|
|
entity[Text].text = "..."
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
# Si l'entrée est vide ou avec le texte par defaut
|
|
|
|
|
for response in world.query(Text, Response):
|
|
|
|
|
response[Text].text = "Entrez un nombre !"
|
|
|
|
|
|
|
|
|
|
# On verifie si le joueur a encore des essais
|
|
|
|
|
if world[RemainingAttempts] == 0:
|
|
|
|
|
for response in world.query(Text, Response):
|
|
|
|
|
response[Text].text = "Perdu !"
|
|
|
|
|
# On affiche le nombre
|
|
|
|
|
entity[Text].text = f"Le nombre etait {world[Number]}"
|
|
|
|
|
# On change la texure du bouton valider en bouton rejouer
|
|
|
|
|
for play_again in world.query(PlayAgain):
|
|
|
|
|
play_again[Sprite].texture = world[Assets].get_texture("play_again")
|
|
|
|
|
play_again[HoveredTexture].normal = world[Assets].get_texture(
|
|
|
|
@ -223,25 +242,29 @@ def __update(world: World):
|
|
|
|
|
play_again[HoveredTexture].hovered = world[Assets].get_texture(
|
|
|
|
|
"play_again_hover"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
del entity[Writing]
|
|
|
|
|
del world[IsRunning]
|
|
|
|
|
|
|
|
|
|
# On verifie le mode de jeu actuel est le mode trichuer
|
|
|
|
|
if world[GameMode] == GameMode.CHEATER:
|
|
|
|
|
# on modifie le nombre en ajoutant un nombre de l'intervalle [-3, 3]
|
|
|
|
|
world[Number] += random.randint(-3, 3)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Definit la Scene "par defaut" qui contient l'entireté des 3 modes en fonction de GameMode
|
|
|
|
|
__SCENE = (
|
|
|
|
|
Scene(
|
|
|
|
|
[__initialize_world],
|
|
|
|
|
[],
|
|
|
|
|
[__key_check],
|
|
|
|
|
[],
|
|
|
|
|
)
|
|
|
|
|
+ writing.PLUGIN
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Crée le scene classique en fonction de la scene par defaut
|
|
|
|
|
CLASSIC = assets.loading_scene(
|
|
|
|
|
Plugin(
|
|
|
|
|
# Modifie le GameMode en CLASSIC a l'initialisation de la scene
|
|
|
|
|
[lambda world: world.set(GameMode.CLASSIC)],
|
|
|
|
|
[],
|
|
|
|
|
[],
|
|
|
|
|