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

Soyez le premier à donner votre avis sur cette source.

Vue 13 291 fois - Téléchargée 1 168 fois

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

Ajouter un commentaire

Commentaires

Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014

Non :( J'ai pas eu le temps (ni de vacance), quand je pourrai m'y mettre je te promets de me faire signe :D
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Alors, tu as pu faire quelque chose?
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
J'ai rapidement branché l'interface graphique que j'avais fait dans mon autre source (voire lien dans la partie conclusion). Mais de manière très approximative, juste pour pouvoir tester...

Concernant l'interface WPF, vas-y seulement, c'est là pour ça...
Pour la construction de l'IA, c'est expliqué ci-dessus comment procéder...
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014

Ce code est plein d'intérêt, mais je suis surpris qu'il n'y ait pas d'interface graphique, les tests étaient fait en console je présume :O

Si je m'amuse en peu en lui fabricant une interface WPF et une IA un peu moins pifométrique vous n'auriez pas d'objection ? :D

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.