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

Développement 2D, 3D et Jeux Discussion :

La chasse aux bugs (jeu d'Echecs)


Sujet :

Développement 2D, 3D et Jeux

  1. #101
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    je ne comprend pas comment configurer le temps de reflexions de l'IA...

    ou fait on cela?
    www.brian-ia.com tout sur cette super intelligence artificielle sur le forum...

  2. #102
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    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, à+
    De retour parmis vous après 10 ans!!

  3. #103
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    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 ?
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  4. #104
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut Progman!
    Citation Envoyé par progman
    par contre, tu peux aussi mettre 0.
    Et là, il apparait un "division par zéro" pas joli joli...
    oops, comme j'ai ajouté l'option rapidement pour Quentin en force, je n'ai pas fait gaffe à ça.
    Je corrige le bug immédiatement. Merci.
    Citation Envoyé par progman
    Pour les débutants, proposer les coups possibles, c'est bien, mais on devrait avoir la possibilité d'enlever ça ?
    Oui, ya une case à décocher... "conseils activés" (la 3ème en partant de la gauche).
    Citation Envoyé par progman
    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 ?
    La méthode de recherche de l'IA est classique :
    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 !
    De retour parmis vous après 10 ans!!

  5. #105
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    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.
    De retour parmis vous après 10 ans!!

  6. #106
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    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 )

  7. #107
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    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


    à+
    De retour parmis vous après 10 ans!!

  8. #108
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 5
    Points : 6
    Points
    6
    Par défaut remarque
    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

  9. #109
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 5
    Points : 6
    Points
    6
    Par défaut j'ai oublié la config
    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

  10. #110
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    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, à+
    De retour parmis vous après 10 ans!!

  11. #111
    Nouveau membre du Club
    Inscrit en
    Janvier 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 27
    Points : 26
    Points
    26
    Par défaut
    Bonjour,
    Gavé de me faire ramasser par le jeu d'echec chess2d, j'ai quitté sauvagement le jeu. A savoir g bindé un bouton sur ma souris pour quitter directement.
    ET la c'est le drame
    Ca a du quitter vraiment a l'arrache, car j'aice message d'erreur qui se repete a l'infini....

    Cordialement
    Issa Nissa !!!

  12. #112
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    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
    à+
    De retour parmis vous après 10 ans!!

  13. #113
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    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) :
    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.
    Je n'ai pas bien saisi la condition c)

    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é :
    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 voici ce qui est dit dans les règles officielles (article 10.10) :
    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".
    Et dans une autre page du web :
    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.
    J'ai du mal à saisir cette règle et je n'ai pas trouvé d'explications claires à ce sujet...

    Merci de votre aide.
    De retour parmis vous après 10 ans!!

  14. #114
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    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.

  15. #115
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    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.
    De retour parmis vous après 10 ans!!

  16. #116
    Nouveau membre du Club
    Inscrit en
    Janvier 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 27
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Sub0
    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
    à+
    Oui j'ai vu après coup que le dev a été arreté ... mea cupla, je lirais tout le sujet la prochaine fois :p
    Issa Nissa !!!

  17. #117
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    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.

  18. #118
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    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).
    De retour parmis vous après 10 ans!!

Discussions similaires

  1. [LibreOffice] LibreOffice 5.0 : seconde session de chasse aux bugs
    Par troumad dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 16/06/2015, 08h41
  2. La chasse aux bugs continue chez Google
    Par Stéphane le calme dans le forum Sécurité
    Réponses: 0
    Dernier message: 14/02/2014, 07h26
  3. installer le jeu d'echecs
    Par binamick dans le forum Windows Vista
    Réponses: 5
    Dernier message: 05/03/2007, 14h42
  4. Concevoir un jeu d'echecs
    Par G.D.O dans le forum Général Java
    Réponses: 2
    Dernier message: 20/09/2006, 04h38
  5. Réponses: 2
    Dernier message: 27/01/2005, 11h47

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