je ne comprend pas comment configurer le temps de reflexions de l'IA...
ou fait on cela?
je ne comprend pas comment configurer le temps de reflexions de l'IA...
ou fait on cela?
En effet, l'option n'est pas présente dans cette interface. Pour l'instant, je règle le temps de reflexion dans le code, je l'ai mis à 3 secondes. Je l'ai donc ajouté dans une nouvelle version archivée ici :
http://sub0.developpez.com/delphi/exe/TableB5.zip
J'ai simplement remplacé la barre de réglage de transparence par le réglage du temps de reflexion de l'IA (3ème barre tout en bas). Tu remarqueras que les 1er coups joués en début de partie sont très rapides, la recherche commence vraiment au bout de 4 ou 5 coups... A gauche, juste au dessous de la liste des coups, il ya une petite barre de progression qui indique le temps restant à l'IA pour jouer. Je rappelle d'ailleurs qui il est possible d'interrompre cette recherche en cliquant sur le bouton gauche de la souris, à+
Ya un bug assez énorme et simple à régler :
Quand tu joues sur le temps de réflexion de l'IA, tu peux monter, pas de pb, par contre, tu peux aussi mettre 0.
Et là, il apparait un "division par zéro" pas joli joli...
Par contre, il est plutôt bien conçu.
Pour les débutants, proposer les coups possibles, c'est bien, mais on devrait avoir la possibilité d'enlever ça ?
Sinon, joli boulot quand même car c'est complexe à réaliser.
Tu as utilisé des méthodes "classiques", non ?
J'entends par là que tu n'as pas tenté l'approche algo génétique ou autre chose ?
Salut Progman!oops, comme j'ai ajouté l'option rapidement pour Quentin en force, je n'ai pas fait gaffe à ça.Envoyé par progman
Je corrige le bug immédiatement. Merci.
Oui, ya une case à décocher... "conseils activés" (la 3ème en partant de la gauche).Envoyé par progman
La méthode de recherche de l'IA est classique :Envoyé par progman
Une fonction d'évaluation utilisant Min-Max, Alpha-Beta et PVS (Principal Variation Search).
On en avait déjà parlé dans ce sujet, page 5 :
http://www.developpez.net/forums/vie...689053#1689053
...mais toutes vos suggestions sont les bienvenues !
Bonjour à tous!
Juste un petit up pour vous dire que je continu le développement du programme. Dernièrement, j'ai changé les graphismes des pièces par des jeux de meilleures qualité (dessin plus fin) et la possibilité de lancer le programme en plein écran si celui-ci a été fermé agrandi. Il est également possible de changer la résolution de l'écran sans que le programme soit altéré (les nouvelles dimensions sont immédiatement prises en compte). A présent, je prépare le dialogue pour définir ses propres skins. On pourra y choisir les couleurs, la teinte, luminosité, contraste des pièces, indépendemment ou non de l'échiquier, choisir également la texture des cases (bois, marbre, métal ou import d'image), les dimensions du cadre de l'échiquier, les marges, la police des coordonnées, etc... Bref, les graphismes de ce jeu seront redéfinissables au maximum et l'utilisateur pourra sauver les paramètres dans un fichier (skin perso) pour pouvoir le rappeller quand il le souhaite.
Pour la suite, il me restera à implémenter les ouvertures, le calcul des ELOs, et le tchat. Je vous ai d'ailleurs préparé une petite démo de l'interface graphique du tchat pour ceux qui veulent voir à quoi il va ressembler et surtout si vous trouvez des bugs, avertissez-moi !
http://sub0.developpez.com/delphi/exe/rv1.zip
Merci.
dire que j'avais jamais vu ce post... je vais tester la derniere version pour la peine
Etant un ancien champion d'echec (junior et departemental, faut pas rever non plus ), je vais essayer de lui tenir tête
(sens qu'il va se prendre une taule )
Génial.
N'oubli pas qu'il ya une barre de réglage tout en bas pour définir le temps de reflexion accordée à l'IA. A chaque fois que l'IA perd, cette valeur augmente automatiquement d'une demi seconde. Je rappel également que les ouvertures ne sont pas encore implémentées. La dernière version est toujours dispo à cette même adresse :
http://sub0.developpez.com/delphi/exe/TableB5.zip
à+
salut c'est très cool ton programme je l'aime bien; cependant lorsque je gagne il affiche "game over". et puis il faudrait donner la possibilité d'annuler un pas précédement effectué dans un delai imparti au joueur. ton est très reussi j'aimerais que tu m'indique comment tu fais , car je suis debutant en programmation et j'utilise delphi et de plus jsuis un amateur des jeux déchec
bonne continuation
salut c'est très cool ton programme je l'aime bien; je l'ai testé sur un pc avec un pII 233 Mhz et 96 Mo de Ram
bonne continuation
Salut heistein !
Tu as raison :
• Le jeu est capable de savoir quel camps a gagné la partie. Même dans le cas d'un pat, il peut savoir quel camps possède les pièces les plus fortes. D'ailleurs, cela est nécessaire pour le calcul des ELOs... Je penserai à ajouter l'affichage pour indiquer quel camps à gagné.
• C'est prévu de pouvoir revenir en arrière lorsque le jeu sera en ligne; Le joueur pourra revenir sur un coups (avec le bouton droit) dans un délai de 1 seconde, les hologes des joueurs seront arrêtées à ce moment là. Autrement dit, le programme attendra 1 seconde avant d'envoyer le mouvement au serveur. Par contre, je ne l'avais pas envisagé lorsqu'on joue contre l'IA...
Comment je fais ? La programmation et les échecs ont toujours été une passion, c'est ce qui motive. Je programme les éléments séparément avant de tout fusionner. Par exemple, j'ai d'abord programmé le jeu d'échecs sans IA. Tu trouveras les sources en cliquant sur le lien suivant :
http://sub0.developpez.com/delphi/Table5m.zip
Pour l'IA au départ, je suis parti du code d'un jeu nomé OWLChess disponible avec Turbo Pascal pour Windows (le tout 1er Delphi). J'ai extrais uniquement le code de l'IA pour en faire un éxécutable 16bits. Puis avec Delphi, j'ai réalisé l'interface graphique à partir du code dont le lien est donné ci-dessus. Les programmes communiquent alors via les messages windows. Voici le résulat :
http://sub0.developpez.com/delphi/chess2d.zip
Ensuite, j'ai décidé de convertir le code de l'IA en 32bits pour pouvoir l'intégrer directement dans mon programme Delphi. Je suis reparti du début avec l'expérience que j'avais eu de mes programmes précédents. Important : Je teste autant que possible mes programmes avec différentes config Windows (surtout avec un vieux PC), et sous différentes plate-formes (émulateurs sous Linux), etc. Cela permet de rendre mon code plus propre et le plus compatible possible.
Mon conseil si tu veux te lancer dans la programmation : Pense toujours à découper ton projet en petits sous-programmes et met au point chacun de ces éléments séparément avant de tout assembler. Si ton projet est un jeu d'échecs, je te conseille la lecture de ce topic en entier car il ya pleins de bons conseils et de nombreux liens très intérressants, à+
Merci pour l'info skipou.
Le développement du programme Chess2d est arrêté car ce jeu utilise 2 programmes éxécutés simultannément :
- L'interface graphique réalisée avec Delphi (32bits)
- L'intelligence artificielle réalisée avec BPW (16bits)
Les 2 programmes communiquent via les messages windows et il suffit qu'un message soit mal envoyé ou reçu pour générer un bug...
J'ai depuis porté l'IA sur Delphi et repartir sur des bases plus propres.
Le jeu en cours de développement est disponible à cette adresse :
http://sub0.developpez.com/delphi/exe/TableB5.zip
à+
Salut!
Je me pose quelques questions, pouvez-vous m'aider svp ?
La 1ère est une question concernant la partie nulle (pat).
Dans les règles officielles, il est dit ceci (article 10.4) :Je n'ai pas bien saisi la condition c)The game is drawn when one of the following endings arises:
(a) king against king;
(b) king against king with only bishop or knight;
(c) king and bishop against king and bishop, with both bishops on diagonals of the same colour.
This immediately ends the game.
La seconde question concerne aussi la partie nulle, plus exactement les 3 mêmes mouvements répétés 3 fois de suite : En fait, mon arbitre actuel recherche dans tous les coups joués depuis le début, si le même tour de jeu s'est répété 3 fois. Ainsi, même si l'on a joué autre chose entre ces mouvements, la partie est déclarée nulle, ce qui me semble pas être correcte. J'ai donc cherché sur le net, et voici ce que j'ai trouvé :Et voici ce qui est dit dans les règles officielles (article 10.10) :Si la même disposition de pièces se reproduit trois fois lors d'une partie (avec le même joueur devant jouer), le joueur dont c'est le tour de jouer peut déclarer la partie nulle. (Lorsque le droit de roquer a été perdu entre deux de ces situations, alors ces situations ne sont pas considérées comme étant identiques. Pour les points de détail de cette règle, se reporter aux Règles officielles des Échecs.)Et dans une autre page du web :The game is drawn, upon a claim by the player having the move, when the same position, for the third time:
(a) is about to appear, if he first writes the move on his scoresheet and declares to the arbiter his intention of making this move; or
(b) has just appeared, the same player having the move each time.
The position is considered the same if pieces of the same kind and colour occupy the same squares, and if all the possible moves of all the pieces are the same, including the rights to castle [at some future time] or to capture a pawn "en passant".J'ai du mal à saisir cette règle et je n'ai pas trouvé d'explications claires à ce sujet...Si la même position arrive 3 fois (pas obligatoirement d'affilée), les joueurs ont le droit (pas une obligation) de demander la nulle. Une position n'est pas la même si les possibilités de roque ou de prise en passant ne sont pas les mêmes dans ces positions. Le trait doit également être le même.
Merci de votre aide.
Pour la règle c), si les 2 ont un roi et un fou et si en plus les fous sont sur la même couleur, il y a partie nulle.
Pour l'autre règle, si on passe 3 fois par la même position dans le jeu et si les possibilités de roquer sont identiques les 3 fois - jeu donc strictement identique -, un des joueurs peut déclarer la partie nulle.
Merci Miles ! Au moins c'est clair.
Cela m'oblige donc à prévoir un dialogue pour que le joueur puisse éventuellement demander le nul...
En fait si j'ai bien saisi, pour résumé, il faut que je compare la position des pièces jouées et tous les mouvements possibles de l'échiquier; Si je retrouve 3 fois cette même configuration dans la partie, le pat devient possible.
J'ai la possibilité de savoir qui est en train de gagner la partie (et à quel niveau), quel joueur provoque ces répétitions et quel joueur subit les attaques de l'autre. Je pense me servir de ces informations pour déterminer, dans le cas d'un pat possible, si l'IA va ou non déclarer la partie nulle; Il faut que l'IA se garde de provoquer ce genre de situation si elle veut matter son adversaire, parce que pour le moment, je suppose que l'IA n'en tient pas compte. Elle pourrait donc se faire pièger. Et dans le cas contraire, que l'IA recherche le pat plutôt que de perdre la partie...
à+
ps: Toutes vos remarques & suggestions sont les bienvenues.
Oui j'ai vu après coup que le dev a été arreté ... mea cupla, je lirais tout le sujet la prochaine fois :pEnvoyé par Sub0
Salut Sub, et félicitations pour le travail. J'ai vu dans la discussion que tu as trouvé les codes sources C d'un jeu d'échecs (2400ELO) mais a aucun endroit tu n'indiques le lien (Je l'ai peut être raté mais j'ai a peu pres tout lu). Pourrai-tu s'il te plait me le communiquer par mail? Je te remercie d'avance. Bonne continuation.
Salut NiKaBOT*** et bienvenue dans les forums de Developpez.com
Ce message commence à dater, je sais pas si je vais retrouver ce code C surtout que je ne suis pas chez moi en ce moment, il faudra attendre que je rentre à Lyon (peut-être ce week-end).
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager