IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Free Pascal Discussion :

Création d'un programme d'échecs en Free Pascal


Sujet :

Free Pascal

  1. #41
    Membre régulier
    Avatar de glegat
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2015
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Avril 2015
    Messages : 61
    Points : 107
    Points
    107
    Par défaut Kempelen contre reste du monde
    je veux bien jouer quelques parties contre Kempelen et vous noter les coups.
    Merci de votre offre , dès que j'aurai terminé une version à peu près jouable je la mettrais à disposition sur ce forum et tout le monde pourra la tester à loisir. Je ne peux pas indiquer quand exactement, mais j'espère dans une semaine ou deux. De toute façon vous pourrez suivre l'évolution dans ce groupe de discussion.

  2. #42
    Membre régulier
    Avatar de glegat
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2015
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Avril 2015
    Messages : 61
    Points : 107
    Points
    107
    Par défaut Où j'en suis !
    Voici quelques infos sur l'avancement de mon projet. Non je n'ai pas abandonné ! (Tartakover (1887-1956) l'auteur du "bréviaire des échecs" disait « On n'a jamais gagné une partie en abandonnant ! ». Pourtant je me suis rendu compte de la difficulté de la tâche au fur et à mesure de l'avancement. J'en suis toujours à l'analyse des coups racines (je n'explore pas encore en profondeur), j'ai programmé 21 critères d'évaluation de ce coup racine (et j'ai encore 2 ou trois critères à rentrer).

    Exemple de critère : Prime au Roque, Pénalité pour la sortie Prématurée de la Dame (dans les 10 premiers coups), Prime à l'avancement des pions en fonction du nb de coups déjà joués, Prime à l'attaque du pion contre des pièces, Valorisation du contrôle du centre, Prime à l'attaque de la Dame, Plus value au mouvement qui aboutit sur une case contrôlée majoritairement par le camp au trait, Prime à l'échec du Roi, prise en compte du nb de pièces sur des cases non protégées , valeur intrinsèque des pièces en fonction de la case occupée etc....

    Je distribue mes primes pour motiver mes troupes, comme le ferait un chef d'entreprise (la comparaison du jeu d'échecs avec la vie est toujours facile à faire), j'ai même créé une prime de déplacement pour les pièces attaquées !

    Pourquoi tout cela, pourquoi cette façon de faire ?

    Ce type de démarche qui conduit à évaluer non pas la position mais les coups eux-mêmes en fonction de leur valeur intrinsèque en fonction des forces en présence à l'instant T sur l'échiquier sans envisager réellement les réponses de l'adversaire correspond je pense à un raisonnement de type humain, au-moins dans un premier temps. Le joueur humain ne calcule pas immédiatement des variantes mais envisage des coups de manière plus ou moins intuitive en respectant des règles générales. L'analyse des variantes se fait dans un second temps. Ce que j'essaie d'obtenir c'est un niveau le plus fort possible sans analyse en profondeur, de telle manière que j'obtienne une liste de coup (classé dans l'ordre du meilleur au plus faible) qui servira de point de départ à une analyse en profondeur qui vérifiera si les coups envisagés ne perdent pas de matériel,ainsi le programme jouera le coup le plus fort trouvé dans mon analyse des coups racines si celui-ci ne perd pas de matériel, dans mon analyse en profondeur je prendrais probablement comme seul critère le matériel (puisque l'évalution de départ portera sur plus de 20 critères) et si ma liste de départ est bien faite je trouverais probablement dans les 5 premiers coups de ma liste le bon coup à jouer. De cette manière je pourrais sans doute limiter l'analyse des coups en profondeur que pour les 5 ou 8 premiers coups de ma liste des coups racines et gagner du temps par la suite. C'est un élagage à priori.

    Tout ceci mérite d'être expérimenté, mais de tout façon je sais déjà que je ne ferais pas un programme très fort,mais mon objectif est de m'amuser et de produire un programme qui joue de façon reconnaissable et si possible humainement. Cette approche est beaucoup plus intéressante me semble t-il qu'une programmation qui recherche à analyser le plus en profondeur possible en privilégiant uniquement le matériel. Pourtant la force brute est aujourd'hui reconnue comme la plus efficace car les ordinateurs peuvent calculer des millions de variantes en quelques secondes, mais à quoi bon refaire ce qui existe déjà et de toute façon je n'arriverais pas, même avec cette méthode à faire un bon programme car je ne suis pas un pro de la programmation.

    Mais pour l'instant les résultats de Kempelen sont en dents de scie, mais ce qui est encourageant c'est que sans envisager la réponse de l'adversaire (sauf par le moyen artificiel de raisonnements euristiques, par exemple si je déplace une pièce contrôlée par l'adversaire je peux prévoir que cette pièce pourrait être prise au coup suivant et je n'ai pas besoin de "jouer" ce coup pour savoir cela), kempelen résiste parfois jusqu'à la nulle, face à des programmes dont j'ai volontairement baissé le niveau mais qui jouent quand même à un niveau de profondeur de 3 ou 4 demi-coups.

    C'est tout pour aujourd'hui, prochain point presse dans une semaine probablement.

  3. #43
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Tout cela est bien dit. Je trouve aussi qu'il est plus intéressant d'essayer d'évaluer les coups de façon humaine, bien qu'apparemment la façon la plus efficace, sinon la seule, de donner de la force à un moteur soit la force brute.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  4. #44
    Membre régulier
    Avatar de glegat
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2015
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Avril 2015
    Messages : 61
    Points : 107
    Points
    107
    Par défaut
    Mon projet initial était de faire une analyse sur deux demi-coups, en fait je me suis tellement amusé à relever le défi de ne faire jouer mon programmer que sur un demi-coup, le coup racine en fait, que je souhaite en rester là pour le moment car de toute façon mon programme ne sera jamais très fort même sur une analyse plus profonde et je ne me sens pas de force à faire beaucoup mieux. Si je devais poursuivre la programmation je pense que je reprendrais tout à zéro, car j'ai tellement compliqué les choses que mon code est pratiquement incompréhensible et devient difficile à faire évoluer. Cela fait un mois que je travaille sur ce programme 2 ou 3 heures tous les jours et je ne peux pas poursuivre plus longtemps car c'est au détriment de mes autres occupations qui me demandent aussi beaucoup de temps. Kempelen va donc être en suspend pendant un certain temps.

    En tout cas gràce à ce programme j'ai pu apprendre le langage pascal (mais j'ai encore beaucoup de progrès à faire !) et je me suis rendu compte de l'ampleur de la tâche pour réussir un bon programme jouant aux échecs.

    Je livre donc comme promis mon source et mon exécutable en l'état et mon fichier bibliothèque (en pièce jointe). J'ai introduit 34 critères d'évaluation mais j'ai des idées pour en rajouter au minimum une dizaine de plus et je pourrais sans doute facilement monter à 50 en conservant un temps de réponse de l'ordre de quelques centièmes de seconde. Ce qui donne des perspectives d'amélioration pour Kempelen.

    Le fichier bibliothèque BiblioKempelenv1.txt doit être placé sous c:\ mais vous pouvez indiquer un autre chemin si vous modifiez le source.

    Il est amusant de tester Kempelen avec des programmes faibles (sinon Kempelen perd en quelques coups et on a pas le temps de voir comment il est programmé), je propose d'utiliser l'interface Chess Arena http://www.playwitharena.com/?Download qui permet de charger des dizaines de Chess Engine gratuit, parmi lesquels vous trouverez le programme Project invincible
    http://project-invincible.sourceforge.net/ qui a le mérite de pouvoir être réglé par demi-coup ce qui en fait un sparring partner idéal pour Kempelen puisqu'on peut partir d'un niveau très très faible et monter progressivement. Il peut fonctionner avec Arena ou en toute autonomie avec un échiquier 3D. Il existe aussi un programme d'échecs aléatoire Random (écrit par Roland Chastaing) qui joue tout simplement des coups au hasard !. c'est idéal pour tester la capacité d'un programme à mater, et il a fallut 48 coups à Kempelen pour mater Random ! Kempelen avait encore pratiquement toutes ses pièces (sauf deux cavaliers coincés et pris par hasard) et il ne restait qu'un pion à Random ! c'est vous dire le faible niveau de Kempelen (un peu mieux que le hasard !). Du coup j'ai réfléchis et j'ai trouvé une solution pour que Kempelen puisse au moins détecter rapidemment tous les mat en 1 coup (c'est la moindre des choses) mais bon il faut s'y remettre et j'ai décidé de suspendre mes activités de programmeur pour l'instant.
    Kempelen lui ne fonctionne pas sous Arena vous devrez donc saisir les coups manuellement et il n'y a pas d'interface graphique...C'est du brut de font.

    Donc vous pouvez faire ce que vous voulez avec le source et si vous y apportez des évolutions notables je suis preneur, mais je doute que quiconque puisse comprendre quelque chose à mon charabia, j'ai programmé un peu à la va vite en me disant que je mettrais de l'ordre plus tard et finalement je n'ai jamais mis de l'ordre donc c'est un peu n'importe quoi, mais ça fonctionne, en tout cas je pense que le programme est stable (à voir). Je suis à l'écoute de vos remarques et conseils même si je vais faire maintenant une longue pause sur la programmation.

    Mon programme s'appelle Kempelen proto 42 car cela reste un prototype et pourquoi 42 parce que chaque fois que je rajoutais une fonction j'incrémentais le chiffre. Son niveau est d'une faiblesse extrême, il joue comme un débutant à qui on vient d'apprendre les règles et quelques principes de base on voit bien qu'il essaye de les respecter mais il est complètement perdu lorsque la situation se complique. Les nombreux critères que j'ai introduit parfois se cumulent ou se contredisent (mais j'ai essayé de limiter ce problème au minimum).


    Une dernière chose : vous verrez (si vous choisissez l'affichage des critères d'évaluation en option) que les évaluations que Kempelen donne à certains coups paraissent bizarres on passe du -10 au +10 sans que la position change énormément, la raison c'est que justement, Kempelen n'évalue pas de position sur l'échiquier pour l'ensemble des pièces en présence, il évalue seulement chaque coup individuellement de manière intrinsèque (je ne sais pas si cette explication aidera beaucoup à la compréhension...). Mais l'évaluation reste, en théorie, en valeur pion, par exemple un avantage positif égal à 1 correspond à un avantage équivalent à un pion, j'ai donné les valeurs relatives suivantes :
    Pion 1
    Cavalier 3
    Fou 3.5
    Dame 9.5
    Tour 5
    (Dans le programme les constantes déclarant ces variables valent le double mais je redivise par 2 ensuite dans le calcul)

    Je remercie tous ceux qui ont contribués à cette discussion et en particulier Roland Chastaing.

    PS : Attention, tant que Kempelen est dans sa bibliothèque d'ouverture les coups joués par l'adversaire ne sont pas contrôlés par le générateur de coups, si un coup saisie du style d2d ou e2e4g sera bien rejeté (Kempelen contrôle si le coup saisie fait bien 4 caractères (c'est un contrôle que j'avais mis en attendant mieux)), en revanche B9G9 sera accepté comme un coup qui sort Kempelen de sa bibliothèque d'ouverture et la partie se poursuivra, donc soyez attentif dans le début de partie à saisir des coups légaux. Ensuite une fois que Kempelen est sortie de sa bibliothèque aucun problème tous les coups sont vérifiés par l'arbitre. Oui je sais j'aurais pu corriger ce problème avant mais là j'ai vraiment plus le temps ce sera fait quand je m'y remettrais.

    Vous pouvez saisir les coups et les commandes en minuscule ou en majuscule normalement ça marche (j'ai modifié ça récemment).

    J'ai aussi prévu de faire un tableau des 34 critères d'évaluation en donnant quelques détails sur leur fonctionnement de manière à interprêter plus facilement les données affichées.
    Fichiers attachés Fichiers attachés

  5. #45
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 726
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 726
    Points : 15 126
    Points
    15 126
    Par défaut
    Bonjour,

    ah, quel malheur que tu arrêtes ton travail sur ce programme !
    Je l'ai testé hier et ce fut ma foi fort sympathique jusqu'à ce qu'à un moment, mon roi étant coincé en h1 et la place étant libre pour un cavalier adverse, celui-ci bondit en f2+ suivi par un plantage instantané et violent du programme...

    Étais-je tombé sur
    Reste à faire :
    Prévention fourchette ou attaque de cavalier sur le roi
    ?

    Je ne sais, et comme dit par ailleurs, je n'ai pas trop le temps de me pencher là-dessus (d'autant plus que pour recréer les conditions du problème, bonjour le challenge )
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  6. #46
    Responsable Lazarus & Pascal

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 855
    Points
    20 855
    Billets dans le blog
    84
    Par défaut
    Citation Envoyé par glegat Voir le message
    Mon projet initial était de faire une analyse sur deux demi-coups, en fait je me suis tellement amusé à relever le défi de ne faire jouer mon programmer que sur un demi-coup, le coup racine en fait, que je souhaite en rester là pour le moment car de toute façon mon programme ne sera jamais très fort même sur une analyse plus profonde et je ne me sens pas de force à faire beaucoup mieux. Si je devais poursuivre la programmation je pense que je reprendrais tout à zéro, car j'ai tellement compliqué les choses que mon code est pratiquement incompréhensible et devient difficile à faire évoluer. Cela fait un mois que je travaille sur ce programme 2 ou 3 heures tous les jours et je ne peux pas poursuivre plus longtemps car c'est au détriment de mes autres occupations qui me demandent aussi beaucoup de temps. Kempelen va donc être en suspend pendant un certain temps.

    En tout cas gràce à ce programme j'ai pu apprendre le langage pascal (mais j'ai encore beaucoup de progrès à faire !) et je me suis rendu compte de l'ampleur de la tâche pour réussir un bon programme jouant aux échecs.
    Bravo pour le travail fourni, le principal étant d'ailleurs de prendre du plaisir en sachant faire des choix. On apprend beaucoup en faisant par soi-même : c'est le seul moyen de se rendre compte que certaines remarques apparemment anodines sont porteuses de beaucoup de sens

    Je vais regarder le fichier joint et mille mercis de l'avoir déposé ici.

    Gilles
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  7. #47
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Je viens de télécharger votre programme ; je ne l'ai pas encore regardé mais je le ferai assurément. Je ne sais pas si vous continuerez ou non ce projet mais, sans flatterie aucune et en toute franchise, je trouve que vos commentaires sur votre travail et sur les difficultés rencontrées sont en soi une contribution intéressante. Vous avez très bien expliqué pas mal de choses, donc merci pour cette discussion.

    Au fait, si cela intéresse quelqu'un, le moteur Random supportant le protocole UCI se trouve .
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  8. #48
    Membre régulier
    Avatar de glegat
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2015
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Avril 2015
    Messages : 61
    Points : 107
    Points
    107
    Par défaut C'est réparé !
    ah, quel malheur que tu arrêtes ton travail sur ce programme !
    Je l'ai testé hier et ce fut ma foi fort sympathique jusqu'à ce qu'à un moment, mon roi étant coincé en h1 et la place étant libre pour un cavalier adverse, celui-ci bondit en f2+ suivi par un plantage instantané et violent du programme...
    j'ai trouvé le problème c'était rien du tout, juste avant de vous envoyer Kempelen j'ai fais une petite modif de rien du tout, j'ai testé quand même une petite partie et tout allait bien donc j'ai posté kempelen, c'est après que je me suis aperçu de la bourde, au 29ème coup kempelen Plante (un tableau insuffisamment dimensionné). J'ai réparé (nb de coups maxi par partie porté à : 222 coups) et donc je fais encore des tests en ce moment pour ne pas vous envoyer un Kempelen tronqué, je pense que cette fois c'est bon, je viens de terminer une longue partie et en plus Kempelen a gagné je vais également la mettre en pièce jointe dans la soirée

    Quel supense !

  9. #49
    Membre régulier
    Avatar de glegat
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2015
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Avril 2015
    Messages : 61
    Points : 107
    Points
    107
    Par défaut Voici la version qui termine les parties !
    Voici en pièce jointe Kempelen proto 42 bis avec en prime une partie gagnée avec l'aide de l'adversaire !

    Un petit changement de dernière minute empêchait kempelen d'aller au-delà de 28 coups, le problème est résolu.

    J'en profite pour dire que dans le source vous trouverez dans les constantes des dizaines de paramètres que vous pourrez modifier en ayant une influence sur le jeu de Kempelen, toutefois sachez que les réglages à faire sont très subtiles et pour l'instant j'ai obtenu un équilibre (encore loin de l'optimum) dans les différentes valeurs. Pour changer une valeur il faut tenir compte des autres paramètres, certains sont en quelque sorte reliés entre eux et c'est difficile de s'y retrouver. J'espère avoir le temps de poster ici (je ne sais pas quand exactement) un petit memo récapitulatif des critères d'évaluations et des paramètres. Donc il serait prudent de faire une copie du source d'origine avant de faire des modifs si vous souhaitez conserver en mémoire les paramètres d'origine.
    Fichiers attachés Fichiers attachés

  10. #50
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 726
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 726
    Points : 15 126
    Points
    15 126
    Par défaut
    Ouais super, ça n'a pas planté, et en plus je lui ai mis la misère, lol !

    Allez, 2 petites copies d'écran pour la route :

    Nom : Img_debut.jpg
