Compare commits

..

No commits in common. "8cb94603d2546503fca9aae68759781143d7c848" and "30a5b88c6c5ec46afc7bcd5836c6fced59b7db36" have entirely different histories.

5 changed files with 14 additions and 323 deletions

View File

@ -1,191 +1,40 @@
import customtkinter as tk # import de la bibliothèque interface graphique "as tk" : on remplace customtkinter par tk import customtkinter as tk # import de la bibliothèque interface graphique "as tk" : on remplace customtkinter par tk
from time import sleep
import random
TypeDeDes = 0 # variables globales
NbredeDes = 0
def quitter(): # création d'une fonction pour quitter def quitter(): # création d'une fonction pour quitter
fenetreMenu.destroy() # destroy = fonction qui arrête tout fenetreMenu.destroy() # destroy = fonction qui arrête tout
fenetreMenu = tk.CTk() # définition des caractéristiques de la fenêtre fenetreMenu = tk.CTk() # définition des caractéristiques de la fenêtre
fenetreMenu.title("Menu principal") fenetreMenu.title("Menu principal")
fenetreMenu.geometry("400x600") fenetreMenu.geometry("400x400")
label = tk.CTkLabel(fenetreMenu, text="Lancez les dés", font=('Arial',22)) # crée du texte label = tk.CTkLabel(fenetreMenu, text="Lancez les dés", font=('Arial',22)) # crée du texte
label.pack(pady=5) 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=tk.CTkFrame(fenetreMenu) # création d'un cadre pour facilité la disposition
cadreFormatDe.pack(side=tk.TOP, anchor=tk.CENTER, pady=10) cadreFormatDe.pack(side=tk.TOP, anchor=tk.CENTER, pady=10)
DicoBoutons = {} # création d'un Dico pour distingués les boutons
for i in [4, 6, 8, 10, 12, 20] : for i in [4, 6, 8, 10, 12, 20] :
button = tk.CTkButton(cadreFormatDe, text= f"D{i}", hover=False, width=50) # création d'un bouton button = tk.CTkButton(cadreFormatDe, text= f"D{i}", width=3) # création d'un bouton
button.pack(side=tk.LEFT, padx=1, pady=1) #expand=True, fill=tk.X, anchor=tk.CENTER button.pack(side=tk.LEFT, padx=5, pady=5, expand=True, fill=tk.X, ipadx=5, anchor=tk.CENTER)
DicoBoutons[i] = button
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] : # 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
def clic8 ():
print("D8")
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 ():
print("D10")
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 ():
print("D12")
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 ():
print("D20")
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)
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:
entierNDD = int(NbredeDes)
print("Nombre entier saisi :", entierNDD)
except ValueError:
labelerreur.configure(fenetreMenu, text="Veuillez saisir un nombre entier valide.", font=('Arial',20)) # crée du texte (label)
labelerreur.pack()
resultatDe = 0
typeDeDe = TypeDeDes
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) : # boucle d'ajout d'un élément à la liste
listeResultat.append(0)
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
# Supprimer les anciens résultats s'il y en a
effacer_resultats()
# 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
cadreNbreDe.pack(side=tk.TOP, pady=10) # définition du cadre
label = tk.CTkLabel(cadreNbreDe, text="Nombre de dés", font=('Arial',20)) # crée du texte (label)
label.pack(side=tk.LEFT, padx=10) # définition des caractéristiques du label
entryNbreDes = tk.CTkEntry(cadreNbreDe, width=50) # crée une zone de saisie
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()
cadreNbreDe=tk.CTkFrame(fenetreMenu)
cadreNbreDe.pack(side=tk.TOP, pady=10)
label = tk.CTkLabel(cadreNbreDe, text="Nombre de dés", font=('Arial',20)) # crée du texte
label.pack(side=tk.LEFT, padx=10)
entryNbreDe = tk.CTkEntry(cadreNbreDe, width=50) # crée une zone de saisie
entryNbreDe.pack(side=tk.LEFT,padx=5)
cadreQuit=tk.CTkFrame(fenetreMenu) # création d'un cadre pour facilité la disposition 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 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 button = tk.CTkButton(cadreQuit, text="QUITTER", command=quitter) # création d'un bouton pour fermer
button.pack(side=tk.BOTTOM, pady=15) # side=tk.BOTTOM est utilisé pour ancrer vers le bas : indiquer celui qui est plus bas en premier button.pack(side=tk.BOTTOM, pady=15) # side=tk.BOTTOM est utilisé pour ancrer vers le bas : indiquer celui qui est plus bas en premier
entry = tk.CTkEntry(fenetreMenu, width=250) # crée une zone de saisie
# entry = tk.CTkEntry(fenetreMenu, width=250) # crée une zone de saisie entry.pack(side=tk.BOTTOM,)
# entry.pack(side=tk.BOTTOM,)
fenetreMenu.mainloop() fenetreMenu.mainloop()

View File

@ -1,23 +0,0 @@
import tkinter as tk
def recupere_valeur():
valeur_saisie = entree.get()
try:
nombre_entier = int(valeur_saisie)
print("Nombre entier saisi :", nombre_entier)
# Vous pouvez utiliser 'nombre_entier' comme vous le souhaitez ici
except ValueError:
print("Veuillez saisir un nombre entier valide.")
fenetre = tk.Tk()
fenetre.title("Exemple de zone de saisie")
# Créer la zone de saisie
entree = tk.Entry(fenetre)
entree.pack(pady=10)
# Créer un bouton pour récupérer la valeur
bouton = tk.Button(fenetre, text="Récupérer la valeur", command=recupere_valeur)
bouton.pack()
fenetre.mainloop()

View File

@ -1,31 +0,0 @@
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()

View File

@ -1,28 +0,0 @@
import tkinter as tk
def recupere_valeur():
valeur_saisie = entree.get()
try:
nombre_entier = int(valeur_saisie)
print("Nombre entier saisi :", nombre_entier)
# Vous pouvez utiliser 'nombre_entier' comme vous le souhaitez ici
except ValueError:
# Afficher un message d'erreur dans le label
message_label.config(text="Veuillez saisir un nombre entier valide.")
fenetre = tk.Tk()
fenetre.title("Exemple de zone de saisie")
# Créer la zone de saisie
entree = tk.Entry(fenetre)
entree.pack(pady=10)
# Créer un bouton pour récupérer la valeur
bouton = tk.Button(fenetre, text="Récupérer la valeur", command=recupere_valeur)
bouton.pack()
# Créer un label pour afficher les messages
message_label = tk.Label(fenetre, text="Entrez un nombre entier.")
message_label.pack()
fenetre.mainloop()

View File

@ -1,76 +0,0 @@
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()