/// <summary> /// Check si la partie est terminée en fonction du plateau de jeu passé en paramètres /// </summary> /// <param name="board">Etat du plateau de jeu</param> /// <returns>True si la partie est terminée</returns> public static bool Final(Board board) { for (int c = 0; c < 8; c++) { for (int l = 0; l < 8; l++) { if (board.GetBoard()[c, l] > -1) { // Cellule prise continue; } else { if (board.IsPlayable(c, l, true) || board.IsPlayable(c, l, false)) { // Un des deux joueurs peut encore jouer return(false); } } } } // Aucune possibilité return(true); }
/// <summary> /// Liste les coups jouables par un des deux joueurs d'après le plateau de jeu /// </summary> /// <param name="isWhite">Couleur du joueur. True = joueur blanc</param> /// <returns>Liste des coups possibles de ce joueur</returns> public List <Cell> Ops(bool isWhite) { var ops = new List <Cell>(); for (int c = 0; c < 8; c++) { for (int l = 0; l < 8; l++) { if (board.IsPlayable(c, l, isWhite)) { ops.Add(new Cell(c, l)); } } } return(ops); }
/// <summary> /// Test de l'IA en mode console. /// </summary> /// <param name="args"></param> static void Main(string[] args) { Board boardWhite = new Board(); Board boardBlack = new Board(); Board boardArbitre = new Board(); bool finished = false; bool whiteTurn = false; while (!finished) { Board turnBoard = whiteTurn ? boardWhite : boardBlack; var move = turnBoard.GetNextMove(boardArbitre.GetBoard(), 4, whiteTurn); if (move.Item1 == -1 && move.Item2 == -1) { PrintPass(whiteTurn); } else { if (boardArbitre.IsPlayable(move.Item1, move.Item2, whiteTurn)) { boardArbitre.PlayMove(move.Item1, move.Item2, whiteTurn); boardBlack.PlayMove(move.Item1, move.Item2, whiteTurn); boardWhite.PlayMove(move.Item1, move.Item2, whiteTurn); } else { PrintError(move, whiteTurn); break; } PrintBoard(boardArbitre.GetBoard(), whiteTurn, move.Item1, move.Item2); } whiteTurn = !whiteTurn; finished = boardArbitre.IsFinished(); //Console.ReadKey(); } PrintFinish(boardArbitre); Console.ReadKey(); }