Affichages : 366
Taille : 38,2 Ko

    Là j'ai été déstabilisé par les couleurs, "Sortie de la bibliothèque" aurait dû être en vert comme la ligne précédente de Kempelen, et décalé, non ?
    Enfin, j'en sais rien : en vert c'est "Kempelen :" et décalé, en bleu c'est "Kempelen joue :" et pas décalé...

    Oui,je sais, c'est du pinaillage mais j'y suis sensible,

    Nom : Img_fin.jpg
Affichages : 373
Taille : 39,2 Ko

    Là, j'ai appuyé sur une touche et il ne s'est rien passé : faut appuyer sur <ENTRÉE> pour quitter.

    Un dernier mot : pour avoir une apostrophe dans une string, il faut en mettre deux. Hé oui !

    Bravo pour le travail accompli là-dessus
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  11. #51
    Membre régulier
    Avatar de glegat
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2015
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Avril 2015
    Messages : 61
    Points : 107
    Points
    107
    Par défaut
    Là j'ai été déstabilisé par les couleurs, "Sortie de la bibliothèque" aurait dû être en vert comme la ligne précédente de Kempelen, et décalé, non ?
    Enfin, j'en sais rien : en vert c'est "Kempelen :" et décalé, en bleu c'est "Kempelen joue :" et pas décalé...

    Oui vous avez raison, et pour les apostrophes je ne savais pas, c'est le genre de détail avec lequel on perd du temps quand on ne sait pas, Merci !

  12. #52
    Membre régulier
    Avatar de glegat
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2015
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Avril 2015
    Messages : 61
    Points : 107
    Points
    107
    Par défaut
    Un dernier mot : pour avoir une apostrophe dans une string, il faut en mettre deux. Hé oui !
    Cette petite remarque m'a entrainé beaucoup plus loin que je ne pensais. Après avoir corrigé ce problème d'apostrophe je me suis aussi intéressé aux accents, j'ai consulté le codage ASCII et de fil en aiguille j'ai programmé un échiquier en mode texte. Donc voici maintenant le nouvel interface de Kempelen :
    Nom : EchiquierConsole.jpg
