diff --git a/ARE-DYNAMIC.py b/ARE-DYNAMIC.py index 70d0ce7..d163c3f 100644 --- a/ARE-DYNAMIC.py +++ b/ARE-DYNAMIC.py @@ -21,6 +21,8 @@ import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import matplotlib.animation as animation +from tkinter import * +from tkinter.ttk import * ###################### ### Variables Globales @@ -73,6 +75,37 @@ ListePourcents = list() #Couleurs des Stratégies CouleursStrat=['b','r','black','g','purple'] +# Fonction pour le GUI +def saisir_les_pourcentages(): + """ + S'il y a eu clic sur le bouton du + type 4, affiche 5 entry box pour + saisir les pourcentages voulus + """ + Label(fenetre, text="% stratégie0:").grid(row=9, column =0) + per0=IntVar() + Entry(fenetre, textvariable=per0, width=3).grid(row=9, column=1) + + Label(fenetre, text ="% stratégie1:").grid(row=10, column=0) + per1 =IntVar() + Entry(fenetre, textvariable=per1, width=3).grid(row=10, column=1) + + Label(fenetre, text ="% stratégie2:").grid(row=11, column=0) + per2 =IntVar() + Entry(fenetre, textvariable=per2, width=3).grid(row=11, column=1) + + Label(fenetre, text ="% stratégie3:").grid(row=12, column=0) + per3 =IntVar() + Entry(fenetre, textvariable=per3, width=3).grid(row=12, column=1) + + Label(fenetre, text ="% stratégie4:").grid(row=13, column=0) + per4 =IntVar() + Entry(fenetre, textvariable=per4, width=3).grid(row=13, column=1) + + global ListePourcents + ListePourcents=[per0.get(), per1.get(), per2.get(), per3.get(), per4.get()] + + """ Types: @@ -214,7 +247,7 @@ def matrice_init_meme_strat(): Index: 0 Crée la matrice des joueurs où chacun a la même stratégie - mais commence avec des statuts différents, générés aléatoirement + mais commence avec des états différents, générés aléatoirement """ histo_strat = [StratParDefaut] @@ -438,6 +471,80 @@ def strat_principal_adversaire(joueur, adversaire): else: return 0 +###################### +#INTERFACE GRAPHIQUE UTILISATEUR (GUI) +###################### +# Fonctions pour command +###################### + + +# Initialise la fenetre principale +fenetre=Tk() +# Taille en abscisse de la matrice +X=IntVar(fenetre) + +# Taille en ordonnée de la matrice +Y=IntVar(fenetre) + +# Strategie definie pour le type 1 +Strat=IntVar(fenetre) + +# Type de matrice selectionné par l'user +Var_choix=IntVar(fenetre) + +# Nombre d'itérations maximum +It=IntVar(fenetre) + +def affichage_combobox(): + """ + S'il y a eu clic sur le bouton, + on affiche un combobox pour selectionner + la stratégie par défaut voulue + """ + global Strat + Label(fenetre, text="Stratégie n°").grid(row=5, column=0, sticky=E) + Combobox(fenetre, textvariable=Strat, values=(0, 1, 2, 3, 4), width=3).grid(row=5, column=1, sticky=W) + +def Interface(): + """ + Affiche l'interface graphique utilisateur + qui permet de saisir les paramètres de la + simulation + """ + + global X + global Y + global Var_choix + global Vitesse + + + Label(fenetre, text = "Paramétrage des variables").grid(row = 0, columnspan = 2) + Label(fenetre, text = "Saisir la taille de la matrice souhaitée:").grid(row=1, columnspan = 2) + Label(fenetre, text = "X =").grid(row = 2, column = 0, sticky=E) + Entry(fenetre, textvariable = X, width = 3).grid(row = 2, column = 1, sticky = W) + + Label(fenetre, text = "Y =").grid(row=3, sticky = E, column=0) + Entry(fenetre, textvariable=Y, width=3).grid(row=3, column=1, sticky = W) + + Label(fenetre, text="Choisir le type de la matrice initiale:").grid(row=4, columnspan = 2) + + + Radiobutton(fenetre, text="Type 1", variable=Var_choix, value=0, command=affichage_combobox).grid(row=5, sticky=W) + Radiobutton(fenetre, text="Type 2", variable=Var_choix, value=1, command=affichage_combobox).grid(row=6, sticky=W) + Radiobutton(fenetre, text="Type 3", variable=Var_choix, value=2, command=affichage_combobox).grid(row=7, sticky=W) + Radiobutton(fenetre, text="Type 4", variable=Var_choix, value=3, command=saisir_les_pourcentages).grid(row=8, sticky=W) + + Label(fenetre, text="Saisir le nombre d'itérations:").grid(row = 14, columnspan=1) + Entry(fenetre, textvariable=It, width=3).grid(row = 15) + + Label(fenetre, text="Saisir la vitesse de défilement des images:").grid(row=16) + vit = IntVar() + Entry(fenetre, textvariable=vit, width=3).grid(row=17) + + Button(fenetre, text="Continuer", command=init_complete).grid(row=18, column=0) + Button(fenetre, text="Quitter", command=fenetre.quit).grid(row=19) + + fenetre.mainloop() ############################################################################### @@ -465,6 +572,24 @@ def init_complete(): global Grille global StratsResultats + + global Vitesse + Vitesse = vit.get() + + global TailleGrilleX + global TailleGrilleY + TailleGrilleX=X.get() + TailleGrilleY=Y.get() + print(TailleGrilleX) + + global TypeGrilleInitiale + TypeGrilleInitiale=Var_choix.get() + + global StratParDefaut + StratParDefaut=Strat.get() + + global MaxIterations + MaxIterations=It.get() Grille = gen_matrice_initiale() @@ -636,7 +761,11 @@ def affichage_strats_resultats_totaux(): plt.show() plt.legend() +####################### +# SCRIPT +####################### +Interface() init_complete() simulation() afficher_etat_dynamique()