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 !

OX : JEU D'ÉCHEC (SOURCE ENTIÈREMENT COMMENTÉE) MAJ2


Information sur la source

Catégorie :Jeux Niveau : Initié Date de création : 16/04/2004 Date de mise à jour : 20/04/2004 23:22:02 Vu / téléchargé: 11 091 / 1 014

Note :
9,29 / 10 - par 7 personnes
9,29 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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

Description

Cliquez pour voir la capture en taille normale
Bonjour,

voici un jeu d'échec entièrement fonctionnel avec une interface graphique codée en DirectX.
Il n'y a pas d'IA pour le moment.

C'est vrai qu'une source sur les echecs a déjà été postée récemment et c'est d'ailleur celle-là qui m'a poussé à faire celle-ci... ;)

La source de Clementio ne comporte pas de commentaires, je ne me sentais pas le courage de la décoder et j'avais envie de voir comment un jeu d'échec pouvait fonctionner.

Donc voilà, j'ai fait ma version et comme d'hab, la source est entièrement commentée.
L'interface est encore toute simple mais je compte bien en faire une plus belle.

quelques explications :

il faut d'abords initialiser le jeux avant de commencer.
Après chaque coup joué, des ronds rouges apparaissent un peu partout... ils représentent les cases "attaquées" par les pions de la couleur qui vient de jouer.
 

Conclusion

C'était pas évident (ni trop compliqué), mais très intéressant. Je n'ai peut être pas choisi la manière la plus simple et rapide, mais elle a le mérite d'être comprise facilement.

Je pense que toutes les règles de base sont présentes (roc, déplacements de pions, prise en passant...), si vous en voyez une que j'aurais oubliée, signalez le moi.

Il est donc possible de jouer à deux, j'ajouterai la possibilité de se connecter sur un serveur distant (free internet server) et aussi celle de jouer contre l'ordinateur.

Voilà pour le moment...
a+ et bon coding...


MAJ1:
-ajout de la promotion du pion lorsque celui-ci atteitn l'autre bout. Pour le moment, le pion se tranforme automatiquement en reine. je rajouterai plus tard la possibilité de choisir entre la tour, le fou, le cavalier et la reine.

MAJ2:
-ajout de la détection du "pat". Ceci arrive lorsqu'un joueur ne sait plus jouer sans mettre son roi en échec. La partie est alors nulle !
 

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

Commentaires et avis

signaler à un administrateur
Commentaire de NoRabbit le 17/04/2004 00:20:35

...je voulais aussi rajouter qu'il y a aussi un "log" textuel qui informe lorsqu'un déplacement n'est pas bon. Ex : "vous ne pouvez pas roquer car votre roi est mis en échec sur une des cases qu'il doit traverser", etc...

J'espère que cette source vous apprendra quelque chose.
ciao ;)

signaler à un administrateur
Commentaire de Inekman le 17/04/2004 02:02:50

Je reste admiratif face à ton travail sur ce jeu d'échec.
Les commentaires sont fabuleux. Le code est super bien organisé.
Et ça tourne impek, DirectX est le bienvenu et c'est génial.

Dans un monde utopique, je suis un programmeur comme toi mais en Delphi et C++.

Franchement bravo, t'as tout mon soutien pour ce code.

Inekman. 10/10

signaler à un administrateur
Commentaire de hqv0 le 17/04/2004 02:09:25

Quoi dire de plus que Inekman,  beau, clair , Enfin des explications qui ont un intérêt...
j'ai pas bien conpris le Roc mais à par ça un 10 est une note minimum
Vivement la mise à jour car j'ai personne pour jouer avec moi .

PS: J'ai oublié  "Bravo"

signaler à un administrateur
Commentaire de Saros le 17/04/2004 11:14:25

Très jolie interface !
Par contre je ne sais pas pourquoi j'ai de gros ralentissements lorsque je déplace un pion... Peut-être à cause de la transparence...
Mais bon, cela vaut bien un 10.
Saros

signaler à un administrateur
Commentaire de NoRabbit le 17/04/2004 12:09:58