Affichages : 617
Taille : 59,7 Ko

    Je mets en pièce jointe le petit module qui réalise cet échiquier. Il y a un tableau tDoska119 que j'utilise dans Kempelen il représente les cases de l'échiquier avec comme contenu le n° correspondant à la pièce qui s'y trouve. Le petit programme joint est juste alimenté avec un exemple, le mouvement du pion en e4. Il est conçu pour le jeu d'échecs mais il vous sera facile de l'adapter à d'autres usages (dame, Othello etc...).

    La copie d'écran ci-jointe est mon premier test de cet échiquier intégré dans Kempelen. Si tout va bien très bientôt je mettrais cette nouvelle version en ligne.

    Mon échiquier en mode texte peut sûrement être amélioré, alors n'hésitez pas à me faire part de vos remarques.

    Dans Kempelen pour afficher l'échiquier il suffira de taper la commande E (ou e) quand c'est à vous de jouer. C'est très pratique car même en reportant les coups sur un vrai échiquier je m'y perdais un peu parfois et je n'étais pas sur d'être en phase avec les coups vraiment saisies dans Kempelen.

    Bon demain j'arrête...
    Fichiers attachés Fichiers attachés

  13. #53
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 726
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 726
    Points : 15 126
    Points
    15 126
    Par défaut
    Bonjour,

    grande nouvelle !
    Après un peu d'adaptation (remplacement des writeln par une procédure "log" qui enregistre dans un mémo et qui peut être adaptable à la cible [console ou GUI] juste avec un $IFDEF, remplacement des readln par une boucle repeat-until), je peux jouer avec mon interface et piloter en même temps le "moteur" Kempelen !

    La preuve :

    Nom : plateau.jpg
