Chess game core - librairie jeu d'échec en c#

Description

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

Codes Sources

A voir également

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.