Sauvegarde du 22/04/2020
This commit is contained in:
raphael60650 2020-04-22 18:16:27 +02:00
parent ed1f7a18c3
commit 1dc79fe64b
9 changed files with 137 additions and 27 deletions

Binary file not shown.

Binary file not shown.

View file

@ -55,6 +55,8 @@ class AppClass(): # Classe du "moteur" du jeu
def start(self): def start(self):
classModule["simon"].bind(UpCmd = "pass", DownCmd = "pass", LeftCmd = "pass", RightCmd = "pass") classModule["simon"].bind(UpCmd = "pass", DownCmd = "pass", LeftCmd = "pass", RightCmd = "pass")
self.Life = self.config["Vie"]["Value"] # On initialise le nombre de vie comme indiqué dans les paramètres
for module in classModule: for module in classModule:
classModule[module].start() classModule[module].start()

View file

@ -1,5 +1,23 @@
class button(): class button():
def __init__(self): # Cette fonction est automatiquement éxécuter lors de la création de l'objet def __init__(self): # Cette fonction est automatiquement éxécuter lors de la création de l'objet
self.rules = {
"Facile": {
"Else": "None"
}, "Normal": {
"F Blink": "3 any",
"F Off": "7 any",
"F On": "0 any"
}, "Difficile": {
"D Blink": "3 any",
"A Off": "7 any",
"B On": "0 any",
"F Blink": "5 sec",
"B Blink": "5 sec",
"C On": "3 sec",
"Else": "None"
}
}
self.frame = LabelFrame(Fen, text = "Button") # On créer une sous-fenêtre self.frame = LabelFrame(Fen, text = "Button") # On créer une sous-fenêtre
self.frame.grid(row = 2, column = 3, sticky = "NEWS") # On l'affiche self.frame.grid(row = 2, column = 3, sticky = "NEWS") # On l'affiche
@ -9,8 +27,52 @@ class button():
def start(self): def start(self):
pass self.defuse = False
# déterminer les règles pour désamorçer self.big_but.config(command = self.check)
def def_condition(self):
Difficulty = App.config["Difficulté"]["Value"]
Condition = list(self.rules[Difficulty].keys())
for index in range(len(Condition)):
Condition_split = Condition[index].split(" ")
if Condition_split[0] != "Else": State_led = classModule["wire"].dico_wire[Condition_split[0]]["LIT"] # Si la condition n'est pas else, on récupère l'état de la LED
else: State_led = Condition_split[-1] # Sinon, on fait en sorte que la condition fonctionne obligatoirement.
if State_led == Condition_split[-1]:
self.rules_chrono = self.rules[Difficulty][Condition[index]]
break
def check(self):
second = classModule["display"].second
minute = classModule["display"].minute
rules_chrono_split = self.rules_chrono.split(" ")
_Stop = False
if rules_chrono_split[0] != "None":
if rules_chrono_split[1] == "any":
if not(rules_chrono_split[0] in str(minute) + str(second)):
_Stop = True
if rules_chrono_split[1] == "sec":
if not(rules_chrono_split[0] in str(second)[-1]):
_Stop = True
if not(_Stop):
self.defuse = True
classModule["display"].checkDefuse()
else:
classModule["display"].PenalityLife()
classModule["button"] = button() classModule["button"] = button()
# 2 - Le bouton doit être relié à la fonction "check"
# 3 - On vérifie que la condition est respecté

View file

@ -12,19 +12,61 @@ class display():
self.label.config(text = text) self.label.config(text = text)
def chrono(self, time): def chrono(self):
minute = time // 60 self.time -= 1
seconde = time % 60 self.minute = self.time // 60
self.second = self.time % 60
self.write("%02i:%02i" % (minute, seconde)) if self.PenalityAnimation: # Si le joueur vient de se trompé
self.PenalityAnimation = False
self.write("/!\\ Erreur /!\\\nVie restante : %i" % App.Life)
self.chrono_event = Fen.after(1000, lambda: self.chrono(time - 1)) elif self.DefuseAnimation: # Si le joueur vient de désamorçé tout le module
self.DefuseAnimation = False
self.write("Module désamorcé !")
else:
self.write("%02i:%02i" % (self.minute, self.second))
if self.time > 0:
self.chrono_event = Fen.after(1000, self.chrono)
else: self.Lose() # Perdu par manque de temps
def start(self): def start(self):
self.chrono(time = 180) self.PenalityAnimation = False
# rien de spécial self.DefuseAnimation = False
# peut être chrono self.time = 181 # En lanceant le chrono, une seconde est immédiatement supprimée
self.chrono()
def checkDefuse(self):
self.time += App.config["Bonus de temps"]["Value"]
_Stop = False
for module in classModule:
if classModule[module].defuse == False:
_Stop = True
if not(_Stop): # Si tout les modules sont désamorcé
Fen.after_cancel(self.chrono_event) # On désactive le chrono
self.write(random.choice(["GG", "Bravo", "Félicitation"]))
else:
self.DefuseAnimation = True
def PenalityLife(self):
App.Life -= 1
self.PenalityAnimation = True
if App.Life <= 0:
self.Lose()
def Lose(self):
Fen.after_cancel(self.chrono_event) # On désactive le chrono
self.write(random.choice(["Perdu", "Dommage", "Try again"]))
# Réitialiser tout les modules
classModule["display"] = display() classModule["display"] = display()

