public int Minimax(PlateauRestreint p, bool maximizingPlayer) { int res; if (p.VerifierVictoire() == p.Joueur1) { // Victoire du joueur 1 : retourne 1. res = 1; } else if (p.VerifierVictoire() == p.Joueur2) { // Victoire du joueur 2 : retourne -1. res = -1; } else if (p.VerifierPlateauRempli()) { // Match nul : retourne 0. res = 0; } else { // Not terminal node List <Position> positionsLibres = this.GetPositionsLibres(p); if (maximizingPlayer) { // foreach child of node res = -5000; foreach (Position pos in positionsLibres) { // Création d'une copie de plateau Morpion morpionClone = new Morpion(); morpionClone.Initialisation(p.Joueur1, p.Joueur2); morpionClone.PlateauJeu = p.Clone(morpionClone); morpionClone.Tour(pos.X, pos.Y); res = Math.Max(res, this.Minimax(morpionClone.PlateauRestreint, false)); } } else { // foreach child of node res = +5000; foreach (Position pos in positionsLibres) { // Création d'une copie de plateau Morpion morpionClone = new Morpion(); morpionClone.Initialisation(p.Joueur1, p.Joueur2); morpionClone.PlateauJeu = p.Clone(morpionClone); morpionClone.Tour(pos.X, pos.Y); res = Math.Min(res, this.Minimax(morpionClone.PlateauRestreint, true)); } } } return(res); }
/// <summary> /// Constructeur de la classe Morpion. /// </summary> public Morpion() { this.plateauJeu = new Plateau(this); this.plateauRestreint = new PlateauRestreint(this.plateauJeu); this.listeJoueurs = new List <Joueur>(); // Initialisation des joueurs this.listeJoueurs.Add(new Joueur(1)); this.listeJoueurs.Add(new Joueur(2)); }
private List <Position> GetPositionsLibres(PlateauRestreint p) { List <Position> positionsLibres = new List <Position>(); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (p.GetCase(i, j).Joueur == null) { positionsLibres.Add(new Position(i, j)); } } } return(positionsLibres); }
public IA_Parfaite(PlateauRestreint p) : base(p) { }
public IA(PlateauRestreint p) { this.plateau = p; }
public IA_Basique(PlateauRestreint p) : base(p) { }
public IA_Evoluee(PlateauRestreint p) : base(p) { }
public IA_Aleatoire(PlateauRestreint p) : base(p) { }