salut tout le monde et merci !

les mises à jours viendront petit à petit (comme pour matrix fall, à ce sujet d'ailleurs, l'interface de mise à jour des codes de vbfrance ne fonctionne plus...)

Saros : je ne sais pas te dire à quoi c'est dû. Peux tu me donner ta config hardware ? merci.

signaler à un administrateur
Commentaire de Urgo le 17/04/2004 13:59:59

C'est pas mal du tout! Très bien commenté ton source. Mais lorsqu'un pion atteint l'autre coté, il ne se transforme pas en reine ? :(
Sinon les textes en blancs en haut à gauche chevauchent le plateau :o

signaler à un administrateur
Commentaire de NoRabbit le 17/04/2004 14:16:56

ha oui ! j'avais oublié cette possibilité ! merci de me le signaler.
sinon, les textes en blancs, c'est "normal", ce n'est pas une version définitive, ils me servent pour le débuggage.

signaler à un administrateur
Commentaire de NoRabbit le 17/04/2004 15:21:23

il est toujours impossible de mettre à jour son code sur vbfrance...
j'ai ajouté la fonctionnalité qui permet au pion de se change en reine lorsqu'il atteint l'autre côté

vous pouvez télécharger le code mis à jour sur mon serveur :
http://www.open-design.be/dev/Ox%20beta1.1%20echec.zip

signaler à un administrateur
Commentaire de Afyn le 17/04/2004 17:08:38

C vraiment super...
Beau travail et belle inteface.
Pour la promotion du pion, plutot que de le remplacer par une reine, il serait plus logique de proposer le choix entre le cheval, le fou, la tour et la reine. Une petite boite de dial avec le dessin des pièces serait top.

Encore Bravo!
Afyn
NAvedac

signaler à un administrateur
Commentaire de Astalavista le 17/04/2004 17:18:27

Non enfait quand un pion arrive dans le camp adverse, le joueru a le chois parmi les pieces, ou bien parmi les pieces qui ne possède plus, cela depend des jeux ...
Sinon il est superbe comme jeu, mais j'espère que tu va permetre d'ajouter des deseign de pieces pour diferentes couleur...
et d'ajouter les ABCDEFGH Ainsi que 1 2 3 4 5 6 7 8.
PS : pour les caractères ils doivent etre inversser quand on change le plataux de sens ...

Voila Bonne continuation ... et BRAVO

signaler à un administrateur
Commentaire de aKheNathOn le 18/04/2004 01:21:30

Bon boulot, pas eu le temps vu l'heure de décortiquer ta source, mais ce sera avec un réel plaisir. Moi aussi j'avais recodé un jeu d'échec aprés la sortie de celui de CLM (lol)... je l'ait commenté et il à le mérite d'être vraiment fait fonction par fonction donc trés modulable, et on peux jour en réseau LAN ...
De plus il est sous forme d'ocx, ce qui permet de faire un soft plus complexe à partir de cette base...

Tiens tu peux y jetter un coup d'oeuil s'il t'interesse il est à cette adresse :
http://www.vbfrance.com/code.aspx?ID=21850
et puis si t'as envie de continuer l'aventure, de sortir un jeu finit, et monter un réseau complet de servers d'échecs, j'sui ton homme (lol)...

Bonne prog et à+, akh

signaler à un administrateur
Commentaire de NoRabbit le 18/04/2004 11:05:22

ok, je vais ajouter le choix des pions lors d'une promotion dès que j'ai le temps.

aKheNathOn : désolé, je n'ai pas encore eu le temps de regarder ta source, je ferai ça dès que je trouverai un peu de temps pour moi.
Sinon, pour le jeu finit, sûrement, mais pas tout de suite, ça viendra petit à petit en fonction de mon temps libre très limité.
Ta participation est bien entendu appréciée, d'ailleurs quiconque voulant y participer est le bienvenue !

a+

signaler à un administrateur
Commentaire de Kevb37 le 18/04/2004 11:37:55

Génial (le jour où je saurai faire ça !!!). Vraiment bien, mais il manque une petite chose :
1) la gestion du pat, c'est à dire quand un des deux camps ne peux pas jouer sans perdre son roi (sans pour autant que ce dernier ne soit en echec.)
Enfin voila,
salut

signaler à un administrateur
Commentaire de NoRabbit le 18/04/2004 11:48:20

salut,

pat ? tu veux dire que lorsqu'il est impossible de bouger un pion sans que le roi soit mis en échec ? (pour être sûr)

signaler à un administrateur
Commentaire de Kevb37 le 18/04/2004 12:09:44

oui, et c'est impossible de mettre soit même son roi en échec, donc c'est pat !

signaler à un administrateur
Commentaire de NoRabbit le 18/04/2004 12:23:24

ok, merci, je rajoute ça dès que je peux

signaler à un administrateur
Commentaire de Saros le 18/04/2004 13:45:48

Dans la foulée des messages je n'avais pas vu que tu me demandais ma configuration hardware :) mais je pense pas que ce soit là le problème (GeForce FX 5200, 128 de vidéo, 512 de RAM, biprocesseur 1300+1300)... Je verrais bien, peut-être que d'autres programmes avaient été lancées en même temps sur mon ordi...
++
Saros

signaler à un administrateur
Commentaire de NoRabbit le 20/04/2004 23:19:07

Voilà, la gestion du "pat" à été ajoutée.

j'arrive à changer le contenu de la source, mais toujours pas le zip...
donc vous pouvez télécharger la mise à jour ici :
http://www.open-design.be/dev/Ox%20beta1.2%20echec.zip

Saros : merci. Non effectivement, ce n'est sûrement pas un problème hardware ;)

signaler à un administrateur
Commentaire de NoRabbit le 20/04/2004 23:21:26

ha, je viens de réessayer et la mise à jour du fichier zip s'est bien déroulée !
Le fichier zip contenu sur vbfrance est donc bien mis à jour !

signaler à un administrateur
Commentaire de Saros le 21/04/2004 19:03:35

En fait c'était un programme pour changer le curseur qui mettait de la transparence à la souris, et lorsque je la passais sur la fenêtre, ça ralentissait beaucoup...
À propos, lorsqu'un pion atteint la bordure adversaire, on a le choix de le transformer soit en fou, soit en reine, soit en tour non ?
Saros

signaler à un administrateur
Commentaire de Afyn le 21/04/2004 20:49:30

Ou en cheval ...

Afyn

signaler à un administrateur
Commentaire de NoRabbit le 21/04/2004 23:09:40

oui, je sais, pour le moment il ne se transforme qu'en reine.
J'ajouterai la possibilité de choisir plus tard, quand j'ai un peu plus de temps.

signaler à un administrateur
Commentaire de solak le 27/04/2004 19:01:58

bonjour NoRabbit,

                       J' ai une suggestion pour ton programme
                       Si tu connais le language de programmation des appareils à reconnaissance vocale, merci d' intégrer la possibilité de dire les coups oralement .


Merci, solak.

signaler à un administrateur
Commentaire de NoRabbit le 27/04/2004 19:20:44

whow, ce ne doit pas être une mince affaire...
non, je n'ai pas encore exploré ce domaine là, je crois qu'il faudrait chercher du côté des dll de microsoft inclusent avec certains de leurs logiciels (j'ai déjà vu quelques sources à ce sujet là...)
en tous cas, ça pourrait être une chouette option !
je ne sais pas si je vais m'y attarder pour le moment.
En ce moment, j'essaye de créer un système de plugin qui permettrait à n'importe qui d'implémenter une IA ou un système de jeux en réseau par exemple...(et pourquoi pas un système de reconnaissance vocale !)

En tous cas, merci pour l'idée, je la note.

signaler à un administrateur
Commentaire de Juch le 08/06/2004 10:03:34

Superbe ;) Rien a dire, a part les quelques subtilités qui ont été demandées précédemment !
Du beau travail

