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

Codes sources à télécharger Pascal Discussion :

JS-Echecs : Jeu d'échecs en mode texte [Sources]


Sujet :

Codes sources à télécharger Pascal

  1. #1
    Robot Forum
    Avatar de forum
    Inscrit en
    Novembre 1999
    Messages
    2 774
    Détails du profil
    Informations forums :
    Inscription : Novembre 1999
    Messages : 2 774
    Points : 2 549
    Points
    2 549
    Par défaut JS-Echecs : Jeu d'échecs en mode texte
    Bonjour,

    Je vous propose un nouveau code source à télécharger : JS-Echecs.

    C'est un programme allemand que j'ai étudié et modifié. J'ai mis les noms des variables et des fonctions en français, et refait l'affichage (mode texte).

    Ce programme est court, simple et d'une grande efficacité. J'y ai pour ma part appris plusieurs choses.

    L'adversaire artificiel joue instantanément et, autant que je puis le dire, il joue très correctement.



    Qu'en pensez-vous ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 070
    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 070
    Points : 15 454
    Points
    15 454
    Billets dans le blog
    9
    Par défaut
    Pour jouer, tapez par ex. "e2e4" ou "E2E4" puis appuyez sur Entrée.

    Autres commandes :

    9999 Quitter le programme
    9900 Faire jouer l'ordinateur
    9001 Reprendre le dernier coup
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 070
    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 070
    Points : 15 454
    Points
    15 454
    Billets dans le blog
    9
    Par défaut
    Bonjour ! Je vous présente la nouvelle version de JS-Echecs.

    Cette version propose une très simple interface graphique basée sur l'API Win32. Les pièces du jeu sont représentées au moyen d'une police True Type.

    Pour jouer, cliquez sur la case de départ puis sur la case d'arrivée.

    Qu'en pensez-vous ?
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  4. #4
    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 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Très joli !

    Deux petites remarques :

    - Le programme ne détecte pas une situation de mat, donnant sans fin un message "Coup illégal" jusqu'à ce que je ferme la fenêtre. C'est sûrement un détail.

    - Il serait possible de remplacer l'utilisation de la police TrueType par l'inclusion dans les ressources de petites bitmaps représentant les pièces.

    Mais je pinaille, c'est un beau programme... nettement plus fort que moi aux échecs.
    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]

  5. #5
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 070
    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 070
    Points : 15 454
    Points
    15 454
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Alcatîz Voir le message
    - Le programme ne détecte pas une situation de mat, donnant sans fin un message "Coup illégal" jusqu'à ce que je ferme la fenêtre. C'est sûrement un détail.
    Grâce à ta remarque j'ai trouvé l'erreur que j'ai faite mais elle n'est pas évidente à corriger.

    Le point qui m'avait échappé, c'est que l'échec n'est pas testé dans la procédure de génération des coups. De ce fait la liste des coups possibles n'est jamais vide. C'est au dernier moment que le coup est refusé. Cela m'a échappé quand j'ai posé la condition suivante, qui n'est jamais vraie :

    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
        //
        generateur2(courante);
        //
        if courante.compteur = 0 then // jamais vrai !
          begin
            if echec(courante) then
              etatPartie := NoirGagnant
            else
              etatPartie := Pat;
          end
        else
          begin
            {$IfDef Dev}
            if echec(courante) then
              ecriture_fichier('Echec au roi blanc !', false);
            {$EndIf}
          end;
    Soit dit en passant, voilà pourquoi le programme est si rapide.

    Le texte de présentation inclus dans le programme original précise que l'échec et mat est détecté seulement pour l'ordinateur :

    - Prüfung auf Schach für den Spieler sowie Matt&Patt für den Computer
    Dans le cas de l'ordinateur, l'échec et mat est détecté d'une façon qui paraît bizarre à première vue mais qui est simple et efficace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        deja_en_echec := echec(courante);
        mouvement(courante, admissiblesProv[i], admissiblesDest[i]);
        courante.couleur := -1 * courante.couleur;
        if echec(courante) then
        begin
          if deja_en_echec
          then writeln('Mat !')
          else writeln('Pat !');
          halt;
        end;
    Si l'ordinateur est en échec après avoir joué, c'est qu'il n'y avait pas de coup "meilleur". Dans le cas du joueur, la même déduction ne peut pas être faite. Voilà l'origine du problème. Je vais voir comment je peux le résoudre.

    Citation Envoyé par Alcatîz Voir le message
    - Il serait possible de remplacer l'utilisation de la police TrueType par l'inclusion dans les ressources de petites bitmaps représentant les pièces.
    Je vais étudier cette possibilité. J'ai un programme qui convertit les polices True Type en bitmaps. J'aime bien aussi les bitmaps au format texte qu'on peut obtenir avec Workshop. Il faut que j'apprenne à m'en servir.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  6. #6
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 070
    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 070
    Points : 15 454
    Points
    15 454
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Je vous propose une version entièrement réécrite de JS-Echecs.

    Cette version du jeu utilise le livre d'ouvertures du programme Pro Deo.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  7. #7
    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 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Je m'y prends probablement mal mais je ne parviens pas à faire jouer l'IA.
    Si je prends les blancs (noirs en automatique), l'IA reste inerte et si je prends les noirs (blancs en automatique), l'IA n'entame pas la partie.
    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]

  8. #8
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 070
    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 070
    Points : 15 454
    Points
    15 454
    Billets dans le blog
    9
    Par défaut
    Bonjour Alcatîz, et merci pour l'essai.

    Il y avait une erreur, suite à une modification que j'avais faite au dernier moment. Une petite voix m'avait dit que quelque chose n'allait pas, mais dans l'euphorie du travail terminé je ne l'ai pas écoutée.

    J'ai corrigé l'erreur et remplacé les fichiers : ça devrait aller maintenant.

    Par ailleurs, en réessayant le jeu à l'instant, j'ai constaté un petit défaut qui ne vient pas d'une erreur dans le code. J'ai inclus un son qui doit être entendu en cas d'échec. Quelquefois, on l'entend avec plusieurs secondes de retard.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  9. #9
    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 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Bonjour Roland,

    C'est parfait à présent ! L'IA est toujours aussi redoutable et je n'ai pas constaté de décalage pour le son d'avertissement d'échec. Bravo !

    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]

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Je suis débutant en programmation et j'utilise Lazarus. J'ai un problème, il est écrit "Jeu.lpr(6,12) Fatal: Impossible de trouver OWindows utilisé par Jeu de l'inspecteur de projet."

  11. #11
    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 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Bonjour et bienvenue !

    OWindows est une unité de la bibliothèque OWL (l'ancêtre de la VCL de Delphi), je doute que Lazarus (et son compilateur Free Pascal) puisse compiler du code écrit pour cette bibliothèque.
    Quoi qu'il en soit, les sources sont disponibles ici : https://alcatiz.developpez.com/tutor...g_intro#LI-D-1.

    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]

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Alcatîz Voir le message
    Bonjour et bienvenue !

    OWindows est une unité de la bibliothèque OWL (l'ancêtre de la VCL de Delphi), je doute que Lazarus (et son compilateur Free Pascal) puisse compiler du code écrit pour cette bibliothèque.
    Quoi qu'il en soit, les sources sont disponibles ici : https://alcatiz.developpez.com/tutor...g_intro#LI-D-1.

    Merci pour la réponse.
    Donc en gros que devrais-je faire pour que le code marche sur Lazarus?

  13. #13
    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 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Avant de répondre à la question, je voudrais insister sur le fait qu'étant débutant en programmation, il serait préférable pour toi de commencer directement avec des techniques de programmation modernes, plutôt que par l'analyse de code faisant appel à des bibliothèques obsolètes comme OWL.

    Les cours d'Eric Thirion, basés sur Lazarus, permettent de débuter en douceur : les bases de la programmation.

    Ceci étant dit, pour répondre à ta question, il faut essayer de compiler le code source d'OWL (présent dans l'archive téléchargeable sur la page dont j'ai indiqué le lien dans ma réponse précédente) ; la gravité des erreurs rapportées par le compilateur décidera si le jeu en vaut la chandelle. Personnellement, pour compiler du code OWL 32 bits, j'utilise le compilateur Virtual Pascal.

    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]

Discussions similaires

  1. [Free Pascal] Eschecs : Jeu d'échecs en mode graphique
    Par Roland Chastain dans le forum Codes sources à télécharger
    Réponses: 59
    Dernier message: 30/12/2022, 11h10
  2. [Free Pascal] Jeu en mode texte
    Par mohamedAziz dans le forum Free Pascal
    Réponses: 3
    Dernier message: 10/01/2015, 20h04
  3. Jeu de la vie - Affichage en mode texte.
    Par Endori dans le forum Débuter
    Réponses: 6
    Dernier message: 08/12/2010, 11h22
  4. Retour au mode texte par défaut
    Par coca dans le forum x86 16-bits
    Réponses: 6
    Dernier message: 12/12/2002, 17h22
  5. Réponses: 5
    Dernier message: 11/12/2002, 12h31

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