diff --git a/GestionDes.py b/GestionDes.py index 2a4d39e..ccf56bf 100644 --- a/GestionDes.py +++ b/GestionDes.py @@ -3,8 +3,8 @@ from time import sleep import random -TypeDeDes = 6 # variable globale -NbredeDes = 1 +TypeDeDes = 0 # variables globales +NbredeDes = 0 def quitter(): # création d'une fonction pour quitter @@ -12,15 +12,12 @@ def quitter(): # création d'une fonction pour quitter fenetreMenu = tk.CTk() # définition des caractéristiques de la fenêtre fenetreMenu.title("Menu principal") -fenetreMenu.geometry("400x400") +fenetreMenu.geometry("400x600") label = tk.CTkLabel(fenetreMenu, text="Lancez les dés", font=('Arial',22)) # crée du texte label.pack(pady=5) -# label.pack(padx=10, pady=10) # padx, pady, ajoute des pixel entre widget - # Création des boutons - cadreFormatDe=tk.CTkFrame(fenetreMenu) # création d'un cadre pour facilité la disposition cadreFormatDe.pack(side=tk.TOP, anchor=tk.CENTER, pady=10) @@ -30,18 +27,20 @@ for i in [4, 6, 8, 10, 12, 20] : button.pack(side=tk.LEFT, padx=1, pady=1) #expand=True, fill=tk.X, anchor=tk.CENTER DicoBoutons[i] = button -def clic4 (): +def clic4 (): # fonction de l'action sur le bouton (choix du type de dé) print("D4") - for i in [4, 6, 8, 10, 12, 20] : - DicoBoutons[i].configure(fg_color="blue") - DicoBoutons[4].configure(fg_color="red") - TypeDeDes = 4 + for i in [4, 6, 8, 10, 12, 20] : # boucle qui change la couleur de tous les boutons + DicoBoutons[i].configure(fg_color="blue") # pour réinitialisé en bleu + DicoBoutons[4].configure(fg_color="red") # changement de la couleur en rouge pour visualisé sur la fenêtre + global TypeDeDes # indique l'utilisation d'une variable global (sinon la variable sera redéfini en local) + TypeDeDes = 4 # affectation du type de dé def clic6 (): print("D6") for i in [4, 6, 8, 10, 12, 20] : DicoBoutons[i].configure(fg_color="blue") DicoBoutons[6].configure(fg_color="red") + global TypeDeDes TypeDeDes = 6 @@ -50,6 +49,7 @@ def clic8 (): for i in [4, 6, 8, 10, 12, 20] : DicoBoutons[i].configure(fg_color="blue") DicoBoutons[8].configure(fg_color="red") + global TypeDeDes TypeDeDes = 8 def clic10 (): @@ -57,6 +57,7 @@ def clic10 (): for i in [4, 6, 8, 10, 12, 20] : DicoBoutons[i].configure(fg_color="blue") DicoBoutons[10].configure(fg_color="red") + global TypeDeDes TypeDeDes = 10 def clic12 (): @@ -64,6 +65,7 @@ def clic12 (): for i in [4, 6, 8, 10, 12, 20] : DicoBoutons[i].configure(fg_color="blue") DicoBoutons[12].configure(fg_color="red") + global TypeDeDes TypeDeDes = 12 def clic20 (): @@ -71,10 +73,9 @@ def clic20 (): for i in [4, 6, 8, 10, 12, 20] : DicoBoutons[i].configure(fg_color="blue") DicoBoutons[20].configure(fg_color="red") + global TypeDeDes TypeDeDes = 20 - - DicoBoutons[4].configure(command=clic4) DicoBoutons[6].configure(command=clic6) DicoBoutons[8].configure(command=clic8) @@ -82,54 +83,85 @@ DicoBoutons[10].configure(command=clic10) DicoBoutons[12].configure(command=clic12) DicoBoutons[20].configure(command=clic20) - # print(DicoBoutons) #print de controle - labelerreur = tk.CTkLabel(fenetreMenu) def recup_NbreDes(): + + entierNDD = 0 labelerreur.pack_forget() + global NbredeDes NbredeDes = entryNbreDes.get() try: - nombre_entier = int(NbredeDes) - print("Nombre entier saisi :", nombre_entier) + entierNDD = int(NbredeDes) + print("Nombre entier saisi :", entierNDD) - - #labelerreur.configure_forget() - # Vous pouvez utiliser 'nombre_entier' comme vous le souhaitez ici except ValueError: labelerreur.configure(fenetreMenu, text="Veuillez saisir un nombre entier valide.", font=('Arial',20)) # crée du texte (label) labelerreur.pack() - - resultatDe = 0 - nombreDeDe = nombre_entier typeDeDe = TypeDeDes - print(typeDeDe , nombreDeDe) + print(typeDeDe , entierNDD) # print de vérif des données - # listeResultat = [0] # création d'une liste pour stocker le nombre de résultats par valeur - # for i in range(1,typeDeDe) : - # listeResultat.append(0) + listeResultat = [0] # création d'une liste pour stocker le nombre de résultats par valeur + for i in range(1,typeDeDe) : # boucle d'ajout d'un élément à la liste + listeResultat.append(0) - # i = 1 # variable d'incrémentation - # while( i <= nombreDeDe ) : #boucle de lancer de dés et stockage des résultats par valeur - # resultatDe = random.randint(1,typeDeDe) - # listeResultat[resultatDe-1] += 1 + i = 1 # variable d'incrémentation + while( i <= entierNDD ) : # boucle de lancer de dés et stockage des résultats par valeur + resultatDe = random.randint(1,typeDeDe) + listeResultat[resultatDe-1] += 1 + i+=1 + + listeReussite = [0] # création d'un tableau de réussite + for i in range(1,typeDeDe) : # boucle d'ajout d'un élément au tableau + listeReussite.append(0) + + for i in range(0,typeDeDe) : + for u in range(i,typeDeDe) : # boucle de remplissage du tableau des réussites + listeReussite[i] = listeReussite[i] + listeResultat[u] + print(listeResultat) # print de contrôle du tableau des résultat de lancer + print(listeReussite) # print de contrôle du tableau des réussites - # listeReussite = [0] - # for i in range(1,typeDeDe) : - # listeReussite.append(0) + # Supprimer les anciens résultats s'il y en a + effacer_resultats() - # for i in range(0,typeDeDe) : - - # for u in range(i,typeDeDe) : - # listeReussite[i] = listeReussite[i] + listeResultat[u] - # print(listeResultat) - # print(listeReussite) + # Afficher les résultats dans une grille + #label_titre = tk.Label(fenetreMenu, text="Résultats des lancers de dé") + #label_titre.grid(row=0, column=0, columnspan=2) + + # Afficher les en-têtes des colonnes + label_valeur = tk.CTkLabel(cadreAffResultat, text="Face du dé") + label_valeur.grid(row=1, column=0,padx=5, ) + + label_occurrences = tk.CTkLabel(cadreAffResultat, text="Occurrences") + label_occurrences.grid(row=1, column=1 ,padx=5, ) + + label_Reussites = tk.CTkLabel(cadreAffResultat, text="Réussites") + label_Reussites.grid(row=1, column=2,padx=5, ) + + # Afficher chaque valeur de dé et son nombre d'occurrences + for i in range(1,typeDeDe+1) : + + label_valeur = tk.CTkLabel(cadreAffResultat, text=str(i)) + label_valeur.grid(row=i+1, column=0 ) + + label_occurrences = tk.CTkLabel(cadreAffResultat, text=str(listeResultat[i-1])) + label_occurrences.grid(row=i+1, column=1 ) + + label_Reussites = tk.CTkLabel(cadreAffResultat, text=str(listeReussite[i-1])) + label_Reussites.grid(row=i+1, column=2 ) + + + +def effacer_resultats(): + # Supprimer tous les widgets + for widget in cadreAffResultat.winfo_children() : + widget.grid_forget() cadreNbreDe=tk.CTkFrame(fenetreMenu) # création d'un cadre pour le nombre de dés @@ -140,16 +172,12 @@ entryNbreDes = tk.CTkEntry(cadreNbreDe, width=50) # crée une zone de saisi entryNbreDes.pack(side=tk.LEFT,padx=5) # définition des caractéristiques de la zone de saisie BoutonOK = tk.CTkButton(cadreNbreDe,text = "OK", width=40, command=recup_NbreDes ) BoutonOK.pack(side=tk.LEFT) +cadreAffResultat = tk.CTkFrame(fenetreMenu) +cadreAffResultat.pack() - - # labelresult = tk.CTkLabel( fenetreMenu , text="essai resultat") - # labelresult.pack() - - - cadreQuit=tk.CTkFrame(fenetreMenu) # création d'un cadre pour facilité la disposition cadreQuit.pack(fill=tk.X, side=tk.BOTTOM, anchor=tk.CENTER, pady=15) # fill permet l'allongemment button = tk.CTkButton(cadreQuit, text="QUITTER", command=quitter) # création d'un bouton pour fermer diff --git a/essaiGPTaff.py b/essaiGPTaff.py new file mode 100644 index 0000000..895d55a --- /dev/null +++ b/essaiGPTaff.py @@ -0,0 +1,31 @@ +import tkinter as tk + +# Fonction pour afficher les résultats +def afficher_resultats(): + # Supprimer les anciens résultats s'il y en a + effacer_resultats() + + # Supposons que vous ayez des résultats dans une liste + resultats = ["Résultat 1", "Résultat 2", "Résultat 3"] + + # Afficher chaque résultat dans un label + for i, resultat in enumerate(resultats): + label_resultat = tk.Label(fenetre, text=resultat) + label_resultat.pack() + +# Fonction pour effacer les résultats précédents +def effacer_resultats(): + # Supprimer tous les labels précédents + for widget in fenetre.winfo_children(): + if isinstance(widget, tk.Label): + widget.pack_forget() + +# Interface graphique +fenetre = tk.Tk() +fenetre.title("Affichage de résultats") + +# Bouton pour afficher les résultats +bouton_afficher_resultats = tk.Button(fenetre, text="Afficher les résultats", command=afficher_resultats) +bouton_afficher_resultats.pack(pady=10) + +fenetre.mainloop() \ No newline at end of file diff --git a/gptafficheresultat.py b/gptafficheresultat.py new file mode 100644 index 0000000..ee41ac3 --- /dev/null +++ b/gptafficheresultat.py @@ -0,0 +1,76 @@ +import tkinter as tk +import random + +def lancer_des(nombre_lancers, nombre_faces): + # Initialiser un dictionnaire pour compter le nombre d'occurrences de chaque valeur de dé + resultat_lancers = {i+1: 0 for i in range(nombre_faces)} + + # Effectuer les lancers de dé et compter les occurrences de chaque valeur + for _ in range(nombre_lancers): + valeur = random.randint(1, nombre_faces) + resultat_lancers[valeur] += 1 + + # Calculer la somme des occurrences pour les valeurs supérieures à la moyenne + somme_occurrences_sup_moyenne = sum(occurrences for valeur, occurrences in resultat_lancers.items() if valeur > (nombre_faces / 2)) + + # Afficher les résultats dans la fenêtre Tkinter + afficher_resultats(resultat_lancers, somme_occurrences_sup_moyenne) + +def afficher_resultats(resultat_lancers, somme_occurrences_sup_moyenne): + # Supprimer les anciens résultats s'il y en a + effacer_resultats() + + # Afficher les résultats dans une grille + label_titre = tk.Label(fenetre, text="Résultats des lancers de dé") + label_titre.grid(row=0, column=0, columnspan=2) + + # Afficher les en-têtes des colonnes + label_valeur = tk.Label(fenetre, text="Valeur du dé") + label_valeur.grid(row=1, column=0) + + label_occurrences = tk.Label(fenetre, text="Occurrences") + label_occurrences.grid(row=1, column=1) + + # Afficher chaque valeur de dé et son nombre d'occurrences + for i, (valeur, occurrences) in enumerate(resultat_lancers.items(), start=2): + label_valeur = tk.Label(fenetre, text=str(valeur)) + label_valeur.grid(row=i, column=0) + + label_occurrences = tk.Label(fenetre, text=str(occurrences)) + label_occurrences.grid(row=i, column=1) + + # Afficher la somme des occurrences pour les valeurs supérieures à la moyenne + label_somme = tk.Label(fenetre, text="Somme occurrences (valeurs supérieures à la moyenne)") + label_somme.grid(row=i+1, column=0, columnspan=2) + + label_somme_occurrences = tk.Label(fenetre, text=str(somme_occurrences_sup_moyenne)) + label_somme_occurrences.grid(row=i+2, column=0, columnspan=2) + +def effacer_resultats(): + # Supprimer tous les widgets dans la fenêtre (sauf l'entrée et le bouton) + for widget in fenetre.winfo_children(): + if widget not in [entree_lancers, entree_faces, bouton_lancer]: + widget.grid_forget() + +# Interface graphique +fenetre = tk.Tk() +fenetre.title("Lancers de dés") + +# Entrées pour le nombre de lancers et le nombre de faces du dé +entree_lancers = tk.Entry(fenetre, width=10) +entree_lancers.grid(row=0, column=0, padx=5, pady=5) + +label_lancers = tk.Label(fenetre, text="Nombre de lancers") +label_lancers.grid(row=0, column=1, padx=5, pady=5) + +entree_faces = tk.Entry(fenetre, width=10) +entree_faces.grid(row=1, column=0, padx=5, pady=5) + +label_faces = tk.Label(fenetre, text="Nombre de faces du dé") +label_faces.grid(row=1, column=1, padx=5, pady=5) + +# Bouton pour lancer les dés +bouton_lancer = tk.Button(fenetre, text="Lancer les dés", command=lambda: lancer_des(int(entree_lancers.get()), int(entree_faces.get()))) +bouton_lancer.grid(row=2, column=0, columnspan=2, pady=10) + +fenetre.mainloop() \ No newline at end of file