JEU D'ECHECS AVEC IA

cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 - 7 avril 2004 à 19:12
WhiteSpi Messages postés 17 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 22 avril 2004 - 22 avril 2004 à 12:28
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/21749-jeu-d-echecs-avec-ia

WhiteSpi Messages postés 17 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 22 avril 2004
22 avril 2004 à 12:28
Salut tout le monde,

En fait j'ai pas eu de soutenance, ici c'est juste un memoire qu'ils veulent... mais j'en ai bien chié kan meme ;)
Concernanr le prolog.... je l'ai étudié mais alors faire une IA bonjour la galere... et puis j pense ke le C++ est kan meme beaucoup plus rapide, sans compter que faire cette interface graphique en prolog heu... amuses toi ;)
Pour l'IA si j'ai la motivation, meme sans changer vraiment le programme ya pein d'endroits ou je sais deja que je pourrais optimiser les calculs... et ca demande qu'a etre fait...
Concernant skone007, je comprends pas bien ta question... si tu parles d'etimer le niveau d'un joueur humain ca se fait quand tu joues en club, tu obtiens un classement en jouant contre des joueurs classés. Pour un jeu d'echecs informatique, il faut faire tout plein de tests contre des joueurs classés et voir ses resultats.
Voila, j'ai mis a jour la source qui devrait resoudre beaucoup de bugs.
Le programme ne devrait plus planter, mais restez quand meme en profondeur 2, ya toujours un probleme de liberation de memoire.

Merci a tous!

WhiteSpi
skone007 Messages postés 166 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 23 juin 2009
21 avril 2004 à 23:38
je voudrai juste dire que c'est bien d'estimer le niveau de l'adversaire et d'adapter le jeu et je voudrai savoir comment t'estime le nniveau des joueurs ?
cs_zorlac Messages postés 17 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 14 août 2005
20 avril 2004 à 14:55
lut grâce à toi je suis passé de mon bon vieux vc++ 6 à vc++ 7, je passe du com au .net,. Je suis en tout cas d'accord avec "MetalDwarf", car l'intelligence sera plus efficace si elle reste autonome par contre tout en implémentant certains cas de figure, il pourrait se référer à une base de connaissance qu'il aurait construite au fuire et à mesure de ses parts mais au plus il tentera de combinaisons, au plus l'IA sera souple et surprenante pour nos esprit humain ;-) bon boulot en tout cas continue... tu pourrai st'inspiré du prolog pour créer une IA encore plus performante ;-) je c mm si je susi encore jeune le prolog est une vieille riquette mais je pense que c un ebonne base d'observation pour implémenter un system orienté object ;-) enfin bon ...
cs_jugar Messages postés 7 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 5 mai 2004
18 avril 2004 à 22:12
Re-salut tous le monde...

Je vous entend parler des logiciels d'échecs et des histoires de base de connaissances sur les ouvertures.

A ce propos, je vous conseil de jeter un coup d'oeil sur "Chess Master 7000". Ce jeu à une base de donnée DEMENCIELLE !!! Il prend 2 CD entiers (rien que ça!!!). Et là, y'a toute les ouvertures possibles (avec la variante de Machinkov jouer à Pekin le 31 février 1937 à 14h32... et les réponses de Jordy et M. Jackson correspondantes).

Plus des analyses de parties entieres.

Plus un tutoriel bien foutu. (aprend à utiliser ta tour, comment jouer avec un pion un fou, défendre ...)

Plus une IA de tarré ou tu choisis ton joueur. (un tel joue trop avec la dame, un autre aime faire chier, un autre est stratege, un autre est un attaquant kamikase, ... et le big boss, "Ches Master", te met la rouste de ta vie en moins de vingt coups).

Voili, avec ca vous allez réapprendre les echecs.

Au plaisir...