signaler à un administrateur
Commentaire de tbbuim1 le 29/06/2004 11:44:19

il manque une règle pour le pat.
Tu peux faire pat si au court de la partie,
les pièces se retrouvent 3 fois dans la même position.

signaler à un administrateur
Commentaire de NoRabbit le 29/06/2004 12:32:46

...ça va pas être simple... quelques précisions...?
si "toutes" les pièces se retrouvent dans la même position ?
ou une seule pièce seulement ? (ça me parait peu probable)
3 fois de suite ? ou 3 fois sur toute la partie ?

si c'est ce que je pense, il faudrait enregistrer l'emplacement de chaque pion et les comparer à chaque nouveau déplacement... ça risque d'être lourd à supporter pour les petites config...

et merci pour ton aide ;)

signaler à un administrateur
Commentaire de Afyn le 29/06/2004 13:21:12

-> NoRabbit
Oui ... ca s'apelle positions identiques ...
Il faut enregistrer le déroulement de la partie, et chercher les positions ki se répètent. Ca ne me parait pas trop compliqué en fait.

A+

Afyn

signaler à un administrateur
Commentaire de NoRabbit le 29/06/2004 13:38:32

ok tkx

non en fait, c'est vrai, ce n'est pas aussi compliqué que ce que j'imaginais.
dès que j'ai un peu de temps, je fais le changement.
Mais si quelqu'un se sent le courage de plonger dans mon code, qu'il n'hésite surtout pas !

signaler à un administrateur
Commentaire de Antamarilli le 26/11/2004 23:17:10

