begin process at 2012 02 07 10:47:11
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > JEU D'ECHECS AVEC IA

JEU D'ECHECS AVEC IA


 Information sur la source

Note :
9,33 / 10 - par 3 personnes
9,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Jeux Niveau :Initié Date de création :07/04/2004 Date de mise à jour :08/04/2004 09:30:46 Vu / téléchargé :8 698 / 1 681

Auteur : WhiteSpi

Ecrire un message privé
Commentaire sur cette source (28)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Salut a tous,
Pour faire bref, j'ai dans la cadre d'un projet réalisé un jeu d'echecs avec Intelligence Artificielle. Bon, la vérité c'est que l'IA est pas très forte et que ya des conneries (genre interface reseau, take back quand on joue contre l'ordi) et deux trois autres trucs qui fonctionnent mal et que je dois corriger. L'IA se met aussi parfois en echecs toute seule (donc c pas cool)!!! mais le jeu est entierement fonctionnel en mode 2 joueurs, et presque entierement contre l'ordi.  Ne soyez pas trop severes, je ne suis qu'un petit debutant du C++ ;) mais j'ai quand meme passé 3 mois assez intensifs pour en arriver la.
Bon voila assez parlé, j'espere que cette source pourra aider des gens... ou simplement faire plaisir aux currieux ;).
PS: Désolé pour ceux qui ne comprennent pas l'anglais... mais j'étais obligé de programmer tout en anglais dans la mesure ou je fais mes etudes en angleterre.
PPS: Les sources sont tres peu commentées et je vais essayer d'améliorer ca aussi.



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source avec une capture JEUX SERPENT par antho974
Source avec Zip Source avec une capture PENDU EN SDL par Damsou91
Source avec Zip STATE MACHINE MODIFICATION MATH BUCKHAM par billybones79
Source avec Zip AUTRE GRILLE DE SUDOKU par Eneur
Source avec Zip Source avec une capture SOKOBAN EN C POUR DÉBUTANT (VERSION AMÉLIORÉE BASÉE SUR LE T... par eustatika

Commentaires et avis

Commentaire de LordBob le 07/04/2004 19:12:20

ca a l'air vraiment tout ca, je vais vite regarder !!!

Commentaire de MoDDiB le 07/04/2004 20:21:38

visual 7 grrr :(

Commentaire de bubble44 le 07/04/2004 20:44:16

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.

: (

Commentaire de WhiteSpi le 08/04/2004 09:35:28

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 ;)

Commentaire de WhiteSpi le 08/04/2004 09:36:19

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 ;)

Commentaire de LeDesassembleur le 08/04/2004 10:06:27

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... ;-)

Commentaire de WhiteSpi le 08/04/2004 10:40:07

Ouais je pense que c'est une question de framework .NET, il faut qu'il soit installé sur la machine... VC++ .NET oblige...

Commentaire de Kirua le 08/04/2004 14:12:54

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  
---------------------------

Commentaire de WhiteSpi le 08/04/2004 16:27:40

OK OK,
Bon j'ai rajouté dans le ZIP toutes les DLL qui devraient etre necessaires so.... enjoy now ;)

++
WhiteSpi

Commentaire de jugar le 08/04/2004 21:50:59

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

Commentaire de WhiteSpi le 08/04/2004 22:31:07

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

Commentaire de bubble44 le 09/04/2004 11:41:42

"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.

;-)

Commentaire de WhiteSpi le 09/04/2004 12:39:24

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 ;)

++

Commentaire de ramboana le 09/04/2004 14:40:42

je ne sais pas quoi dire

Commentaire de bubble44 le 09/04/2004 15:10:49

Bon avec :

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

y a les 3 dll dedans, ca semble marcher.
j'essaye le programme now.

Commentaire de bubble44 le 09/04/2004 15:32:11

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.

Commentaire de jugar le 09/04/2004 19:48:56

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+

Commentaire de WhiteSpi le 10/04/2004 03:21:25

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

Commentaire de eldered le 10/04/2004 13:06:43

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 !!! ++

Commentaire de PiX3L le 10/04/2004 18:36:55

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  :) !

Commentaire de MetalDwarf le 11/04/2004 11:33:16

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...).

Commentaire de PiX3L le 11/04/2004 15:27:00

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 :)

Commentaire de WhiteSpi le 12/04/2004 00:02:20

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

Commentaire de lamiseb le 15/04/2004 10:09:32

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.

Commentaire de jugar le 18/04/2004 22:12:06

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

Commentaire de zorlac le 20/04/2004 14:55:44

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 ...

Commentaire de skone007 le 21/04/2004 23:38:40

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 ?

Commentaire de WhiteSpi le 22/04/2004 12:28:38

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

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales