diff --git a/ARE-DYNAMIC.py b/ARE-DYNAMIC.py index 5d7af92..dc5bd1f 100644 --- a/ARE-DYNAMIC.py +++ b/ARE-DYNAMIC.py @@ -97,6 +97,10 @@ def saisir_les_pourcentages(): Entry(fenetre, textvariable=per2, width=3).grid(row=11, column=1) Label(fenetre, text ="% stratégie3:").grid(row=12, column=0) Entry(fenetre, textvariable=per3, width=3).grid(row=12, column=1) + Label(fenetre, text ="% stratégie4:").grid(row=13, column=0) + Entry(fenetre, textvariable=per4, width=3).grid(row=13, column=1) + Label(fenetre, text ="% stratégie5:").grid(row=14, column=0) + Entry(fenetre, textvariable=per5, width=3).grid(row=14, column=1) ##################################### # Types: @@ -450,6 +454,30 @@ def strat_meilleur_gain (joueur, adversaire): nveau_etat = Grille[i][j]['etat'] return nveau_etat +def strat_tit_for_tat(joueur, adversaire): + """ + coopérer tant que l'autre joueur est coopératif, à la première trahison + reproduire à chaque fois le comportement de l'adversaire du coup précédent + """ + for i in adversaire['historique_etats']: + if i == 1: + return adversaire['historique_etats'][len(adversaire['historique_etats'])-1] + return 0 + +def strat_tit_for_tat_sorry(joueur, adversaire): + """ + coopérer tant que l'autre joueur est coopératif, à la première trahison + reproduire à chaque fois le comportement de l'adversaire du coup précédent, + avec en plus une proba de 5% de coopérer après une défection : un peu d'espoir ! + """ + for i in adversaire['historique_etats']: + if i == 1: + tirage = random.random() + if tirage <= 0.05: + return 0 + return adversaire['historique_etats'][len(adversaire['historique_etats'])-1] + return 0 + ###################### #INTERFACE GRAPHIQUE UTILISATEUR (GUI) ###################### @@ -481,6 +509,7 @@ per1=DoubleVar() per2=DoubleVar() per3=DoubleVar() per4=DoubleVar() +per5=DoubleVar() def affichage_fenetre_infos(): """ @@ -517,7 +546,7 @@ def affichage_combobox(): """ global Strat Label(fenetre, text="Stratégie n°").grid(row=5, column=0, sticky=E) - Combobox(fenetre, textvariable=Strat, values=(0, 1, 2, 3), width=3).grid(row=5, column=1, sticky=W) + Combobox(fenetre, textvariable=Strat, values=(0, 1, 2, 3, 4, 5), width=3).grid(row=5, column=1, sticky=W) def Interface(): """ @@ -563,7 +592,7 @@ def fermeture(): """ global ListePourcents - ListePourcents=[per0.get(), per1.get(), per2.get(), per3.get(), per4.get()] + ListePourcents=[per0.get(), per1.get(), per2.get(), per3.get(), per4.get(), per5()] fenetre.quit() ############################################################################### @@ -588,8 +617,8 @@ def init_complete(): ListeStrategies.append(strat_toujours_avouer) # 1 ListeStrategies.append(strat_precedent_adversaire) # 2 ListeStrategies.append(strat_principal_adversaire) # 3 - # ListeStrategies.append(strat_altern) # - # ListeStrategies.append(strat_meilleur_gain) # + ListeStrategies.append(strat_tit_for_tat) # 4 + ListeStrategies.append(strat_tit_for_tat_sorry) # 5 global Grille global StratsResultats