PS pour whitespi: Bon boulot, en tout cas, pour trois mois de projet. J'espère que ta soutenance c'est bien passée. Salut
lamiseb Messages postés 1 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 15 avril 2004
15 avril 2004 à 10:09
Au sujet de Deep Blue, je voudrais faire un commentaire : il calcule près de 200 millions de positions à la seconde. Et même comme ça s'il calculait tout, il mettrait une dizaine de secondes à calculer à trois coups de profondeur (un coup = un coup blanc et un coup noir), donc pour descendre à 4 coups, on multiple par 30 au carré, et on a le temps d'attente. Là où ça se complique le plus c'est qu'il faut savoir éliminer le plus de variantes possibles pour ne garder que celles qui en valent la peine. Quand à stocker le plus possibles d'ouvertures en mémoire, c'est toujours possible de mettre les plus courantes, mais si quelqu'un arrive à faire quelque chose d'exhaustif, qu'il me le dise...
Bon courage.
WhiteSpi Messages postés 17 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 22 avril 2004
12 avril 2004 à 00:02
En fait la difference entre un humain et un ordi c'est que l'humain joue grace a son experience... donc en gros il regarde la position et sait les coups bons et pas bons. Tu peux pas fare comprendre ca a l'ordinateur et donc tu bourrines sur la profondeur de recherche.
Par contre s'il y'en a qui sont intéréssés j'ai actuellemnt un probleme. Ce probleme c'est celui evoqué plus haut a savoir que avec 128 Mo de ram par example ca ne suffit pas. Ce probleme est lié au fait que la mémoire ne se libere pas come il faut lorsque je detruit l'arbre. Je ne vois vraiment pas la raison. S'il y'en a qui on tla moindre idée ou la moindre envie de resoudre ce probleme ca serait super cool.
J'ai mis un post a cette adresse :
http://www.cppfrance.com/forum.v2.aspx?ID=209791
Merci a tous.

WhiteSpi
cs_PiX3L Messages postés 102 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 13 août 2005 1
11 avril 2004 à 15:27
Bon il est vrai que je n'ai jamais essayé de faire une IA pour un jeu d'echecs mais en temps que joueurs, je sais bien que ça sert completement a rien de prevoir 10 coups a l'avance, mais vraiment a rien du tout.
Après peut etre que la demarche est différente lorsqu'il s'agit d'une IA car justement on peut calculer bcp de choses grâce a la vitesse des processeurs mais je suis pas du tout persuadé de l'utilité d'autants de calculs.
Voila :)
MetalDwarf Messages postés 241 Date d'inscription mardi 29 octobre 2002 Statut Membre Dernière intervention 23 janvier 2006
11 avril 2004 à 11:33
Tu te trompes PiXL.Ca peut servir de calculer des ouvertures et des choses comme ca, mais la base d une IA d echec est et restera pour longtemps l etude de tous les coups possibles. Bien sur il y a mieux que l algorithme bete et mechant (mini-max), comme alpha-beta, negamax,...
Mais essaye d implementer ton modele d IA et tu verras que ca ne marche pas (ce n est pas pour rien que Deep Blue est un monstre...).
cs_PiX3L Messages postés 102 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 13 août 2005 1
10 avril 2004 à 18:36
Salut, je n'ai pas tester ton programme mais tu parles de niveau de profondeur pour les calculs. Sache que pour une IA d'échecs ça sert a rien de calculer pleins de coups à l'avance. Tout d'abord il vaut mieux lui apprendre toutes les ouvertures possibles (enfin les plus courantes) afin que le début de jeu soit le mieux possible. Ensuite faut que tu fasses des tests si la piece peut etre prise, est-ce qu'elle est protegée, y a t-il un risque de fourchette, d'échec à la découverte etc...
Bonne continuation :) !
eldered Messages postés 232 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 mai 2022
10 avril 2004 à 13:06
Salut, je n'ai pas encore essayé ton programme, ms j'ai lu tous les commentaires, et ça a l'air lourd ... je pense que tu devrais utiliser des heuristiques pour faire jouer le cpu, parceque un parcourt exploratoire explose vite la machine ... de plus j'ai l'impression que tu mélange un petit peu tout, tu parle de ce parcourt pour détécter si le roi est en échéc : "... mais je pense ke si tu augmentes la profondeur ca doit resoudre le probleme ..." mais moi je pense, même si j'ai jamais coder un jeu d'échec, k'il fodrait dans un premier temps tester chacune des figures adverses présentes sur ton échiquier et regarder si elles mettent en périle tel ou tel figure {tps de calcul rapide ...} et ensuite par rapport a sa, tu test si tu dois défendre tes figures privilégiées, ou alors attaqué avec une / des heristiques, et c'est en découpant le probléme comme ça que tu pourras reduire les tps de calculs ... diviser pour reigner ;)

Voila, aprés j'avoue que je n'ai pas lu le code et que je me trompe certainement car je n'y ai pas réfléchit longtps, ms ça peut etre une piste pour continuer ;) !!! En tout cas bon courage !!! ++
WhiteSpi Messages postés 17 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 22 avril 2004
10 avril 2004 à 03:21
Merci a tous pour vos conseils :)

