ChessGame / Jeu D'Echec en C#
Etant donné qu'il n'y avait encore aucun jeu d'échec sur le site, je me suis lancé dans ce petit projet.
La mise au point n'est pas extrêmement complexe, mais il faut tout de même organiser un peu les choses pour ne pas s'y perdre.
J'ai essayé de documenter au maximum le code pour que ça soit le plus facile à comprendre.
Voilà ce qu'on trouve principalement dans cette source :
- Utilisation de GDI+ (principalement dans le projet ChessCtrl)
- Utilisation de Xml (sans sérialization pour une fois :D)(dans le projet ChessGame)
- Utilisation de l'héritage et de tout ce que ça implique (classe et méthode abstraite, etc)(dans le projet ChessLib)
- Event/Delegate
- Generics
- Drag & Drop
- Utilisation d'un Web Service (ici, pour gérer une AI distante)
Programmer un jeu d'échec, ce n'est pas une révolution (il en existe plein à droite et à gauche). La plupart des jeux que j'ai pu essayer, testent la validité d'une position lorsqu'on pose la pièce sur l'échiquier. Ce que mon programme fait (je précise que ce n'est pas une révolution, mais moins courant) c'est qu'il contrôle au fur et à mesure qu'on drag la pièce, si on peut la poser sur l'endroit actuel ou pas.
Le web service utilise la notation de Forsyth-Edwards pour l'état du jeu. Je l'ai pour l'instant un peu simplifié (j'ai supprimé la règle des 50 coups, et la prise en passant). Autrement dit, l'AI ne demandera jamais un match nul et ne fera jamais de prise en passant (mais l'utilisateur, peut le faire).