Update ARE-DYNAMIC.py
This commit is contained in:
parent
bb19343641
commit
39fed16d4f
131
ARE-DYNAMIC.py
131
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()
|
||||
|
|
Loading…
Reference in New Issue