Esempio n. 1
0
def changerEtatApresTransition(etat, action, joueur):
	'''Déterminer l'état obtenu lorsque le joueur effectue l'action dans l'état donné'''
	grille_copiee = Grille()
	grille_copiee.set(etat)
	grille_copiee.drop(joueur, action)
	nouvel_etat = grille_copiee.getName()
	return nouvel_etat
Esempio n. 2
0
def sp(choix_ai_adversaire, num_tirages_MC = 3, num_descentes_dans_arbre = 7, facteur_uct = 0.0):
    '''Une partie opposant un joueur humain à une intelligence artificielle'''
    grid = Grille()
    ai = AI('O')
    if choix_ai_adversaire == 2:
        ai = MC('O', num_tirages_MC)
    elif choix_ai_adversaire == 3:
        ai = UCT('O', num_tirages_MC, num_descentes_dans_arbre, facteur_uct)
    le_joueur1_gagne = False
    mes_coups_possibles = grid.lookForAllowedSteps()
    input = []
    player = 'X'
    while(input != 'q' and grid.checkVictory() is False and len(mes_coups_possibles)>0):
        grid.showGrid()
        input = raw_input("Number 1 through 7  = drop disc, q = quit. \nYour move:")
        if (input in ['1','2','3','4','5','6','7']):
            MonCoup = int(input)
            if grid.drop(player, MonCoup):
                le_joueur1_gagne = True
                mes_coups_possibles = grid.lookForAllowedSteps()
                if(grid.checkVictory() is False and len(mes_coups_possibles)>0):
                    VotreCoup = ai.ai(grid)
                    grid.drop(ai.player, VotreCoup)
                    le_joueur1_gagne = False
                    mes_coups_possibles = grid.lookForAllowedSteps()
    il_y_a_un_vainqueur = grid.checkVictory()
    print "The game ended in the following state:"
    grid.showGrid()
    print("Y a-t-il un gagnant ?"),
    print(il_y_a_un_vainqueur)
    print("Si oui, est-ce le joueur n 1 (X) ?"),
    print(le_joueur1_gagne)
Esempio n. 3
0
 def aiMonteCarlo(self, grille):
     '''Déterminer la meilleure action en fonction des résultats des simulations Monte-Carlo'''
     mes_coups_possibles = grille.lookForAllowedSteps()
     meilleure_action = None
     meilleure_evaluation = None
     for action in mes_coups_possibles:
         grille_simulee = Grille(grille)
         # Le joueur (A) joue un coup.
         grille_simulee.drop(self.player, action)
         # C'est au tour de l'autre joueur (B).
         symbole_dont_c_est_le_tour = getOtherSymbol(self.player)
         # Nous prenons l'opposé de la valeur simulée, car nous nous intéressons au joueur A.
         evaluation = - self.simulerMonteCarlo(grille_simulee, symbole_dont_c_est_le_tour)
         if(evaluation > meilleure_evaluation):
                 meilleure_evaluation = evaluation
                 meilleure_action = action
     return meilleure_action
Esempio n. 4
0
def np(choix_ai_joueur, choix_ai_adversaire, num_tirages_MC = 3, num_descentes_dans_arbre = 7, facteur_uct = 0.0, show_grid = False):
    '''Une partie entre intelligences artificielles'''
    grid = Grille()
    ai1 = AI('X')
    if choix_ai_joueur == 2:
        ai1 = MC('X', num_tirages_MC)
    elif choix_ai_joueur == 3:
        ai1 = UCT('X', num_tirages_MC, num_descentes_dans_arbre, facteur_uct)
    ai2 = AI('O')
    if choix_ai_adversaire == 2:
        ai2 = MC('O') # paramètres par défaut
    elif choix_ai_adversaire == 3:
        ai2 = UCT('O') # paramètres par défaut
    le_joueur1_gagne = False
    mes_coups_possibles = grid.lookForAllowedSteps()
    while(grid.checkVictory() is False and len(mes_coups_possibles)>0):
        MonCoup = ai1.ai(grid)
        grid.drop(ai1.player, MonCoup)
        le_joueur1_gagne = True
        mes_coups_possibles = grid.lookForAllowedSteps()
        if show_grid:
            grid.showGrid()
            sleep(1)
        if(grid.checkVictory() is False and len(mes_coups_possibles)>0):
            VotreCoup = ai2.ai(grid)
            grid.drop(ai2.player, VotreCoup)
            le_joueur1_gagne = False
            mes_coups_possibles = grid.lookForAllowedSteps()
            if show_grid:
                grid.showGrid()
    il_y_a_un_vainqueur = grid.checkVictory()
    print "The game ended in the following state:"
    grid.showGrid()
    print("Y a-t-il un gagnant ?"),
    print(il_y_a_un_vainqueur)
    print("Si oui, est-ce le joueur 1 (X) ?"),
    print(le_joueur1_gagne)
    return (il_y_a_un_vainqueur, le_joueur1_gagne)
Esempio n. 5
0
def pvp():
    '''Une partie entre joueurs humains'''
    grid = Grille()
    input = []
    player = 'X'
    while(input != 'q' and grid.checkVictory() is False):
        grid.showGrid()
        input = raw_input("1 2 3 4 5 6 7  = drop disc, q = quit. \nPlayer " +player+" to move:")
        if (input in ['1','2','3','4','5','6','7']):
            if grid.drop(player, int(input)):
                if(player == 'X'):
                    player = 'O'
                else:
                    player = 'X'
    print "The game ended in the following state:"
    grid.showGrid()