Salut,
juste pour préciser les règles de pat, adaptées de http://www.chessvariants.com/fidelaws.html (the F.I.D.E. laws of chess) :
- par accord entre les deux joueurs
- par impossiblité de jouer un coup légal pour un joueur (coup légal = qui ne met pas son roi en échec), quand le roi n'est pas en échec (s'il est en échec, c'est mat :)), et si le coup qui a amené à une telle position était légal
- quand la même position est apparue 3 fois dans la partie consécutivement ou non (quand elle est sur le point d'être jouée par le joueur au trait sur déclaration de sa part ou quand elle vient d'être jouée (le joueur au trait faisant la demande) (mais il faut qu'une déclaration soit faite avant le coup normalement sinon on perd le droit de déclarer), on entend par même position les mêmes pièces (même couleur même type) au même endroit (même case) avec les mêmes possibilités de mouvement (roque et prise en passant inclus))
- quand 50 coups ont été joués sans prise ni déplacement de pion (il faut que le joueur au trait le signale, et l'organisateur d'un tournoi peut augmenter le nombre de coups de cette limite pour certaines positions, c'est déclaré avant le match)
- quand on est dans une situation :
  - roi contre roi
  - roi et cavalier contre roi
  - roi et fou contre roi
  - roi et fou contre roi et fou lorsque les deux sont sur une diagonale de la même couleur
- quand l'adversaire d'un joueur qui n'a plus que le roi dépasse sa limite de temps ou fait un coup impossible (tiens, je la connaissais même pas, celle là)

En conclusion, ça fait du boulot si on veut ajouter les interfaces pour permettre à l'utilisateur d'appeler l'arbitre pour rendre la partie nulle (en passant, il doit aussi y avoir quelques ajouts à faire pour que le programme soit exactement conforme à l'ensemble des règles). J'en profite pour recommander aux joueurs d'échecs d'aller lire les règles sur le lien que j'ai proposé, vous allez sans doute, comme moi, apprendre des choses...

Voila, @+
Antoine

signaler à un administrateur
Commentaire de NoRabbit le 27/11/2004 12:25:47

merci, je vais regarder ça.

signaler à un administrateur
Commentaire de Antamarilli le 29/11/2004 12:31:28

Pas de quoi :-D !

signaler à un administrateur
Commentaire de coucou747 le 24/12/2004 00:08:35

On ne peux pas découper les fihcies en VB??? perso j'ai rien compris...
aparement tu connais bien les règles des échecs alors..
en éspérant que tu auras la réponse...
J'ai beau avoir fait un an d'échec en club, il y a une règle que je ne connais pas, et un détail aussi...

le détail : on note comment une prise en passant ?

la règle :Quand il y a echec, on m'a toujours apris que l'adversaire ne peut jouer un coup qui mate l'adversaire, si il reste échec... Alors si il y a une position comme celle la :
|R| |T| |t|
|  | |r| | |


Y a t'il échec ?
car dans l'absolu, l'échec s'ignifit qu'une pièce peut prendre le roi (si c'était son tour...) or ici, la tour blanche (T) ne peut pas prendre le roi car elle se metrais en échec...

L'échec est-il une menace du roi, ou une possibilitée de prendre ?

Tout le paradoxe est la ! ça fait plus de dix ans que je joue aux échecs, et je n'ai jamais vu de cas comparable, mais en programmation, tout d'un coup, on passe d'un cas simple à un casrécursif (en php, ça revient à faire soit une réponse de 1/10 seconde, soit 10 secondes... c'est pas négligeable...)

signaler à un administrateur
Commentaire de coucou747 le 24/12/2004 00:22:36

j'ai dit une connerie :
"on m'a toujours apris que l'adversaire ne peut jouer un coup qui mate l'adversaire, si il reste échec... "=> euh... non : quand il y a échec une pièce aurait pu prendre le roi si ça avait été son tour de jouer...

signaler à un administrateur
Commentaire de Antamarilli le 24/12/2004 11:16:42

Salut,
pour noter une prise en passant :
1. e4        h4
2. e5        d5
3. e5xd6 e.p. (ou p.p.)
(à moins que ça ne soit e5xd5 ? j'ai un doute...).
Pour tes questions sur le mat/la mise en échec, tu peux revenir au fait que lobjectif simplifié, c'est de prendre en premier le roi adverse. Dans ce cas, dans ta position, il y a échec : la tour blanche eut prendre le roi noir et les noirs auront perdu avant de prendre le roi blanc. En fait, une pièce clouée peut parfaitement faire échec. De même, quand un roi est mis en échec, son possesseur doit, à son prochain coup et à moins qu'il ne soit mat, s'assurer que son roi n'est plus en possibilité d'être pris, soit :
a. En prenant la pièce qui fait échec
b. En interposant une pièce entre la pièce attaquante et le roi.
c. En déplaçant le roi.
C'est la règle du PIF (Prendre Intercaler Fuir).
D'ailleurs, toi qui dit n'avoir jamais vu de cas comparable, j'ai un sujet de réflexion pour toi : est-il possible d'atteindre cette position dans une partie sans faire de coup illégal ? Dans ton cas, non je pense, car la tour blanche n'a pas pu arriver là, car le chemin horizontal est bloqué par t et R, et sur le chemin vertical, elle aurait déjà mis je roi noir en échec... Ce serait de toute façon possible avec une dame...
Je ne sas pas si ça permet d'éviter le récursif (faudrait que j'y réfléchisse plus...), à toi de voir....

signaler à un administrateur
Commentaire de coucou747 le 24/12/2004 12:22:20

justement si, un cas comparable ets possible... j'ai vérifié...
8|_|_|_|_|_|_|_|_|_|
7|_|_|_|_|_|_|_|_|_|
6|_|_|_|_|_|_|_|_|_|
5|_|_|_|_|_|_|_|_|t|
4|_|_|_|_|_|_|r|_|_|
3|_|_|_|_|_|_|_|_|_|
2|_|_|_|_|_|_|_|_|_|
1|_|_|_|R|_|T|_|_|_|
0|a|b|c|d|e|f|g|h|

voici un échiquier complet, tu est d'accord pour dire que cette position est réalisable...

c'est aux noirs de jouer
Th1
Tg1

et la selon toi, les noirs sont échec...

pour ta prise en passant, euh... bah c'est pas bon...

au cas ou ça aurait été : e5xd6...

signaler à un administrateur
Commentaire de Antamarilli le 24/12/2004 18:41:49

Salut,
Dans ta position, Tg1 est un coup non autorisé pour les noirs qui ne parent pas à l'échec que les blancs viennent de leur infliger.
Pour la prise en passant, je crois que quelques explications s'imposent...
En fait, cette règle a été inventée en même temps que la règle stipulant qu'un pion qui n'a pas encore été joué peut se déplacer de deux cases au lieu d'une (s'il le souhaite). Pour modérer les effets de cette règle, la prise en passant a été instaurée; le pion qui vient d'avancer de deux cases peut être pris comme s'il n'avait avancé que d'une case, c'est pourquoi je crois me souvenir que l'on écrirait e5xd6 même si le pion se trouve en d5. Malheureusement, je n'en suis pas sûr...
Par ailleurs, une position encore plus tordue pour les "échecs douteux" peut être obtenue.
8|_|_|_|_|_|_|_|_|
7|_|_|_|_|_|_|_|r|
6|_|_|_|_|_|d|_|_|
5|_|_|_|_|_|_|_|_|
4|_|_|_|_|R|_|_|_|(j'ai repris ton échiquier en
3|_|_|_|_|_|_|_|_| enlevant la colonne superflue...)
2|_|_|_|T|_|_|_|_|
1|_|_|_|_|_|_|_|_|
0|a|b|c|d|e|f|g|h|  

B                    N
Th2+              Dh4+

Dh4 est un coup qui pare l'échec infligé par les blancs, il est donc légal, et il inflige par ailleurs un échec aux noirs... On aura alors, bien sûr, Txh4+. Pour une position plus vraisemblable, on peut remplacer la tour blanche par une dame blanche, et placer le roi noir en h5. On obtient alors
B          N
Dh2+    Dh4+
Dxh4+  Rxh4
Et c'est partie nulle...

@+

signaler à un administrateur
Commentaire de coucou747 le 24/12/2004 19:38:33

sauf qu'avant Dh2+ c'est aux noirs de jouer....

signaler à un administrateur
Commentaire de Antamarilli le 25/12/2004 10:59:48

Ils auraient pu jouer, par exemple, Rg6-h5

signaler à un administrateur
Commentaire de jpzenitram le 20/07/2005 16:13:10

Bonjour,

J'ai un petit problème de compilation avec la ligne suivante:

Set D3DDevice = D3D.CreateDevice(0, D3DDEVTYPE_HAL, HwndSz, D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DWindow)

L'erreur n'est pas explicite, le code est -2005530516 Automation error.

Merci d'avance pour ton aide.
jpzenitram

PS : J'utilise VB 6.0.

signaler à un administrateur
Commentaire de nico1610 le 04/06/2007 18:08:40

Bonjour
Bonne sources hélas deux trois truc à revoir dans tes algos car ça cafouille essaye un coup du berger :
d2 - d4
c7 - c5
d4 - c5
d8 - a5
Tu verra que cette position donne un échec (ça fait même un mat selon les règles officiel) or il ne détecte pas l'échec ! Le plus surprenant c'est lorsque l'on clic sur le bouton "Afficher les case attaqué" a ce moment là il détecte l'échec !!  (c'est vraiment bizarre, je n'est pas plus approfondi la chose car je cherchai un algo de détection du MAT ce qui n'existe pas ici :0 )

signaler à un administrateur
Commentaire de NoRabbit le 11/06/2007 15:05:10

oui, il y a encore qques bugs, ca fait un bail que je n ai plus touche a ce code...
Il y a un probleme au niveau de la gestion des cases attaquees apres qu un coup ait ete joue.
Normalement rien de grave, desole pour ceux qui esperaient voir ce code devenir qque chose de plus aboutit.
On sait tous comment ca se passe, on commence mais on ne termine jamais.

Les bases sont la, le code est commente. Faites en qque chose de meilleur et postez le sur vbfrance, c est tout ce que je peux encore souhaiter pour ce code.

ciao et bon coding.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version


LG KP501

Entre 9€ et 159€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,203 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.