Je tenais en compte votre suggestion et j'ai travaillé dessus. La version 0.0.6 de ValisoaChess possède son propre échiquier. On n'a plus besoin de véritable échiquier pour jouer avec lui. :). Merci pour la suggestion !
Version imprimable
Bonjour !
Voici la version 0.0.7 de ValisoaChess. Il gère la nullité par répétition de coup. Si une position se répète 3 fois successif, il déclare match nul. J'ai aussi rajouté une sorte de priorité au roque. Dès que le roque serait possible, il le fait.
Pièce jointe 299250
Bonjour !
Merci pour cette remarque Jipété. Je suis conscient du danger de ce choix et j'ai pris des précautions pour pallier au problème qui pourrait arriver au roi.
1- La solution est de rajouter d'autres critères ( surtout à l'ouverture ) pour empêcher le roi de roquer s'il y a de menace. Un exemple de critère est la "pénalisation de pièce en prise".
2- Puisque le roque concerne surtout le début du jeu, je ne pense pas qu'il y aurait de menace grave à cause du roque. Avec les "principes de base de l'ouverture" transposés en algorithme, il serait impossible qu'une position soit affaiblie à cause de roque car le roque se fait aux alentours de 5èm à 7èm coup. En respectant cela, les dangers comme " le mat de l'idiot " ou " mat de berger " n'auront pas leur place. :)
3- Malgré cela, je vais quand même faire plusieurs tests à ce critère pour être sûr que le roque du roi ne cause aucune menace à son propre camp.
Bonjour tout le monde !
La version 0.0.8 est maintenant disponible. Elle gère la nullité par la règle des 50 coups. La règle veut que si 50 coups ont été joués sans qu'il y ait capture ou déplacement de pion, la partie est déclarée nulle. (https://fr.wikipedia.org/wiki/R%C3%A8gle_des_50_coups). En plus j'ai rajouté un critère qui permet de donner plus de points aux cases centrales e4, e5, d4, d5 parce que c'est souvent sur ces cases que la bataille se passe et en général, celui qui occupe ou contrôle ces cases a plus d'avantage.
Pièce jointe 305109
Bonjour !
Voici la version 0.0.9 de ValisoaChess qui gère la nullité par insuffisance des pièces pour mater. J'ai rajouté le point des cases semi-centrales c3, d3, e3, f3, f4, f5, f6, e6, d6, c6, c5, c4 comme étant un critère.
Nombre de critères : 12 8-)
Pièce jointe 307664
Bonjour !
La version 0.1.0 gère tous les mouvements et toutes les règles du jeu d'échecs.
Nombre de critères : 13
Critère rajouté : Le point des cases semi-bords b2, c2, d2, e2, f2, g2, g3, g4, g5, g6, g7, f7, e7, d7,c7, b7, b6, b5, b4, b3.
Pièce jointe 311978
Bonjour !
Quand j'entre mon coup, la page d'accueil se réaffiche, l'échiquier apparaît par-dessus : tout se mélange. C'est normal ?
Autrement, vous n'avez jamais pensé à faire une interface au standard UCI ? Ça n'empêche pas d'ailleurs de conserver une interface texte "maison".
Bonjour Roland Chastain. C'est normal quand la page d'accueil se réaffiche mais l'échiquier qui apparaît par-dessus et que tout se mélange n'est pas normal; ce n'est pas ce qui apparaît chez moi, donc il y a un problème d'interface. Mais puisque j'ai changé radicalement la partie interface de ValisoaChess je n'ai donc pas pu trouver d'où vient le problème et par conséquent je ne l'ai pas pu corriger. J'ai abandonné totalement l'interface console pour la publication "grand public". Je l'ai remplacé par une vraie interface graphique tout en continuant à augmenter son IA au fur et à mesure.
Justement, je suis en train de penser à faire une interface au standard UCI mais je l'avoue je connais pas le standard UCI ni comment le faire et encore moins comment le "coder" en pascal.
J'aimerais aussi que ValisoaChess puisse accepter le protocole UCI, c'est mon étape suivante, mais je ne sais pas comment faire cela. Je souhaite qu'on puisse intégrer ValisoaChess, le moteur, dans des interfaces existantes comme Arena, Scid, ChessBase...
Pouvez-vous m'aider à faire ces deux trucs ?
1- Créer Une interface graphique, indépendante, au standard UCI; dans laquelle on peut intégrer non seulement ValisoaChess mais d'autres moteurs aussi comme stockfish...
2- Insertion de protocole UCI dans le moteur de ValisoaChess.
Bonjour !
La nouvelle version ValisoaChess 0.1.1 possède une vraie interface graphique avec laquelle on peut utiliser une souris pour cliquer les pièces à déplacer. Plus besoin de saisir les coups comme on le faisait avec l'interface console des versions précédentes.
Pièce jointe 314792
Nombre de critères de choix de coup : 14
Dernier critère rajouté : Pièce en prise. Ce critère est en quelque sorte l'inverse du critère " Valeur des pièces à capturer ". Cela l'empêche de capturer un fou contre une dame (tout en tenant compte des autres critères bien sûr). Cela le permet aussi de parer une menace de capture et de se mettre à l'abri.
Ces deux critères font partie des critères de base de victoire dans une partie d'échecs.
Je tiens à signaler que cette nouvelle interface graphique contient encore certains bugs que je corrigerai à la prochaine version. Mais ValisoaChess 0.1.1, le moteur, gère bel et bien tous les mouvements et toutes les règles du jeux d'échecs.
Bonjour ! C'est aussi ce que j'ai l'intention de faire avec mon propre programme : séparer l'interface graphique du moteur et les faire communiquer par le protocole UCI. Donc nous devrions pouvoir nous entraider. ;)
J'ai déjà fait quelques essais préparatoires. J'ai changé en moteur UCI deux programmes dont je ne suis pas l'auteur : TSCP et Deep Ross. En fait, ces deux moteurs ne supportent qu'une partie du protocole, mais cela suffit pour une utilisation normale. Pour supporter l'intégralité du protocole, c'est un peu compliqué : je vous dirai pourquoi à l'occasion.
J'ai aussi fait quelques essais du côté de l'interface graphique : je pourrai vous les montrer si vous le voulez. En attendant, ceci pourrait vous intéresser et vous donner une première idée de la façon dont les choses fonctionnent.
Bref, j'ai déjà un peu travaillé sur le sujet mais j'ai encore des progrès à faire. Voilà, je n'ai pas trop le temps de vous en dire plus. Si vous voulez transformer votre programme en moteur UCI (ne supportant qu'une partie du protocole), ce n'est pas très compliqué : vous devriez pouvoir y arriver en vous inspirant des deux exemples dont j'ai donné le lien plus haut. S'il faut plus d'explication, n'hésitez pas à me solliciter.
Ok merci pour le conseil. Je vais d'abord analyser vos programmes et je vous ferai part de mon avis et de mon avancée.:plusser:
J'aimerais que vous me montriez aussi vos essais du côté interface graphique. :merci:
Voici la nouvelle interface graphique de ValisoaChess :
Pièce jointe 314872
Bon, alors dans le temps j'avais fait ça :
LazUCIDemo.zip
C'est un programme Lazarus, une application fenêtrée qui permet de démarrer un moteur UCI, de lui envoyer différentes commandes et de recevoir ses réponses. Pour la communication avec l'application console, le programme utilise le composant UnTerminal. Mais on peut aussi utiliser l'unité Process ou directement l'API Windows.
J'ai essayé le jeu. L'ordinateur se laisse prendre par le coup du berger (je crois que c'est comme qu'on l'appelle), le mat en quatre coups que tout le monde connaît. Il y a encore du travail. :)
Est-ce que vous avez essayé mon jeu d'échecs ? Comment trouvez-vous l'interface ? On ne peut pas travailler à la fois sur l'interface graphique et sur le moteur. Si j'étais vous, j'utiliserais une interface existante de façon à pouvoir concentrer tous mes efforts sur le moteur, qui est la partie la difficile et aussi la plus stimulante.
Le code source d'Eschecs est protégé par la licence saint Augustin : Aime et fais ce que tu veux. ;)
Bonjour, oui j'ai déjà essayé votre jeu et je vois qu'il est encore plus fort que ValisoaChess. Il connait déjà les principes d'ouverture et il est assez bon dans quelques répertoires d'ouvertures. Toute fois, je l'ai battu facilement. On dirait qu'il est "un bon débutant". Vous ne pensez pas à augmenter son niveau ?
A propos de l'interface, c'est génial l'échiquier en marbre. Je n'ai pas encore pu rajouter autant d'options sur ValisoaChess.
- En fait ValisoaChess sait quand c'est " échecs et mat" mais il ne le voit pas venir :D ; pas encore. Je compte rajouter ce critère à la prochaine version.
- Vous avez raison, c'est difficile de travailler à la fois sur l'interface graphique et sur le moteur. Cela demande beaucoup de temps et l’augmentation du "Niveau" du moteur se ralentit à cause de ça. Toute fois, je préfère m'aventurer un peu entre l'interface et le moteur pour prendre un peu d’expérience ; en d'autres termes, pour "essayer quelques choses". Et à propos du temps, je crois que cela ne me pose pas beaucoup de problème parce que ValisoaChess est un projet à temps libre pour moi. Je ne compte pas le terminer d'un seul coup mais je vais plutôt prendre le plaisir de le développer au fil du temps et mon chemin est encore long (Championnat du monde des logiciels d'échecs) ;) .
- A propos de code source d'Eschecs, votre programme, compte sur moi, je vais l'analyser au millimètre près.
à propos de LazUCIDemo, moi aussi j'ai fait le même type de programme, fenêtré, en se basant sur votre ucidetector et ça a fonctionné mais ce n'est pas encore terminé. Je vais désormais utiliser LazUCIDemo pour terminer mon projet de transposition de ucidetector sur Lazarus. Merci.
J'ai aussi amélioré votre UCIdetector (la version originale) pour que l'utilisateur puisse choisir librement le répertoire dans lequel se trouve son application à tester.
Pièce jointe 318017