Update ARE-DYNAMIC.py

This commit is contained in:
ConstancePoulain 2017-04-10 17:53:27 +02:00 committed by GitHub
parent bb19343641
commit 39fed16d4f
1 changed files with 130 additions and 1 deletions

View File

@ -21,6 +21,8 @@ import numpy as np
import matplotlib as mpl import matplotlib as mpl
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import matplotlib.animation as animation import matplotlib.animation as animation
from tkinter import *
from tkinter.ttk import *
###################### ######################
### Variables Globales ### Variables Globales
@ -73,6 +75,37 @@ ListePourcents = list()
#Couleurs des Stratégies #Couleurs des Stratégies
CouleursStrat=['b','r','black','g','purple'] 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: Types:
@ -214,7 +247,7 @@ def matrice_init_meme_strat():
Index: 0 Index: 0
Crée la matrice des joueurs chacun a la même stratégie Crée la matrice des joueurs 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] histo_strat = [StratParDefaut]
@ -438,6 +471,80 @@ def strat_principal_adversaire(joueur, adversaire):
else: else:
return 0 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()
############################################################################### ###############################################################################
@ -466,6 +573,24 @@ def init_complete():
global Grille global Grille
global StratsResultats 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() Grille = gen_matrice_initiale()
for i in range(len(ListeStrategies)): for i in range(len(ListeStrategies)):
@ -636,7 +761,11 @@ def affichage_strats_resultats_totaux():
plt.show() plt.show()
plt.legend() plt.legend()
#######################
# SCRIPT
#######################
Interface()
init_complete() init_complete()
simulation() simulation()
afficher_etat_dynamique() afficher_etat_dynamique()