Bubble concernant tes tests...
Le niveau c la depth, c'est a dire la profondeur de recherche de chaque coup.. donc en gros soyons clair.... dans la mesure ou le programme est loin d'etre optimisé.. si tu lui fais une depth de 11, et qu'on dit qu'il y a en moyenne 30 coups possible sur chaque position... ca fait 30^11=beaucoup beaucoup, et objectivement ca marchera pas. Du coup le processeur part a taquet et tu peux plus fermer le programme paske t'as plus la main => plantage.
Convernant les problemes de memoire... je t'avouerais que j'ai 756 MO de RAM donc... ca posait pas trop de problemes chez moi ;)
Cela dit le probleme doit venir, comme l'a souligné jugar du minimax. En effet, je genere l'arbre possible en entier avant de le supprimer... ce qui fait que si la profondeur est grande tu satures vite ta mémoire, fodrais ke je m'y penche aussi.
A propos d'afficher les coups joués... je suis carrement d'accord ;) mais le probleme c ke j'avais un vieux bug kan je permettais a l'ordi de rentrer ses coups dans la liste et j'ai pas le temps de chercher immediatement puisk le projet je le rends dans une semaine ;);) alors je suis sur le rapport lol. Cela dit dans le mode 2 joueurs la liste marche correctement.

Enfin merci a tous ca fait super plaisir... je me demandais si j'allais le continuer ou le laisser en etat... mais vous etes en train de me motiver a l'ameliorer ;)

++
WhiteSpi
cs_jugar Messages postés 7 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 5 mai 2004
9 avril 2004 à 19:48
Re-salut,

grace à cppfrance.fr, tu as la chance d'avoir l'équipes de debuggage la plus grosse, la plus exigeante et la plus chiantes du moooooonde!

On va te le tester, te l'éprouver ce prog...

donc je confirme a partir de depth 3-4, memoire insuffisante.
( WinXP, celeron 2.4ghz avec 192Mo, je sais pas bcp de mem mais c un poratble )

Je suppose que tu fais un parcours d'arbre pour ton IA. Ben essaye de reduire la tailles des noeuds. Ou ne sauvegarde que les coups (4 characteres == int) et non la position complète du plateau (si tu ne le fait pas). est-ce que tu efface les noeuds deja explorés et les branches evaluées comme mauvaises? Ah je t'avais dis c du boulot cette connerie de jeu d'echec!!!

En attendant, question de l'indicateur de joueur: il est tout le temps sur "white" car dès que je pose ma pièce, le prog fonce dans ses calculs tête baissé. Tu devrais mettre à jour le coup joué, l'affichage, etc,... juste avant de lancer l'IA.

Et enfin, les coups joué par noir ne s'affiche pas dans l'historique.

Voili, en esperant ne pas trop te saouler, A+
bubble44 Messages postés 200 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 3 août 2004
9 avril 2004 à 15:32
Bon ben niveau 1, le programme joue n'importe comment, j'ai essayé le niveau 11, ca repondait pas trop, alors j'ai essayé de fermer le programme (essayer est le mot).

Niveau 4 c'etait mieux, sauf qu'il a joué les memes coups que niveau 1, pis a un moment ca a ecrit : memoire virtuelle insuffisante (mes 128 mo de ram + swap disk ?).

Voila, bonne continuation lol.
bubble44 Messages postés 200 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 3 août 2004
9 avril 2004 à 15:10
Bon avec :

http://win6.jp/misc/mfc71.zip

y a les 3 dll dedans, ca semble marcher.
j'essaye le programme now.
ramboana Messages postés 5 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 21 mai 2007
9 avril 2004 à 14:40
je ne sais pas quoi dire
WhiteSpi Messages postés 17 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 22 avril 2004
9 avril 2004 à 12:39
RHAA
BON.... je viens de comprendre effectivement pourquoi les dll n'etaient pas dans le zip... c'est CPPfrance qui refuse mon nouveau zip car ce dernier est trop gros.
Alors je sais pas trop comment faire... bon je vous file juste le nom des 3 dll necessaires, elles doivent se trouver un peu partout: mfc71.dll, msvcp71.dll, msvcr71.dll.

Bonne chance ;)