View file

@ -1,5 +1,5 @@
class morse(): class morse():
def __init__(self): # Cette fonction est automatiquement éxécuter lors de la création de l'objetself.Complete = False def __init__(self): # Cette fonction est automatiquement éxécuter lors de la création de l'objet
self.PATH_SYMBOL = "./assets/morse/" self.PATH_SYMBOL = "./assets/morse/"
self.MorseWordTable = { self.MorseWordTable = {
'ABSTRAIT': 3, 'BAIGNER': 9, 'CACHOT': 10, 'DALLE': 2, 'ERREUR': 11, 'FLEUR': 6, 'ABSTRAIT': 3, 'BAIGNER': 9, 'CACHOT': 10, 'DALLE': 2, 'ERREUR': 11, 'FLEUR': 6,
@ -13,13 +13,15 @@ class morse():
'CUIVRE': 3, 'DORMIR': 2, 'EFFECTIF': 8, 'FABULEUX': 3, 'GRANDE': 12, 'HAUTEUR': 7, 'CUIVRE': 3, 'DORMIR': 2, 'EFFECTIF': 8, 'FABULEUX': 3, 'GRANDE': 12, 'HAUTEUR': 7,
'IDEE': 7, 'JOIE': 12, 'KOALA': 6, 'LOUP': 4, 'MOUCHE': 1, 'NOUS': 9, 'ORANGE': 11, 'IDEE': 7, 'JOIE': 12, 'KOALA': 6, 'LOUP': 4, 'MOUCHE': 1, 'NOUS': 9, 'ORANGE': 11,
'POULET': 8, 'QUICHE': 6, 'RITUEL': 12, 'SAUCE': 10, 'TUILE': 9, 'UTILE': 2, 'POULET': 8, 'QUICHE': 6, 'RITUEL': 12, 'SAUCE': 10, 'TUILE': 9, 'UTILE': 2,
'VICTOIRE': 11, 'WEEKEND': 9, 'XENOPHOBE': 5, 'YOGA': 2, 'ZEN': 9} 'VICTOIRE': 11, 'WEEKEND': 9, 'XENOPHOBE': 5, 'YOGA': 2, 'ZEN': 9
}
self.MorseLetter = { self.MorseLetter = {
"A": ".-", "B":"-...", "C":"-.-.", "D":"-..", "E":".", "F":"..-.", "G":"--.", "A": ".-", "B":"-...", "C":"-.-.", "D":"-..", "E":".", "F":"..-.", "G":"--.",
"H":"....", "I":"..", "J":".---", "K":"-.-", "L":"--.", "M":"--", "N":"-.", "H":"....", "I":"..", "J":".---", "K":"-.-", "L":"--.", "M":"--", "N":"-.",
"O":"---", "P":".--.", "Q":"--.-", "R":".-.", "S":"...", "T":"-", "U":"..-", "O":"---", "P":".--.", "Q":"--.-", "R":".-.", "S":"...", "T":"-", "U":"..-",
"V":"...-", "W":".--", "X":"-..-", "Y":"-.--", "Z":"--.."} "V":"...-", "W":".--", "X":"-..-", "Y":"-.--", "Z":"--.."
}
self.frame = LabelFrame(Fen, text = "Morse") # On créer une sous-fenêtre self.frame = LabelFrame(Fen, text = "Morse") # On créer une sous-fenêtre
self.frame.grid(row = 2, column = 2, sticky = "NEWS") # On l'affiche self.frame.grid(row = 2, column = 2, sticky = "NEWS") # On l'affiche
@ -107,12 +109,12 @@ class morse():
def check(self, symbol_press): def check(self, symbol_press):
if symbol_press == self.True_symbol: if symbol_press == self.True_symbol:
self.defuse = True self.defuse = True
classModule["display"].checkDefuse()
for index in self.dico_But: for index in self.dico_But:
self.dico_But[index].config(command = lambda: "pass") self.dico_But[index].config(command = lambda: "pass")
else: else:
pass classModule["display"].PenalityLife()
# + pénalité

View file

