Ceci est une librairie assez complète pour implémenter un jeu d'échec.
Fonctionnalités de cette librairie:
- Roque (petit/grand)
- Prise en passant
- Support de la notation FE
- Notation algébrique pour les coups
- Système pour mettre en place sa propre IA
- Promotion des pions
- Système de undo pour annuler le dernier coup joué
- Fin de partie (mat, pat)
- ... (à découvrir)
L'utilisation se veut très simple. Des événements sont à dispositions pour signaler les choses les plus importants (échec, fin de partie, promotion d'un pion, coup joué, etc). En plus d'un fichier d'aide chm l'exemple ci-dessous montre en gros comment ça marche.
Source / Exemple :
// Création du jeu avec 2 humains:
Board board = new Board(HumanPlayer.White, HumanPlayer.Black);
// Création du jeu avec 2 humains en disposant les pièces soit-même:
// Les noirs commencent en changeant le 2ème boolean
Player white = HumanPlayer.White;
Player black = new HumanPlayer("Bidou", PlayerColor.Black);
Board board = new Board(white, HumanPlayer.Black, false, true);
Piece.Create(new PiecePosition(7, 7), black, board, PieceType.King);
Piece.Create(new PiecePosition(5, 5), white, board, PieceType.King);
Piece.Create(new PiecePosition(2, 2), white, board, PieceType.Rook);
// Récupération de la notation FE
string FEN = board.GetFEN();
// Accéder à une pièce
Piece piece = board[5, 5];
// Déplacer une pièce
board.Move(piece, new PiecePosition(4, 4));
// Notation algébrique du dernier coup jouer
string alg = piece.AlgebraicNotation;
// Annule le dernier coup joué
board.Undo();
// La lib contient seulement une IA qui joue un coup au bol, mais on
// peut construire la sienne très facilement
public class MyIA : BaseAI
{
public MyIA() : base("Bidou AI", PlayerColor.Black, AILevel.Average)
{
}
public override void Play()
{
this.Board.Move(...);
}
}
MyIA myIa = new MyIA();
Board board = new Board(white, myIa);
Conclusion :
Pour info, il y a 2 ans et demi j'avais déjà fait un jeu d'échec, mais il possède quelques bugs et surtout manque cruellement de fonctionnalité:
http://www.csharpfr.com/codes/JEU-ECHEC-CHESSGAME_37989.aspx
Une idée serait de greffer ChessCore dans ce projet (en conservant l'interface graphique).
Mieux encore, faire une nouvelle interface en WPF et pourquoi pas la possibilité de jouer en réseau via WCF.
Avis aux amateurs qui ne se sont jamais lancé car ils ne connaissent pas bien les règles des échecs ou tout simplement parce qu'ils avaient pas envie d'écrire la lib de base!
Niveau performance j'ai pas trop testé, mais vraisemblablement qu'il doit y avoir beaucoup d'amélioratation à ce niveau...
Tous les commentaires sont les bienvenus
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.