diff --git a/README.md b/README.md index 539276c..797e441 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ # ISN-Projet-Emulateur Projet d'ISN de Raphaël Caron et Sebastian Zitouni. + +Plus d'information sur le wiki du projet : https://github.com/raphael60650/ISN-Projet-Emulateur/wiki diff --git a/assets/Manuel.pdf b/assets/Manuel.pdf new file mode 100644 index 0000000..33584ed Binary files /dev/null and b/assets/Manuel.pdf differ diff --git a/assets/morse/1.png b/assets/morse/1.png new file mode 100644 index 0000000..df3b2ac Binary files /dev/null and b/assets/morse/1.png differ diff --git a/assets/morse/10.png b/assets/morse/10.png new file mode 100644 index 0000000..b226312 Binary files /dev/null and b/assets/morse/10.png differ diff --git a/assets/morse/11.png b/assets/morse/11.png new file mode 100644 index 0000000..d9db7d7 Binary files /dev/null and b/assets/morse/11.png differ diff --git a/assets/morse/12.png b/assets/morse/12.png new file mode 100644 index 0000000..8c70e20 Binary files /dev/null and b/assets/morse/12.png differ diff --git a/assets/morse/2.png b/assets/morse/2.png new file mode 100644 index 0000000..12eba3d Binary files /dev/null and b/assets/morse/2.png differ diff --git a/assets/morse/3.png b/assets/morse/3.png new file mode 100644 index 0000000..d449be3 Binary files /dev/null and b/assets/morse/3.png differ diff --git a/assets/morse/4.png b/assets/morse/4.png new file mode 100644 index 0000000..a3c8c83 Binary files /dev/null and b/assets/morse/4.png differ diff --git a/assets/morse/5.png b/assets/morse/5.png new file mode 100644 index 0000000..917d628 Binary files /dev/null and b/assets/morse/5.png differ diff --git a/assets/morse/6.png b/assets/morse/6.png new file mode 100644 index 0000000..1adb8be Binary files /dev/null and b/assets/morse/6.png differ diff --git a/assets/morse/7.png b/assets/morse/7.png new file mode 100644 index 0000000..e41145a Binary files /dev/null and b/assets/morse/7.png differ diff --git a/assets/morse/8.png b/assets/morse/8.png new file mode 100644 index 0000000..d21a41e Binary files /dev/null and b/assets/morse/8.png differ diff --git a/assets/morse/9.png b/assets/morse/9.png new file mode 100644 index 0000000..3f479e1 Binary files /dev/null and b/assets/morse/9.png differ diff --git a/main.pyw b/main.pyw index 3a4920e..0613fba 100644 --- a/main.pyw +++ b/main.pyw @@ -49,10 +49,11 @@ class AppClass(): # Classe du "moteur" du jeu def start(self): + classModule["simon"].bind(UpCmd = "pass", DownCmd = "pass", LeftCmd = "pass", RightCmd = "pass") + for module in classModule: classModule[module].start() - classModule["simon"].bind(UpCmd = "pass", DownCmd = "pass", LeftCmd = "pass", RightCmd = "pass") # Initilisalisé tout les modules # Démmaré un chrono diff --git a/module/simon.py b/module/simon.py index 0a4425f..c9ae55a 100644 --- a/module/simon.py +++ b/module/simon.py @@ -45,15 +45,39 @@ class simon(): def start(self): + self.defuse = False # Le module n'est pas désamorçer. self.Sequence = [] - for _ in range(5): + self.MaxStep = 6 + for _ in range(self.MaxStep): self.Sequence.append(random.choice(["Up", "Left", "Right", "Down"])) - print(self.Sequence) - - self.Step = 4 + self.Step = 0 self.sequence_choice() + self.bind( + UpCmd = lambda: self.check(Button = "Up"), + LeftCmd = lambda: self.check(Button = "Left"), + RightCmd = lambda: self.check(Button = "Right"), + DownCmd = lambda: self.check(Button = "Down")) + + self.Sequence_Button = [] # Séquence de bouton sur lesquels le joueur vient de cliqué + + + def def_sequence(self): + Difficulty = App.config["Difficulté"]["Value"] # Difficulté du jeu + nomber_condition = len(self.rules[Difficulty]) + + 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_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 + 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 + def reset_all(self): self.dico_but["Up"].config(background = "lightgreen") @@ -75,15 +99,37 @@ class simon(): self.dico_but[self.Sequence_step].config(background = "yellow") else: - frame = 0 + frame = -1 Fen.after(1000, lambda: self.reset_all()) Fen.after(1500, lambda: self.sequence_choice(frame + 1)) - # frame désigne le bouton qui doit s'allumer pendant la séquence, à quel étape on en est + def check(self, Button): + self.Sequence_Button.append(Button) + Sequence_part = self.Sequence[:(self.Step + 1)] + + if len(self.Sequence_Button) >= len(Sequence_part): # Si le joueur a fait autant d'input qu'il y a de LED qui s'allument dans la séquence + + _Stop = False + for index in range(len(Sequence_part)): + if self.rules_sequence[Sequence_part[index]] != self.Sequence_Button[index]: + _Stop = True + + if not(_Stop): + self.Step += 1 + + else: + pass + # + Pénalité + + self.Sequence_Button = [] + + + if self.Step >= self.MaxStep - 1: # Si le joueur a atteint la dernière étape + self.defuse = True # la bombe est désamorçé. + self.bind(LeftCmd = lambda: "pass", RightCmd = lambda: "pass", UpCmd = lambda: "pass", DownCmd = lambda: "pass") - # Code qui choisi des combinaisons à rentré et des led qui s'allument diff --git a/module/wire.py b/module/wire.py index 0b39637..04efcda 100644 --- a/module/wire.py +++ b/module/wire.py @@ -62,6 +62,8 @@ class wire(): 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 + 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 + def cut_wire(self, led): #coupe les cables self.dico_wire[led]["WIRE"].config(command = lambda: "pass")