Sauvegarde du 21/04/2020
This commit is contained in:
raphael60650 2020-04-21 16:35:17 +02:00
parent 22d7939ef8
commit ed1f7a18c3
3 changed files with 71 additions and 10 deletions

BIN
assets/icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -4,12 +4,16 @@ import os
import pickle import pickle
import json import json
import random import random
from PIL import Image, ImageTk
########## constante ########### ########## constante ###########
PATH_MODULE = "./module/" PATH_MODULE = "./module/"
PATH_ASSETS = "./assets/"
######## initialisation ######## ######## initialisation ########
Fen = Tk() Fen = Tk()
Fen.iconbitmap(PATH_ASSETS + "icon.ico")
Fen.title("Emulateur - Bombe")
classModule = {} # Dictionnaire qui va contenir tout les modules afin qu'ils puissent intéragir entre eux classModule = {} # Dictionnaire qui va contenir tout les modules afin qu'ils puissent intéragir entre eux
for file in os.listdir(PATH_MODULE): # On cherche les modules dans leur dossier for file in os.listdir(PATH_MODULE): # On cherche les modules dans leur dossier

View file

@ -15,8 +15,6 @@ class morse():
'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}
ABCDEFGHIJKLMNOPQRSTUVWXYZ
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":"-.",
@ -37,6 +35,9 @@ class morse():
self.SelectButton.grid(row = 2, column = 1) self.SelectButton.grid(row = 2, column = 1)
self.SelectFen = Toplevel() # Créer une fenêtre secondaire. self.SelectFen = Toplevel() # Créer une fenêtre secondaire.
self.SelectFen.iconbitmap(PATH_ASSETS + "icon.ico") # Change l'icone
self.SelectFen.title("Emulateur - Morse") # Change le titre
self.SelectFen.protocol('WM_DELETE_WINDOW', lambda: "pass") # Rend la fenêtre non fermable
self.HideSymbol() self.HideSymbol()
def start(self): def start(self):
@ -44,19 +45,75 @@ class morse():
self.SelectButton.config(command = self.ShowSymbol) self.SelectButton.config(command = self.ShowSymbol)
# mot à afficher en morse # mot à afficher en morse
def ShowSymbol(self): ######
Img_random = list(range(1, 13)) # On créer une liste allant de 1 à 12
random.shuffle(Img_random) # On la mélange
self.dico_PNG = {} # On créer un dico pour garder en mémoire toute les images
self.dico_But = {}
for index, Num_img in enumerate(Img_random): # On les affiches toutes dans des bouttons
self.dico_PNG[Num_img] = ImageTk.PhotoImage(Image.open(PATH_ASSETS + "morse/" + str(Num_img) + ".png"))
self.dico_But[Num_img] = Button(self.SelectFen, image = self.dico_PNG[Num_img], width = 200, height = 200, command = lambda x = Num_img: self.check(x))
self.dico_But[Num_img].grid(row = index // 3, column = index % 3)
self.SelectFen.update()
######
######
self.word = random.choice(list(self.MorseWordTable.keys())) # On prend un mot au pif dans la liste
List_letter = []
for Letter in self.word:
List_letter.append(self.MorseLetter[Letter])
self.word_morse = " ".join(List_letter)
######
self.LedMorse()
self.True_symbol = self.MorseWordTable[self.word]
def LedMorse(self, index = 0): # Responsable de l'affichage du mot en morse avec la LED
if index < len(self.word_morse):
if self.word_morse[index] == ".":
self.morse.config(background = "yellow")
Fen.after(250, lambda: self.morse.config(background = "lightgray"))
Fen.after(750, lambda: self.LedMorse(index + 1)) # 500 ms d'attente entre les signaux, plus les 250ms ou elle reste allumé afin de séparer les points et les virgules entre eux
elif self.word_morse[index] == "-":
self.morse.config(background = "yellow")
Fen.after(1000, lambda: self.morse.config(background = "lightgray"))
Fen.after(1500, lambda: self.LedMorse(index + 1))
elif self.word_morse[index] == " ":
Fen.after(2000, lambda: self.LedMorse(index + 1))
else:
Fen.after(4000, lambda: self.LedMorse(index = 0))
def ShowSymbol(self): # Affiche la fenêtre de sélection
self.SelectFen.deiconify() # Affiche la fenêtre de sélection self.SelectFen.deiconify() # Affiche la fenêtre de sélection
self.SelectButton.config(command = self.HideSymbol, text = "Cacher les cartes") self.SelectButton.config(command = self.HideSymbol, text = "Cacher les cartes")
def HideSymbol(self): def HideSymbol(self): # Affiche la fenêtre de sélection
self.SelectFen.withdraw() # Cache la fenêtre de sélection self.SelectFen.withdraw() # Cache la fenêtre de sélection
self.SelectButton.config(command = self.ShowSymbol, text = "Afficher les cartes") self.SelectButton.config(command = self.ShowSymbol, text = "Afficher les cartes")
classModule["morse"] = morse() def check(self, symbol_press):
if symbol_press == self.True_symbol:
self.defuse = True
for index in self.dico_But:
self.dico_But[index].config(command = lambda: "pass")
# 1 - Charger les images else:
# 2 - Afficher les images dans un ordre aléatoire (afin de ne pas avoir d'exploit avec leur position) pass
# 3 - Faire choisir un mot aléatoirement et l'afficher en morse # + pénalité
# 4 - Rendre la sélection des mots effectives
# 5 - Vérifier si le joueur à donné la bonne réponse
classModule["morse"] = morse()