Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

JEU D'ECHEC / CHESSGAME


Information sur la source

Catégorie :Jeux Source .NET ( DotNet ) Classé sous : jeu, echec, chess, game, alphabeta Niveau : Expert Date de création : 06/06/2006 Date de mise à jour : 04/11/2008 19:52:59 Vu / téléchargé: 36 622 / 2 253

Note :
8,8 / 10 - par 5 personnes
8,80 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (34)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
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).
 

Conclusion

J'ai mis une AI locale basique en place (joue des coups au bol), je pense utiliser l'algorithme Alpha-Beta pour faire quelques chose de correct quand j'aurai le temps.
Sinon, je pense aussi faire qu'on puisse jouer en réseau... Tout dépendera donc du temps que j'ai à dispositon...
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

08 juin 2006 15:36:12 :
Prise en compte de la remarque de Nikoui : Affichage en couleur des cases où l'on peut se déplacer. Mise en place d'une AI qui utilise un WebService (pour l'instant, ça ne tourne pas dans un thread... prochaine version éven.)
10 juin 2006 09:21:37 :
Web service asynchrône. Corrections de bugs mineurs. Légère amélioration du code.
04 novembre 2008 19:53:04 :
Rien

Commentaires et avis

signaler à un administrateur
Commentaire de MorpionMx le 06/06/2006 18:27:34 administrateur CS

Va falloir du temps pour ecumer toute la source, mais en tout cas ca m'a l'air impeccable

signaler à un administrateur
Commentaire de Bidou le 06/06/2006 20:18:40 administrateur CS

Merci Mx! ;-)

signaler à un administrateur
Commentaire de bubbathemaster le 06/06/2006 22:58:41

Génial je suis en ce moment en train de coder jeu d'echec en 3D avec Managed DirectX (ouais bon j'essaye quoi :D ), et je voulais pas me prendre la tete avec tout ce qui est echecs pour me concentrer sur la 3D. Ta source me sera sans doute utile =)

signaler à un administrateur
Commentaire de Bidou le 06/06/2006 23:01:50 administrateur CS

Hé ben tant mieux, elle est là pour ça ;-)

signaler à un administrateur
Commentaire de Nikoui le 07/06/2006 14:44:13

Eh ben, belle source :) y'a une sacré base là, et si en plus tu rajoutes ce dont tu parles (en particulier le réseau..) ca sera surement utile à beaucoup de monde... Si je peux me permettre, une suggestion : lorsque tu détectes 'à la volée' si le pion peut être posé ou non, tu pourrais colorier la case visée d'une couleur indiquant si le coup est possible/interdit (genre vert/rouge), ça serait plus visible que le seul changement de curseur.

signaler à un administrateur
Commentaire de Bidou le 07/06/2006 19:02:06 administrateur CS

Remarque notée, j'essayerai de faire ça pour une prochaine mise à jour !
Merci.

signaler à un administrateur
Commentaire de bubbathemaster le 07/06/2006 20:22:12

Je viens de regarder en details également et bien félicitations, c'est vraiment très bien foutu, jusque dans le code source.
Continue comme ça ;-)
Au fait, tu t'es renseigné sur l'UCI ? http://en.wikipedia.org/wiki/Universal_Chess_Interface
C'est un standard de communication pour les jeux dechecs. Je ne pense pas le supporter dans un premier temps pour mon propre jeu d'echecs, mais si on me démontre par A+B que c'est un énorme plus, pourquoi pas :)

signaler à un administrateur
Commentaire de Bidou le 07/06/2006 20:26:26 administrateur CS

Non, je n'ai absolument pas regarder de ce côté là.
Par contre j'ai trouvé une AI sous forme de WebService, ça pourrait être intéressant de l'implémenter (en plus d'une AI local et de pouvoir faire qu'on puisse jouer en réseau).
Enfin, pour faire tout ça, y'a pas mal de travail encore.

signaler à un administrateur
Commentaire de MorpionMx le 08/06/2006 21:19:50 administrateur CS

Impeccable l'integration du web service.
Vraiment du tres bon boulot !

signaler à un administrateur
Commentaire de Bidou le 08/06/2006 21:25:39 administrateur CS

Oui, c'est plutôt sympa :-)
Reste encore l'AI local et la partie réseau...

signaler à un administrateur
Commentaire de kamalz le 08/06/2006 22:46:48

Tres bon effort, mais pourquoi les commentaires in english et un autre prob c'es qund on traverse avec le pion de l'autre cote il nous donne la possibilité de recuperer meme une autre rene pour jouer à 2!!

signaler à un administrateur