def finJeu(jeu): if (jeu[0] == [[0 for i in range(6)] for j in range(2)]) or getCoupsValides(jeu) == [] or len( game.getCoupsJoues(jeu)) == 100: return True return False
def jouePARTIE(j1, j2): global playerONE global playerTWO #On initialise a ALEA les 4 premier Coups pr que ce soit équilibré et pr éviter même partie. for i in range(1): jeu = game.initialiseJeu() game.joueur1 = othello_alea game.joueur2 = othello_alea while not game.finJeu(jeu): #game.affiche(jeu) coup = game.saisieCoup(jeu) game.joueCoup(jeu, coup) if len(game.getCoupsJoues(jeu)) == 4: game.joueur1 = j1 game.joueur2 = j2 if i == nbRounds / 2: game.joueur1 = j2 game.joueur2 = j1 #playerONE=2 #playerTWO=1 #print ("Nombre de tours : " + str(len(game.getCoupsJoues(jeu)))) #print("Gagnant de la partie est : ",game.getGagnant(jeu)) gagnant = game.getGagnant(jeu) return gagnant
def joueN(n): global y v1, j1 = 0, 1 """ # ============================================================================= # - v1 (nombre de victoires du joueur 1), v2 (nombre de victoires du joueur 2), mn (nombre de matchs nuls) # - sc1 et sc2 (scores moyens de chaque joueur) # - nbc (nombre de coups joues en moyenne) # ============================================================================= """ #lancer une partie, 3 coups alea au debut puis chaque joueur se met a jouer for i in range(n): game.joueur1 = awele_alea game.joueur2 = awele_alea jeu = game.initialiseJeu() while not game.finJeu(jeu): coup = game.saisieCoup(jeu) game.joueCoup(jeu, coup) if len(game.getCoupsJoues(jeu)) == 4: game.joueur1 = game.joueurinter1 game.joueur2 = game.joueurinter2 if game.getGagnant(jeu) == j1: v1 += 1 v1 = float(v1) / float(n) #ratio victoire/nbre de match y.append( v1 ) #y=liste de victoire éfféctué (ou on ajoute a la fin de la liste le nombre de victoire pour n partie faite)
def JoueN( joueur1, joueur2 ): # joue 10 partie (variable N) et compte le nombre de victoire de joueur 1 (l'eleve) global j1, j2 victoires = 0 for i in range(N): game.joueur1 = othello_alea #transforme mes joueur en joueur aleatoire game.joueur2 = othello_alea #permet de tirer des coups aleatoire au debut, sinon tjr meme partie jeu = game.initialiseJeu() while not game.finJeu(jeu): coup = game.saisieCoup( jeu) #joues different coups tant que cest pas la fin du jeu game.joueCoup(jeu, coup) if len(game.getCoupsJoues(jeu) ) == 4: #apres 4 coups aleatoire,le jeu commence vraiment game.joueur2 = joueur2 game.joueur1 = joueur1 g = game.getGagnant(jeu) if g == j1: #on compte le nbre de victoire de leleve victoires += 1 if i == N / 2: game.joueur1 = joueur2 #apres N/2 partie, on echange les joeuur , pour quon ai pas le meme joueur qui commence game.joueur2 = joueur1 j1 = game.joueur2 j1 = game.joueur1 return victoires
def CaseConsecutif(jeu, coup, joueur): cj = game.getCoupsJoues(jeu) i = -6 while i < 0: if len(cj) < 15 and ( len(cj) + i ) < 0: #si in est plus en debut et si il n'y a plus de coup precedent return 0 elif abs(cj[i][1] - coup[1]) == 1: #si c'est un voisin des deux dernier return 0 i = i + 2 return 1
def jouePARTIE(): jeu = game.initialiseJeu() while not game.finJeu(jeu): game.affiche(jeu) coup = game.saisieCoup(jeu) game.joueCoup(jeu, coup) print( "Nombre de tours : " + str(len(game.getCoupsJoues(jeu))) ) #str permet de cast, sinon on peut pas concatener un str et un int if game.getGagnant(jeu) == 0: print("\nEgalite parfaite !") else: print("\nLe joueur " + str(game.getGagnant(jeu)) + " a gagne !") print("\nPlateau de fin de jeu: ") game.game.affiche(jeu) g = game.getGagnant(jeu) return g
def finJeu(jeu): """ jeu -> bool When one player has captured 25 or more seeds. When one player has no move to avoid the opponent to starve When a given position occurs for the second time with the same player's turn. """ if(jeu[4][0] >= 25 or jeu[4][1] >= 25): return True if(game.getCoupsValides(jeu) == []): return True if(len(game.getCoupsJoues(jeu))>=100): return True return False
game.joueur1 = awele_alea game.joueur2 = awele_alea jeu = game.initialiseJeu() while not game.finJeu(jeu) : #game.affiche(jeu) coup = game.saisieCoup(jeu) game.joueCoup(jeu,coup) """# print(game.joueur1) # print(game.joueur2) # print("Nombre de tours : " + str(len(game.getCoupsJoues(jeu))))""" if len(game.getCoupsJoues(jeu)) == 4:#fin coup aleatoire game.joueur1=game.joueurinter1 game.joueur2=game.joueurinter2 if game.getGagnant(jeu) == j1: winsPlayer1+=1 elif game.getGagnant(jeu) == j2: winsPlayer2+=1 else: matchNul+=1 scoreMoyen1 += game.getScore(jeu,j1)#additionne les scores de j1 puis va diviser par n ensuite scoreMoyen2 += game.getScore(jeu,j2) nbc += len(game.getCoupsJoues(jeu)) jeuCopie = game.getCopieJeu(jeu) jeuCopie[1] = game.getGagnant(jeu) tabParties.append(jeuCopie) #game.affiche(jeu)
import Ciri game.joueur1 = Ciri game.joueur2 = Keira maitre = Oracle eleve = game.joueur1 adversaire = game.joueur2 sc = [] a = 0.1 while True: jeu = game.initialiseJeu() game.joueur1 = awele_alea game.joueur2 = awele_alea while not game.finJeu(jeu): if len(game.getCoupsJoues(jeu)) == 4: game.joueur1 = eleve game.joueur2 = adversaire # elif game.getJoueur(jeu)==1 and len(game.getCoupsJoues(jeu)) > 4: if game.getJoueur(jeu) == 1: cp = game.getCoupsValides(jeu) ls = [ maitre.estimation(game.getCopieJeu(jeu), x, -1000000, 1000000, 1) for x in cp ] #liste des estimations de l oracle pour chacun des coups possibles opt = cp[ls.index(max(ls))] #coup qui serait joue par l oracle sopt = game.getCopieJeu( jeu ) #sopt correspond a l etat du jeu si le coup choisi par l oracle est joue game.joueCoup(sopt, opt) m = max(ls)
def finJeu(jeu): """jeu->bool Retourne vrai si il n'y a plus aucun coup valide ou si un joueur a manger plus de la moitie des graines """ s=game.getScores(jeu) return len(game.getCoupsValides(jeu))==0 or s[0]>=25 or s[1]>=25 or len(game.getCoupsJoues(jeu))>=100
def finJeu(jeu): if len(game.getCoupsJoues(jeu)) == 64 or game.getCoupsValides(jeu) == []: return True return False