48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
from mywindow import Window
|
|
from othello import Othello
|
|
from jouer import Robot,Humain
|
|
from bruteforce import BruteForce
|
|
from ia import IA
|
|
#from neuralnetwork import NeuralNetwork
|
|
|
|
class Simulateur:
|
|
def __init__(self,joueurs,nombre_parties=10,fenetre=None):
|
|
"""Cree un simulateur de partie avec une fenetre, des joueurs, un nombre de partie"""
|
|
self.fenetre=fenetre
|
|
self.nombre_parties=nombre_parties
|
|
self.joueurs=joueurs
|
|
self.affichage=affichage
|
|
self.display=display
|
|
self.gagnants=[]
|
|
|
|
def __call__(self):
|
|
"""Boucle 'for' principale du simulateur."""
|
|
for i in range(self.nombre_parties):
|
|
if self.fenetre:
|
|
jeu=Othello(self.joueurs,self.fenetre)
|
|
else:
|
|
jeu=Othello(self.joueurs)
|
|
jeu()
|
|
if not jeu.fenetre.open:
|
|
break
|
|
self.gagnants.append(jeu.gagnant)
|
|
if self.display: print(self)
|
|
|
|
def __repr__(self):
|
|
"""Renvoie une représentation des victoires de chaque joueur avec l'historice des victoires du simulateur."""
|
|
message="Resultats de "+str(len(self.gagnants))+" parties:\n"
|
|
for numeror in range(len(self.joueurs)):
|
|
message+="- Joueur "+str(numero)+" a gagne "+str(self.gagnants.count(numero))+" fois.\n"
|
|
return message
|
|
|
|
|
|
|
|
if __name__=="__main__":
|
|
fenetre=Window(taille=[800,800],fullscreen=False)
|
|
joueurs=[IA(),BruteForce(3)]
|
|
nombre_parties=50
|
|
affichage=True
|
|
simulation=Simulateur(fenetre,joueurs,nombre_parties)
|
|
simulation()
|
|
print(simulation)
|