++
bubble44 Messages postés 200 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 3 août 2004
9 avril 2004 à 11:41
"OK OK,
Bon j'ai rajouté dans le ZIP toutes les DLL qui devraient etre necessaires so.... enjoy now ;)'

------

vous les voyez ou vos dll dans le zip ? bon j'arrete de boire, et je reviens dans qqs heures, p'etre que j'y verrais + clair.

;-)
WhiteSpi Messages postés 17 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 22 avril 2004
8 avril 2004 à 22:31
Ouais je suis désolé pour ce bug... je l'ai eu moi oci.. en fait le fait ke tu puisses pas bouffer le roi c paske j'ai fait cette restriction. Aux echecs normallement tu bouffes pas le roi adverse...et puis a l'epoque ou ct autorisé dans mon programme... si jamais tu le faisais ct big crash et debugger ;)
Il fo juste que je trouve pourkoi il se laisse foutre le roi en echecs.. mais je pense ke si tu augmentes la profondeur ca doit resoudre le probleme puiskil voit kil peut se faire bouffer son roi (=15O) dans mon prog.

Pour savoir le tour tu as un indicateur graphique en haut a droite juste en dessus de la liste des coups.

Voila

++
WhiteSPi
cs_jugar Messages postés 7 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 5 mai 2004
8 avril 2004 à 21:50
Salut,
impressionnant... grosse entreprise que de faire une IA d'echec.

J'ai fait une petite partie avec l'ordi... et il a pas vu que je le mettai en echec :( (avec ma reine en a4 et son roi en position initiale)
A la limite c pas grave... mais il m'a interdit de manger son roi.

Encore un ou deux petits bugs... bon boulot en tout cas.

continu bien! A+

PS: question graphique tu pourais faire un petit indicateur pour savoir a qui le tour
WhiteSpi Messages postés 17 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 22 avril 2004
8 avril 2004 à 16:27
OK OK,
Bon j'ai rajouté dans le ZIP toutes les DLL qui devraient etre necessaires so.... enjoy now ;)

++
WhiteSpi
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
8 avril 2004 à 14:12
Pareil, mais je pense que mon pack .NET RT est installé. Ça peut venir d'autre chose? Ce serait qd même bête que les exes ne soient pas autonomes. C probablement pas ça.

---------------------------
WinChessFighter.exe - Composant introuvable
---------------------------
Cette application n'a pas pu démarrer car MFC71.DLL est introuvable. La réinstallation de cette application peut corriger ce problème.
---------------------------
OK
---------------------------
WhiteSpi Messages postés 17 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 22 avril 2004
8 avril 2004 à 10:40
Ouais je pense que c'est une question de framework .NET, il faut qu'il soit installé sur la machine... VC++ .NET oblige...
LeDesassembleur Messages postés 64 Date d'inscription vendredi 21 décembre 2001 Statut Membre Dernière intervention 16 janvier 2009
8 avril 2004 à 10:06
salut !

C'est sans doutes un bon prog mais je tente de tester l'exe et j'ai un zoli mesage : manque : msc71.dll...

Dommage.

je réessaierai ce soir de chez moi car là au moins j'ai le .net
C'est un comble... ;-)
WhiteSpi Messages postés 17 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 22 avril 2004
8 avril 2004 à 09:36
J'ai rajouté comme demandé pas bubble44 l'exe au zip, donc pour ceux ke ca interesse vous pouvez vous procurer la nouvelle version du ZIP.
Le jeu est effectivement développé a l'aide de Visual C++ .NET, bien que je n'ai pas utilisé les classes .NET
Voilà, bonne journée tout le monde ;)
WhiteSpi Messages postés 17 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 22 avril 2004
8 avril 2004 à 09:35
J'ai rajouté comme demandé pas bubble44 l'exe au zip, donc pour ceux ke ca interesse vous pouvez vous procurer la nouvelle version du ZIP.
Le jeu est effectivement développé a l'aide de Visual C++ .NET, bien que je n'ai pas utilisé les classes .NET
Voilà, bonne journée tout le monde ;)
bubble44 Messages postés 200 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 3 août 2004
7 avril 2004 à 20:44
Dommage qu'il y ai pas un executable, j'aurais bien aimé y jouer, mais j'ai pas C++ ou C++.net d'installer pour compiler.

: (
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
7 avril 2004 à 20:21
visual 7 grrr :(
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
7 avril 2004 à 19:12
ca a l'air vraiment tout ca, je vais vite regarder !!!
Rejoignez-nous