@ -71,12 +71,12 @@ class safe():
self.Step += 1 self.Step += 1
if self.Step >= Step_max: # Si à la dernière étape if self.Step >= Step_max: # Si à la dernière étape
self.defuse = True self.defuse = True
print("DEFUSER") classModule["display"].checkDefuse()
else: else:
self.zone_choice() self.zone_choice()
else: print("FAUX") else:
# +pénaliter si le nombre d'erreur autorisé est atteint donc enlever une vie classModule["display"].PenalityLife()

View file

@ -70,12 +70,12 @@ class simon():
for index in range(nomber_condition): # boucle pour tester toute les conditions for index in range(nomber_condition): # boucle pour tester toute les conditions
Condition = list(self.rules[Difficulty].keys())[index] # Condition pour utiliser le réarangement des touches Condition = list(self.rules[Difficulty].keys())[index] # Condition pour utiliser le réarangement des touches
Condition_split = Condition.split(" ") Condition_split = Condition.split(" ")
if Condition_split[0] != "Else": State_led = classModule["wire"].dico_wire[Condition_split[0]]["LIT"]
if (State_led == Condition_split[-1]) or (Condition_split[0] == "Else"): # regarder si le sconditon est bonne avec les LED if Condition_split[0] != "Else": State_led = classModule["wire"].dico_wire[Condition_split[0]]["LIT"]
else: State_led = Condition_split[-1]
if (State_led == Condition_split[-1]): # regarder si le condition est bonne avec les LED
self.rules_sequence = self.rules[Difficulty][Condition] # difinition de la bonne séquence self.rules_sequence = self.rules[Difficulty][Condition] # difinition de la bonne séquence
print(self.rules_sequence)
print(Condition)
break # On arrête la boucle car on a trouvé ce que l'on cherchait break # On arrête la boucle car on a trouvé ce que l'on cherchait
@ -120,14 +120,14 @@ class simon():
self.Step += 1 self.Step += 1
else: else:
pass classModule["display"].PenalityLife()
# + Pénalité
self.Sequence_Button = [] self.Sequence_Button = []
if self.Step >= self.MaxStep - 1: # Si le joueur a atteint la dernière étape if self.Step >= self.MaxStep - 1: # Si le joueur a atteint la dernière étape
self.defuse = True # la bombe est désamorçé. self.defuse = True # la bombe est désamorçé.
classModule["display"].checkDefuse()
self.bind(LeftCmd = lambda: "pass", RightCmd = lambda: "pass", UpCmd = lambda: "pass", DownCmd = lambda: "pass") self.bind(LeftCmd = lambda: "pass", RightCmd = lambda: "pass", UpCmd = lambda: "pass", DownCmd = lambda: "pass")

View file

@ -62,7 +62,8 @@ class wire():
self.wrong_cut = 0 # Compte le nombre de fils que le joueur n'aurait dû pas coupé avant self.wrong_cut = 0 # Compte le nombre de fils que le joueur n'aurait dû pas coupé avant
self.check(penality = False) # On compte le nombre de fil à corrigé pour les pénalités plus tard self.check(penality = False) # On compte le nombre de fil à corrigé pour les pénalités plus tard
classModule["simon"].def_sequence() # Puisque le module "simon" a besoin de l'état des LEDs pour fonctionner, on l'éxécute après leur définition if "simon" in classModule: classModule["simon"].def_sequence() # Puisque le module "simon" a besoin de l'état des LEDs pour fonctionner, on l'éxécute après leur définition
if "button" in classModule: classModule["button"].def_condition() # Puisque le module "button" a besoin de l'état des LEDs pour fonctionner, on l'éxécute après leur définition
def cut_wire(self, led): #coupe les cables def cut_wire(self, led): #coupe les cables
@ -96,11 +97,12 @@ class wire():
if penality: # Si on compte les pénalité, alors on fait ces calculs if penality: # Si on compte les pénalité, alors on fait ces calculs
if self.wire_errorTotalBefore - self.wire_errorTotal == -1: # Si le fil à mal été coupé if self.wire_errorTotalBefore - self.wire_errorTotal == -1: # Si le fil à mal été coupé
self.wrong_cut += 1 self.wrong_cut += 1
# + Rajouter +1 sur le compteur classModule["display"].PenalityLife()
if self.wire_errorTotal - self.wrong_cut == 0: # Si le joueur à tout désamorçer, en comptant les fils qu'ils n'auraient pas du coupé if self.wire_errorTotal - self.wrong_cut == 0: # Si le joueur à tout désamorçer, en comptant les fils qu'ils n'auraient pas du coupé
self.defuse = True self.defuse = True
classModule["display"].checkDefuse()
for led in self.dico_wire: # On rend les câbles insécable de nouveau pour évité une nouvelle erreur for led in self.dico_wire: # On rend les câbles insécable de nouveau pour évité une nouvelle erreur
self.dico_wire[led]["WIRE"].config(command = lambda: "pass") self.dico_wire[led]["WIRE"].config(command = lambda: "pass")
# + Rajouter le bonus de temps # + Rajouter le bonus de temps