Example Program Drafts

Showing results for 
Search instead for 
Did you mean: 

Chess Game (latest version 5.5)

by Trusted Enthusiast Trusted Enthusiast ‎10-08-2014 06:39 AM - edited ‎01-30-2017 10:41 AM

(latest version 5.5 - November 3, 2015)


Chess Game with artificial intelligence 100% LabVIEW 

AI : algorithm  MinMax  +  Alpha-Beta pruning

two game levels : "novice" and "Jedi"

editing interface  (edit on/off)

a) moving mode : left-clic on the starting square, left-clic on the destination square

b) positioning mode : right-clic on a square opens a context menu to choice the piece.

This engine 5.5 is stronger than the previous engine 5.0 (Jedi level) ... good luck 

unzip, run "Chess_ouadji.vi",  have fun!

Ouadji,


beta1.png

if you like my chess game, a kudo is welcome. (here, first post)

Comments
Trusted Enthusiast Trusted Enthusiast
Trusted Enthusiast

feedback and comments are welcome.

If you like this game (and the code), a kudo here , will be always appreciated.

thank you.

Trusted Enthusiast Trusted Enthusiast
Trusted Enthusiast

SR7.png

Member Myke
Member

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

Trusted Enthusiast Trusted Enthusiast
Trusted Enthusiast

hello Myke,

ok, no problem Myke ... give me your email address ... (ouadji@hotmail.com)

Trusted Enthusiast Trusted Enthusiast
Trusted Enthusiast

Sur LAVA, on aime bien aussi 

petite mise à l'honneur par Michael Aivaliotis du Staff LAVA

avec un "Featured dowload"

https://lavag.org/files/

https://lavag.org/topic/18661-cr-chess-game/

ChessGame_LAVA.png

Trusted Enthusiast Trusted Enthusiast
Trusted Enthusiast

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

original.png

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.

Trusted Enthusiast Trusted Enthusiast
Trusted Enthusiast

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.

Trusted Enthusiast Trusted Enthusiast
Trusted Enthusiast
Member fahad80
Member

Awesome! Can't wait to try it!

Trusted Enthusiast Trusted Enthusiast
Trusted Enthusiast

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,

Trusted Enthusiast Trusted Enthusiast
Trusted Enthusiast

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.

Contributors