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.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 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()
###############################################################################
@ -466,6 +573,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()
for i in range(len(ListeStrategies)):
@ -636,7 +761,11 @@ def affichage_strats_resultats_totaux():
plt.show()
plt.legend()
#######################
# SCRIPT
#######################
Interface()
init_complete()
simulation()
afficher_etat_dynamique()