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'ECHECS WINDOWS AVEC IA (+EXE)


Information sur la source

Catégorie :Jeux Niveau : Initié Date de création : 12/07/2003 Date de mise à jour : 29/09/2003 01:42:41 Vu / téléchargé: 7 244 / 1 193

Note :
8,67 / 10 - par 3 personnes
8,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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

Description

Cliquez pour voir la capture en taille normale
Jeu d'echec tournant sous Windows, avec IA (niveau de l'IA reglable dans le fichier game.c, voir MakeAutoMove())
Bon pour le moment, seul l'alpha beta a été implementé (qui permet quand même une profondeur permettant de battre la plupart des joueurs moyens!).
la fonction d'evaluation du jeu est aussi assez nulle pour l'instant (tient seulement compte des possessions materielles).
ca avance bien tout de même, le jeu est plutôt agréable. Essayez et dites moi!  
 

Source

  • // Tout dans le zip (sources + exe)
 // Tout dans le zip (sources + exe)

Conclusion

Compilez avec VC++ 6 et il devrait pas y avoir de pb.  
 

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 AmK le 12/07/2003 15:59:12

je n'ai pas compilé mais rien qu'en voyant le screenshot , ça a l'air pas mal !

signaler à un administrateur
Commentaire de Funto66 le 12/07/2003 19:13:04

T'as oublier de mettre resource.rc :(
Je peux pas compiler parce que je connais pas les noms à donner aux ressources...
Mais comme AmK, je pense que ça doit être pas mal !

signaler à un administrateur
Commentaire de Nicolus le 12/07/2003 20:47:28

vous allez pouvoir tester, j'ai rajoute resource.rc dans le zip!
par contre vous risquez d'etre decu en voyant la fonction EvaluateScore() -> seules les possessions materielles sont prises en compte (pour l'instant hehehe)

signaler à un administrateur
Commentaire de Chouchou182 le 13/07/2003 18:33:45

Bravo

Belle interface, excellente IA !!!
(Pas encore réussi a gagner)

Comment on rocke (si c'est possible) ?

A++

Encore Bravo!!!

signaler à un administrateur
Commentaire de GoldenEye le 14/07/2003 15:36:51

Ah enfin un programme/source intéréssante. Bravo pour l'effort
Compilation : pas de problème, le source est bien commenté et assez clair.
Exécution : Le programme tourne bien mais la fonction d'évaluation est à améliorer (ce qui ralentira immanquablement le programme malheureusement...)
NB : j'ai réglé à 10 la profondeur de AlphaBeta et le prog a planté... A 8, c'est vraiment lent... mais c'est normal !!!
Rajoute un menu d'options et ce sera super !
Bonne continuation

signaler à un administrateur
Commentaire de LordBob le 14/07/2003 21:03:38

ouais c clair, c'est loin d'etre mal...

signaler à un administrateur
Commentaire de Nicolus le 15/07/2003 19:12:11

merci. jvé essayer d'ameliorer tout ca mais pour le moment, je suis sur un autre projet, tout aussi interessant : le pb du voyageur de commerce! c'est plutot passionnant, donc le jeu d'echecs patientera un peu... en plus, j'ai des idees d'ameliorations pour le puissance 4 que j'ai posté il y a un petit moment donc, a vous de bosser!:)) -> implémenter au moins une bonne eval, voire le "quiescence search", plus l'"iterative deepening", une generation de mouvements plus rapide a l'aide de lookup tables, etc...

signaler à un administrateur
Commentaire de mathmoi le 15/08/2003 16:17:36

Bonjour Nicolus,

Je programme aussi un jeu d'échecs.

Pour l'instant je n'ait implémenté qu'Alpha-Beta avec une fonction d'évaluation simple (le matériel) toutefois, mon programme est facilement batable, parcequ'ils ne peut pas explorer plus de 5 profondeurs dans un temps raisonable.

J'aimerais savoir à quelle profondeur ton programme peut jouer et/ou combien de coups à la secondes il explore.

Mathieu.

signaler à un administrateur
Commentaire de chichi3373 le 28/08/2003 20:12:57

bonjour Nicolus

    Je programme aussi un jeu d'echec, qui pour l'instant vos le tient ( un poil plus lent mais je suis en delphi), Je voulais juste te dire que l'alpha beta est utilisé pour les arbre trié.
    Pour ma part je fais donc une évaluation de l'ensemble de la liste de mouvement possible (pas iteré donc) puis je la trie et enfin j'applique l'alpha beta .
    Je peut tjrs perdre des coup plus interessant (ce n'est qu'une evaluatiion apres tout), mais les chances sont plus faibles.
    Vue ton system de notation actuel(materiel) ca importe peu, il est rare que des pieces réapparaissent, mais bon si tu decide de le changer (genre activer tes bonus de position) ca peut etre utile, Moi je suis entrain de tester des reseaux de neuronnes.

signaler à un administrateur
Commentaire de AluCaRDo le 07/09/2003 21:21:48

salut !

Moi j'en ai fait un avec alpha beta, killer move (pour trier et peut etre ainsi enlever des bouts d'arbres avec alpha beta), et notation sur materiel et positions ... Le probleme est qu'il est sous java donc il rame ... quel est l'idiot qui fait une IA sous java me direz vous ... ben moi !!! ... je vais donc le passer sous C++ en essayant d'ajouter des reseaux de neurones (si j'y comprends quelque chose car pour l'instant je n'y connais rien !!!) ...

Je n'ai pas fait tourner ton prog mais a en voir le screenshot tu n'as pas bcp d'options ... moi je trouve que des options de genre 2 players, revenir coup precedent, conseil ordinateur, reglage niveau, etc ... ca fait doubler l'interet qu'on peyt porter a un jeu d'echec ...

Si c'est implementé, ne tiens pas compte de ces remarques !!

signaler à un administrateur
Commentaire de Iwin le 26/09/2003 15:10:48

Ouais, bah c inpressionnant de ce prendre une raclée par ton prog, j'vais étudier l'IA paske ça a vraimment l'air interessant.

signaler à un administrateur
Commentaire de adrien178 le 30/12/2003 15:45:13

je n'ai pas compris le bout de code suivant:

if(score >(pieces_values[KING] / 10))
  {
    state= IN_CHESS;

pouvez vous m'éclairer svp, merci !

signaler à un administrateur
Commentaire de adrien178 le 30/12/2003 15:54:53

j'ai pas compris le :

if(score >(valeur_pieces[ROI] / 10))
  {
    etat = EN_ECHEC;

signaler à un administrateur
Commentaire de coucou747 le 12/12/2004 18:46:11

j'avais testé ton jeu il y a longtemps et je me suis apercu, je ne sais plus si c'était dans les prises en passant ou dans les roques mais il y avait des petits problèmes de légalitée des coups...

Sinon, ton ia est pas mal, masi sans lesroques, c'est un peu plus des échecs...

Sinon, quand je regarde ta façon de jouer, en général, les IAs ne sont pas assez conne pour se prendre un berger...
Tu dois commencer par prendre le centre puis te déveloper...
Je te donnes un ex d'ouverture pas trop mal :
e4
Cc3
Cc6
F... (tu peux faire b5 masi c pas terrible ou e2 ou encore d3...)
O-O
puis d4 pour sortir l'autre fou...
On commence par sortir les pièces moyennes puis ensuite on roque, on sort les dèrnières petites pièces, puis on mets les deux tours sur la même ligne en mettant la dame sur une colone ouverte si possible...

(ça fait bcp à mettre dans une eval fonction...)

signaler à un administrateur
Commentaire de archaoniro le 14/09/2005 16:56:15

Hello...

Le jeu est bien fait, j'essaie de débuter en C++ et pour l'instant je ne sais rien faire côté graphisme, mouvement, son.. rien en mdr. Donc bravo pour ce jeu.

par contre, je n'écrivais pas pour ça à la base, mais plutôt pour signaler une erreur de taille.
J'ai mit échec et mat le roi noir, mais le jeu ne l'a pas prit en compte, le noir a pû jouer à nouveau et m'as mit échec et mat... Le jeu vérifie-t'il si il peut mettre le joueur mat avant de vérifier si l'IA est mat ? A voir lol. Sinon encore bravo

signaler à un administrateur
Commentaire de cdf le 20/09/2005 18:00:47

Hello,
j'ai eu plusieurs fois le même problème qu'Archaoniro.
dans le code, il y a :
// C'est a l'ordinateur de jouer
    if(game.state != CHESS_MATE && game.cur_color == BLACK)
    {
      // Calcul du coup que va jouer l'ordinateur
      GetBestMove(&best_move, &game, BLACK, 3, 3);
     ...

Avant de calculer son meilleur coup,le prog vérifie  qu'il n'est pas en "echec et mat" mais ne fait pas de traitement particulier s'il est en "simple echec". Dès lors, chaque fois qu'il est mis en echec, il trouve plus interressant de mettre l'adversaire en "echec et mat" (quand il le peut). J'ai pas encore eu trop le temps de regarder comment résoudre le prob mais si je trouve, je te prévient.

A part ça, chapeau bas pour ce joli prog.

signaler à un administrateur
Commentaire de Stormy le 24/03/2006 00:09:03

Je viens de battre ton jeu d'échecs (belle partie) mais il se présente un bug. Alors qu'il se trouve en 'échec et mat', il se permet de poursuivre la partie. Je suis assez content de ton petit programme et j'aurais voulu t'aider à discerner ce bug.
J'ai une capture d'écran pour prouver cette prétention
contacte-moi snakeee@free.fr pour l'obtenir ++

signaler à un administrateur
Commentaire de Chewbi666 le 03/05/2006 09:13:28

Pas mal du tout ! Je l'ai aussi mis mat mais il a répliqué "...Dxb2 les blancs sont échecs et mat!" ;o))

Très bon début (après avoir passé 3 mois pour un jeu de dames correct je sais que c pas facile), pour la suite (dans l'ordre):

- rajoute les roques (et les prises en passant?! pas essayé, mais ce n'y est probablement pas non plus)
- mets une meilleure fonction d'évaluation (www.france-echecs.com par exemple pour demander à une bande d'allumés passant leur temps derrière leur échiquier ce qu'ils en pensent ;o))
- améliore l'alpha-beta si ce n'est pas déjà fait (nullMove, poursuite de l'evaluation en cas de promotion, évaluation statique sans prises possible..etc)
- ajoute la nulle par répétition (3 fois la meme situation, meme joueur au trait) et par 50 coups (50 coups [1 coup=coup blanc+coup noir] sans prise ni déplacement de pion = nulle)

D'ici là j'espère que mon IA d'échecs sera aussi sur pattes :-)

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

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,234 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é.