To download NI software, including the products shown below, visit ni.com/downloads.
Overview
Chess Game with artificial intelligence 100% LabVIEW
Description
AI : algorithm MinMax + Alpha-Beta pruning
two game levels : "novice" and "Jedi"
editing interface (edit on/off)
This engine 5.5 is stronger than the previous engine 5.0 (Jedi level) ... good luck
unzip, run "Chess_ouadji.vi", have fun!
Ouadji,
Requirements
Software:
Steps to Implement or Execute Code
Additional Information or References
NI Snippet
**This document has been updated to meet the current required format for the NI Code Exchange.**
kudos are welcome, here, at the bottom of the first post .
Thank you in advance to all,
ouadji.
Example code from the Example Code Exchange in the NI Community is licensed with the MIT license.
feedback and comments are welcome.
If you like this game (and the code), a kudo here , will be always appreciated.
thank you.
Ouadji,
I am very interested in this. However my ver. of Labview is 2012. Any way you could save this for an earlier version? Or is it a matter of resources not available in 2012? AI is a very intriguing topic for me.
Thanks in advance
Michael Burney
hello Myke,
ok, no problem Myke ... give me your email address ... (ouadji@hotmail.com)
Sur LAVA, on aime bien aussi
petite mise à l'honneur par Michael Aivaliotis du Staff LAVA
avec un "Featured dowload"
Infos ... (pour ceux que ce code amuse et intéresse)
Je pense pouvoir proposer la version suivante d'ici 2 mois maximum. De multiple modifs (optimisations, code plus performant, plus rapide, mieux construit). Un nouveau paramètre a été introduit dans l'analyse du moteur : "la Quiescence". La Quiescence évalue si une position est "stable" ou non. Il n'est pas question ici d'une évaluation statique, mais plutôt d'estimer la stabilité dynamique future. Ce paramètre permet de diminuer le problème de "l'effet d'horizon". Celui-ci tend à repousser les problèmes au delà de la profondeur d'analyse. Cette Quiescence module en continu la profondeur d'analyse. J'ai également perfectionné le comportement du moteur par un "first pass". Quelque soit la profondeur "nominale" à laquelle le moteur travaille, maintenant il commencera toujours par une double analyse en profondeur 1 et 3 ... ensuite il recommencera avec sa profondeur nominale. Avantages ? Détection immédiate des Mat en 1 et 3 coups avec une perte de temps négligeable de l'ordre de 1/2 seconde. Quand le moteur travaille avec une profondeur élevée (6,7,8) cela évite d'attendre inutilement, alors que le Mat est trivial. Même si vous attendez globalement enre 1 et 2 minutes, il vous mettra Mat en 1/2 seconde. La version 5.0 avait déjà un "undo", il y a maintenant un "redo"
Tables de débuts et de fins de parties (??)
Non ... je m'y refuse, pourtant cela m'a été proposé/demandé plusieurs fois.
Pourquoi ? d'abord parcequ'il faut gérer une base de données de plusieurs Go. Cela rendrait le "poids" de ce code énorme (téléchargement ?) ... et ensuite "par principe" ... mon but étant de faire jouer LabVIEW aux échecs "tout seul", uniquement avec du code. En d'autres termes ... mon but n'est pas de créer un moteur d'échecs (il y en a déjà bien assez) .. mon but est de faire jouer LabVIEW au échecs, chaque coup doit être 100% LabVIEW. Avec des Tables de fins et de débuts de partie, on parlerait "échecs", plus LV.
Ce code étant toujours en version bêta (à tout jamais car c'est un sujet sans fin), j'ai introduit la capacité de stopper le moteur à tout moment dans son processus d'analyse récursif. Il s'agit ici d'une fonctionnalité de "mise au point et de tests". J'ai également largement peaufiner la gestion des erreurs (il ne doit jamais y en avoir ). Le but étant d'arrêter proprement la totalité des processus (4 en //), quelle que soit l'erreur et d'où qu'elle vienne, avec fenêtre, infos et descriptif.
La version suivante propose également une interface pour "entrer" ou "editer" une position existante. Très ludique pour "tester" ceci ou cela, très puissant également comme outil de mise au point (pour moi ) L'interface accepte le format FEN, ou le positionnement "à la main". Elle refuse certaines configurations, pions en ligne 1 ou 8, situations de Rois non valides, etc. L'interface analyse également en temps réel la présence ou non d'un Mat.
La totalité du code, à tous les niveaux, est perpétuellement en transformation - perfectionnement
à suivre ...
S'il vous arrive de faire de temps en temps une petite partie avec ce code (la version 5.0)
et si vous remarquez le moindre soucis de comportement, bugs, choses bizarres en tous genres, s'il vous plaît, ne laissez rien passer, faites moi signe (je n'attends que ça)
merci de m'avoir lu, bonne journée à tous.
Pour ceux que le jeux (ou le code) intéresse ...
voila ou j'en suis :
Je finalise la version 5.2 (elle sera dispo au plus tard début Mai) Le code a largement évolué. J'ai peaufiné la fonction d'évaluation. Cependant, après 8 mois de "recherche", Je confirme l'affirmation que j'avais lu, à savoir : "quelque soit la complexité et l'efficacité d'une fonction d'évaluation, cela ne vaudra jamais une et une seule profondeur d'analyse supplémentaire". En effet, j'en suis arrivé à faire jouer ensemble deux versions différentes du moteur, en essayant mille choses au niveau des fonctions d'évaluation de chaque moteur. Conclusion ... il est difficile de rendre un moteur "largement" supérieur uniquement et simplement par une fonction d'évaluation différente (à profondeur égale). Mais ... par exemple, si je fais jouer les Noirs avec une profondeur de 4 et les Blancs avec une profondeur de 5 ... alors là ... les Blancs prennent le dessus de façon systématique. Je dirai que d'améliorer la fonction d'évaluation fait progreser le niveau de jeu de façon arithmétique, alors que la profondeur le fait progresser de façon géométrique ... il n'y a pas photo. Conclusion ... j'ai donc peaufiné cette fonction d'évaluation, mais également j'ai peaufiné largement le code pour gagner en vitesse d'exécution ... ce qui me permet maintenant de jouer avec une profondeur de départ de 5, contre 4 pour la version 5.0. Le moteur de la version 5.2 bat dans 90% des cas le moteur de la version 5.0.
Egalement dans cette nouvelle version 5.2, une interface supplémentaire (fenêtre pop-up) permettant de définir ou de modifier une situation de jeu (Edit - Setup).
voilou, je posterai cette ver 5.2 au plus tard début Mai.
PS:
ensuite, je pense mettre ce Projet de côté, "un an" cela suffit.
(J'ai envie de retourner vers les XControl et XNode, cela me démange à nouveaux)
Merci d'avoir lu et bonne journée à tous.
Awesome! Can't wait to try it!
Ma dernière version (5.5) est disponible.
Une intelligence artificielle plus performante, une interface d'édition de l'échiquier, deux niveaux de jeu ("novice et "Jedi") ... un code qui a largement évolué. Bon amusement pour ceux et celles qui aiment jouer aux échecs.
Cette version, au niveau "jedi", vous donnera (je l'espère) quelques frissons, voir quelques énervements .
PS: pour le "b-a-ba" de l'interface d'édition, relire le premier post.
Ouadji,
https://www.youtube.com/watch?v=eG9cQiL5qNI
in the background, on the computer screen, one can see clearly my chess game.
it's one of the first versions (maybe the version number 4)
The latest 5.5 is much more advanced.