Affichages : 513
Taille : 87,8 Ko

    Et la raison de ce post, c'est pour connaître la direction que va prendre le programme de Gilles (que je remercie très très fort au passage ), car si à chaque nouvelle version il faut remettre les mains dans le cambouis pour l'adaptation, ça risque d'être laborieux et source d'erreurs.

    Proposition d'amélioration :
    j'ai fait un premier test de mise en modules, j'en suis à 4 et ça fonctionne très bien, je pense qu'il faudrait continuer dans cette voie, par exemple la procédure démente de + de 1000 lignes nommée evaluationDepth1 se retrouve toute seule dans un fichier ; ça peut s'appliquer à d'autres procédures, et c'est beaucoup plus facile à maintenir ainsi.
    Faudrait en reparler.

    D'autant plus qu'au niveau de l'intelligence du moteur, je soumets ce scénario à la communauté (c'est d'ailleurs cette situation qui m'a incité à écrire maintenant, à ce propos) : j'étais donc en train de faire ma première partie (pas encore automatisée au niveau des déplacements -- mon ihm sert juste de bloc-notes), le pion noir était en e5 et j'avais un pion blanc en d4, j'ai sorti ma dame en b3 et le moteur n'a pas vu venir le mat en b3xf7 (le cavalier en g5 est déjà là depuis 3 coups), il a joué d4xc3 !?
    À sa place, j'aurais fait c6e5 ou roquer...

    Attention, la copie d'écran est faite avant je positionne le coup Kempelen (d4c3, visible dans le mémo), pour que l'on puisse bien voir le truc...

    Je suis assez content
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  14. #54
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 415
    Points
    59 415
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jipété Voir le message
    grande nouvelle !

    Je suis assez content
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  15. #55
    Membre régulier
    Avatar de glegat
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2015
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Avril 2015
    Messages : 61
    Points : 107
    Points
    107
    Par défaut Kempelen Proto 48 pour très bientôt !
    Et la raison de ce post, c'est pour connaître la direction que va prendre le programme de Gilles (que je remercie très très fort au passage ), car si à chaque nouvelle version il faut remettre les mains dans le cambouis pour l'adaptation, ça risque d'être laborieux et source d'erreurs.
    Je suis épaté par ce que vous avez fait ! Si je comprends bien vous avez modifié le programme Kempelen pour le faire communiquer avec un interface comprenant une fenêtre d'information et un échiquier ! Même si tout n'est pas finalisé c'est impressionnant.

    Vous parlez du programme de Gilles, pour ce qui concerne le programme kempelen en tout cas c'est Gérard Legat, je ne sais pas qui est Gilles.

    J'ai travaillé un peu cette semaine sur une nouvelle version de Kempelen qui va sans doute être figé pour quelques temps ensuite. Mais la nouvelle version comporte pas moins de 48 critères d'évaluation (il y en avait 36 je crois dans la dernière mise en ligne du programme). Le programme est un peu plus fort, il se défend un peu mieux et attaque mieux (il est néanmoins plus faible en défense qu'en attaque). dans la position que vous indiquez, même si je n'ai pas les coups qui conduisent à cette position je peux espérer que maintenant kempelen jouerait un coup comme e2e4 ou petit roque pour défendre le pion f7, enfin il faudrait tester.

    La nouvelle version qui arrive comporte de nombreuses améliorations avec entre autre un échiquier (en mode texte) qui peut s'afficher à la demande.

    Vous pourrez tester tout cela dans quelques jours je pense avoir terminé début semaine prochaine. Les dernières petites améliorations sont toujours toujours plus longues à mettre en oeuvre qu'on ne le pense.

    J'en dirais plus sur les nouveautés lorsque je mettrais la nouvelle version à disposition.

    Bravo pour votre travail et à bientôt.

  16. #56
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 726
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 726
    Points : 15 126
    Points
    15 126
    Par défaut
    Citation Envoyé par glegat Voir le message
    Je suis épaté par ce que vous avez fait ! Si je comprends bien vous avez modifié le programme Kempelen pour le faire communiquer avec un interface comprenant une fenêtre d'information et un échiquier ! Même si tout n'est pas finalisé c'est impressionnant.
    En fait je l'ai adapté en lui modifiant les instructions d'attente comme readln par une boucle sur une string, boucle dont on sort quand la string est remplie par la partie graphique.
    Et j'ai remplacé les writeln par des instructions d'écriture dans un composant TMemo.

    Il a fallu que je réorganise le début des fichiers (puisque je le rappelle, j'ai découpé votre unique .pas en plusieurs unités au format Lazarus si je puis dire afin que les procédures puissent interagir entre elles), et voilà.
    Quelque chose genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    unit evaluation;
     
    interface
     
    uses crt, dos, Classes, Sysutils;
     
    PROCEDURE evaluationDepth1;
     
    implementation
     
    uses kempelen4lazarus;
     
    var 
      // plein de variables...
     
      // et ensuite les procédures, car j'ai complètement découpé la proc d'origine
      // evaluationDepth1 en autant de sous-procédures qu'elle incorporait de blocs,
      // les commentaires m'ont bien aidé. Merci pour ça !
      // il y en a pour 1100 lignes de code, ci-dessous...
    Citation Envoyé par glegat Voir le message
    Vous parlez du programme de Gilles, pour ce qui concerne le programme kempelen en tout cas c'est Gérard Legat, je ne sais pas qui est Gilles.
    Ah, j'ai fait une confusion avec le Gilles qui traîne par ici et me taquine bien sympathiquement. Bien noté pour Gérard, et encore désolé pour le mic-mac...


    Parlons moteur deux minutes : Il y a des choses que je ne comprends pas avec lui...

    Regardez ce plateau :

    Nom : check.jpg
Affichages : 432
Taille : 36,8 Ko

    le cavalier noir m'a pris le pion en e4, je l'attaque par d1f3 (carré bleu, c'est mon dernier coup), et le moteur, pour tenir la position (?), avance son pion d7d5
    Il n'a pas vu venir l'échec et mat sur f3f7++ !

    J'aurais eu les noirs j'aurais rapatrié ce cavalier en d6, en même temps il mettait la pression sur f7.
    Bizarre, non ?

    Citation Envoyé par glegat Voir le message
    [...] je peux espérer que maintenant kempelen jouerait un coup comme e2e4 ou petit roque pour défendre le pion f7, enfin il faudrait tester.
    e2e4 c6e5 plutôt, non ? e2e4 c'est moi qui l'ai joué pour commencer,


    En attendant, ce qui est agréable, c'est de déplacer les pièces blanches à la souris (clic-clic et pas glisser-lâcher) et les coordonnées sont envoyées au moteur, qui répond.
    Prochaine étape : récupérer les retours du moteur pour mettre à jour le plateau de jeu...

    Citation Envoyé par glegat Voir le message
    Bravo pour votre travail et à bientôt.
    Merci pour les compliments, mais tout le mérite vous revient, quelque part je n'ai fait que de l'habillage,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  17. #57
    Membre régulier
    Avatar de glegat
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2015
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Avril 2015
    Messages : 61
    Points : 107
    Points
    107
    Par défaut
    le cavalier noir m'a pris le pion en e4, je l'attaque par d1f3 (carré bleu, c'est mon dernier coup), et le moteur, pour tenir la position (?), avance son pion d7d5
    Il n'a pas vu venir l'échec et mat sur f3f7++ !

    J'aurais eu les noirs j'aurais rapatrié ce cavalier en d6, en même temps il mettait la pression sur f7.
    Bizarre, non ?
    J'ai programmé la position et dans la dernière version de Kempelen les réponses sont nettement meilleures :
    Il propose (dans l'ordre du meilleur au moins bon d'après l'évaluation Kempelen)
    Cc6xCe5 (+0.69) C'est effectivement un bon coup il se débarrasse du cavalier attaque la Dame et défend le pion f7 !
    Fe7 f6 (+0.327) Ce coup évite également le mat et renforce le contrôle du centre.
    f7 f6 (+0.266) Ce coup empêche le mat et attaque le cavalier blanc
    f7 f5 (+0.205) Evite également le mat mais affaibli un peu le roque noir
    e8 g8 (+0.090) Coup naturel qui empêche également le mat.

    Et bien entendu c'est la réponse Cc6xCe5 que Kempelen a joué.

    Bref ne ne suis pas mécontent car apparemment mon système de défense dans ce cas précis est correct. J'espère que cela fonctionnera dans d'autres situations du même style. Merci pour le retour.

    Concernant votre interface cela m'intéresse bigrement de pouvoir disposer du même avec la nouvelle version de kempelen. Cela me motive pour bien tester cette nouvelle version et y apporter toutes les améliorations possibles. J'espère que lorsque vous disposerez de la nouvelle version de Kempelen vous serez toujours motivé pour l'adapter à votre interface. Je pense que par la suite les modifs dans Kempelen se feront à des intervalles de temps beaucoup plus espacés.

  18. #58
    Membre régulier
    Avatar de glegat
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2015
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Avril 2015
    Messages : 61
    Points : 107
    Points
    107
    Par défaut Correctif
    J'ai été un peu vite dans ma réponse, en fait je me suis trompé en essayant de reproduire la position est j'ai donné le trait au Noir dans une position ou il avait déjà joué d7 d5, donc cela fausse l'analyse.

    J'ai reconstitué des coups pour obtenir la position avec cette fois le bon tempo, et Kempelen trouve quand le coup f7-f5 qui évite le Mat tout en défendant le cavalier, mais ce coup est nettement moins bon que Cd6 par exemple. J'ai mis en pièce jointe un pdf qui détaille un peu l'analyse de Kempelen et les raisons de son choix.

    Bref c'est un tout petit peu mieux que la version que vous utilisez en ce moment, mais bon sang j'ai encore du boulot ! Ceci dit je sais que Kempelen ne sera jamais un fort programme, mais il est intéressant du point de vue de la manière d'appréhender la programmation du jeu d'échecs.
    Images attachées Images attachées

  19. #59
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 726
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 726
    Points : 15 126
    Points
    15 126
    Par défaut
    Citation Envoyé par glegat Voir le message
    J'espère que lorsque vous disposerez de la nouvelle version de Kempelen vous serez toujours motivé pour l'adapter à votre interface.
    Plus que jamais !
    Je veux y arriver !

    Citation Envoyé par glegat Voir le message
    Je pense que par la suite les modifs dans Kempelen se feront à des intervalles de temps beaucoup plus espacés.
    Pour le moment, ce que j'ai me suffit pour faire fonctionner la mécanique de mon bazar : j'envoie des chaînes à kempelen genre e2e4 exactement comme si je les lui tapais quand il est en attente dans le readln, et il m'écrit ses réponses à travers une ligne writeln que j'ai rajoutée et que je récupère dans une chaîne, et voilà !
    Et tant que ça ne tournera pas à la perfection (voir ci-après), pas la peine d'aller plus loin, en ce qui me concerne.

    Citation Envoyé par glegat Voir le message
    Bref c'est un tout petit peu mieux que la version que vous utilisez en ce moment, mais bon sang j'ai encore du boulot !
    Oh ben moi aussi : me suis rendu compte que j'avais des petits cafouillages en mode moi contre kempelen avec mise à jour automatique de l'échiquier : je gère mal le passage d'un joueur à l'autre, donc 100 fois sur le métier...

    Citation Envoyé par glegat Voir le message
    Ceci dit je sais que Kempelen ne sera jamais un fort programme, mais il est intéressant du point de vue de la manière d'appréhender la programmation du jeu d'échecs.
    Tout à fait !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  20. #60
    Membre régulier
    Avatar de glegat
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2015
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Avril 2015
    Messages : 61
    Points : 107
    Points
    107
    Par défaut
    Pour le moment, ce que j'ai me suffit pour faire fonctionner la mécanique de mon bazar : j'envoie des chaînes à kempelen genre e2e4 exactement comme si je les lui tapais quand il est en attente dans le readln, et il m'écrit ses réponses à travers une ligne writeln que j'ai rajoutée et que je récupère dans une chaîne, et voilà !
    Et tant que ça ne tournera pas à la perfection (voir ci-après), pas la peine d'aller plus loin, en ce qui me concerne.
    En fait j'aimerai bien tester votre système, même s'il n'est pas terminé. Est-il possible de me transmettre simplement les executables (avec bien sur votre version actuelle de kempelen) pour que je puisse avoir exactement les mêmes conditions de fonctionnement que vous.

    Merci

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/06/2015, 16h25
  2. Réponses: 10
    Dernier message: 31/01/2006, 11h36
  3. Réponses: 2
    Dernier message: 30/01/2006, 22h19
  4. Optimisation d'un programme d'échecs
    Par Erickann dans le forum x86 32-bits / 64-bits
    Réponses: 8
    Dernier message: 23/11/2005, 20h23
  5. Création installer pour programme
    Par yanndublanche dans le forum Windows
    Réponses: 7
    Dernier message: 11/10/2005, 00h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo