コード例 #1
0
def main(nbLignes, nbColonnes, nb_coups_avance_blanc=0):
    if nbLignes <= 1 or nbColonnes <= 1:
        raise ValueError(
            "Le nombre de lignes et de colonnes doit être supérieur ou égale à 2"
        )
    if nb_coups_avance_blanc < 0:
        raise ValueError("On peut pas retourner en arrière")

    grille = Grille(nbLignes, nbColonnes)
    for i in range(nb_coups_avance_blanc):
        mouv = choice(grille.possibilitesJoueur(grille.joueurActuel))
        nouvelle_grille = grille.effectuerAction(mouv)
        grille.grille = nouvelle_grille.grille
        del nouvelle_grille

    print(
        f"Grille initiale (avec {nb_coups_avance_blanc} coups d'avance pour le joueur blanc):"
    )
    print(grille)

    while not grille.estTermine():
        joueur = grille.joueurActuel
        mouvements = grille.possibilitesJoueur(joueur)
        print(mouvements)
        mouv = choice(mouvements)
        grille = grille.effectuerAction(mouv)
    print(grille.possibilitesJoueur(grille.joueurActuel))
    return grille
コード例 #2
0
def main(nbLignes,
         nbColonnes,
         nb_coups_avance_blanc=0,
         profondeur_raisonnement_noir=1,
         profondeur_raisonnement_blanc=1,
         alphabeta_utilisation=True):
    if nbLignes <= 1 or nbColonnes <= 1:
        raise ValueError(
            "Le nombre de lignes et de colonnes doit être supérieur ou égale à 2"
        )
    if nb_coups_avance_blanc < 0:
        raise ValueError("On peut pas retourner en arrière")
    if profondeur_raisonnement_blanc < 1:
        raise ValueError(
            "Il faut que l'IA puisse réfléchir. Mettez un nombre >= 1")
    if profondeur_raisonnement_noir < 1:
        raise ValueError(
            "Il faut que l'IA puisse réfléchir. Mettez un nombre >= 1")

    historique_grille = []

    grille = Grille(nbLignes, nbColonnes)
    ia_blanc = IA('blanc', profondeur_raisonnement_blanc,
                  alphabeta_utilisation)
    ia_noir = IA('noir', profondeur_raisonnement_noir, alphabeta_utilisation)
    for i in range(nb_coups_avance_blanc):
        mouv = ia_blanc.play(grille)
        nouvelle_grille = grille.effectuerAction(mouv)
        grille.grille = nouvelle_grille.grille
        del nouvelle_grille

    print(
        f"Grille initiale (avec {nb_coups_avance_blanc} coups d'avance pour le joueur blanc):"
    )
    print(grille)

    while not grille.estTermine() and not any(
        [grille == h for h in historique_grille]):
        historique_grille.append(grille)
        joueur = grille.joueurActuel
        if joueur == 'blanc':
            mouvement = ia_blanc.play(grille)
        else:
            mouvement = ia_noir.play(grille)
        grille = grille.effectuerAction(mouvement)
    return grille, ia_blanc, ia_noir