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

Pascal Discussion :

Tutoriel : Conception d'un jeu d'échecs en Pascal, par Roland Chastain


Sujet :

Pascal

  1. #1
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 938
    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 938
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut Tutoriel : Conception d'un jeu d'échecs en Pascal, par Roland Chastain
    Conception d'un jeu d'échecs en Pascal
    Un tutoriel de Roland Chastain

    Il y a bientôt deux ans, Roland Chastain s'est mis en tête d'écrire un programme de jeu d'échecs.

    En cherchant des exemples à étudier, il est tombé sur un programme court, rapide et d'un niveau de jeu correct, dont il a fait une adaptation.
    Il a remplacé l'interface en mode texte par une interface graphique, complété certains endroits du programme et enfin ajouté un petit livre d'ouvertures.

    Dans ce tutoriel, Roland Chastain va tenter de vous expliquer les rouages de ce programme réalisé par Jürgen Schlottke et lui-même.

    http://rchastain.developpez.com/tutoriel/pascal/conception-echecs-pascal/



    Niveau : débutant.

    Qu'en pensez-vous ?
    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]

  2. #2
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Bravo Passionnant et très pédagogique !

  3. #3
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Très bonne approche, fort didactique, avec un code compact et efficace qu'il n'est effectivement pas facile d'améliorer
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  4. #4
    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
    Merci pour les compliments (dont une partie revient à l'auteur du programme original).

    Effectivement le moteur est un "poids plume" et néanmoins un adversaire assez coriace.

    Maintenant je pense commencer un autre projet, un peu plus ambitieux, à la fois du côté de l'interface et du côté des fonctions. J'aimerais bien faire une bibliothèque, sur laquelle mon projet serait basé mais qui pourrait aussi être utilisée par d'autres pour faire autre chose : une unité ChessUtils ou quelque chose comme ça.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  5. #5
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Il serait certainement intéressant de proposer un interfaçage permettant des matches par internet ou sur tournoyons.com.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  6. #6
    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 Programme executable et source ?
    Bonjour,

    Bravo pour votre tutorial ! J'ai programmé en pascal et divers autres langages il y a plusieurs années, aujourd'hui j'ai envie de m'y remettre en particulier pour réaliser un programme d'échecs. Comment se procurer l'intégral de votre source compilable et / ou est-il possible d'avoir votre fichier exécutable ? Je suis passionné par le jeu d'échecs et la programmation des ordinateurs d'échecs (j'ai collaboré à partir de 1990 à la revue d'échecs Gambisco rubrique Echecs et informatique). J'utilise aujourd'hui devpascal et Free pascal.

    Merci de votre réponse,
    Gérard Legat

  7. #7
    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 ! Merci pour vos encouragements.

    Le code source et l'exécutable qui vont avec l'article sont ici :

    JS-Echecs

    Le compilateur utilisé est Virtual Pascal.

    J'ai commencé parallèlement un autre projet, avec Free Pascal :

    Eschecs

    Le projet Free Pascal est dérivé du premier : le code du "moteur" est le même (sauf les noms des variables qui sont en anglais). Il n'y a que l'interface graphique qui soit entièrement différente.

    Je ne travaille plus sur le premier projet, tout simplement parce que j'ai renoncé à utiliser Virtual Pascal. En revanche, je travaille toujours sur le second, pour lequel je prépare d'ailleurs une nouvelle version. Voilà, j'espère avoir répondu à votre question. Bonne continuation !
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  8. #8
    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'Echiquier vu par le programme
    Dans votre description vous définissez un tableau tEchiquier = array[-10..109] of integer; pour représenter l'échiquier. Dans mon programme qui avance tout doucement j'ai défini un tableau tEchiquier = array[0..119] of integer (même nombre de case que le vôtre) mais je suis parti de 0 au lieu de -10; j'ai ensuite commencé mon générateur de coup et en testant les résultats je m'aperçois qu'il y a un problème sur certains déplacements, en effet j'ai pris vos vecteur de déplacement appliqué à mon tableau (erreur de débutant). Alors maintenant j'essaye de réparer les dégats, voici mon tableau, les numeros de case commencent à 0 et vont jusqu'à 119. Je vais corriger tout cela mais comment se représente physiquement votre tableau de -10 à 109 (pourquoi commencer par du négatif ?
    Merci
    Gérard Legat
    Fichiers attachés Fichiers attachés

  9. #9
    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 Tableau peu lisible
    Je me rends compte que mon tableau n'est pas très visible, je n'arrive pas à le mettre en pièce jointe, désolé.

    Merci

    G. Legat

  10. #10
    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
    Citation Envoyé par glegat Voir le message
    Je me rends compte que mon tableau n'est pas très visible, je n'arrive pas à le mettre en pièce jointe, désolé.
    Fait !

    Pour répondre à votre question, l'avantage de cette définition de l'échiquier est que le numéro 11 correspond à la case a1, le numéro 12 à la case a2, le numéro 21 à la case b1, etc. Bref, une fois qu'on a saisi l'astuce, on n'a pas à se torturer les méninges pour savoir à quelle case de l'échiquier correspond tel ou tel emplacement du tableau.

    Une fois posé ce principe, on étend le tableau de 21 cases au début et à la fin, ce qui donne array[-10..109]. 21 cases, parce que c'est le plus long vecteur utilisé pour représenter le déplacement d'une pièce (le cavalier, qui peut se déplacer de 2 colonnes et d'1 ligne).

    Voilà, c'est tout. Cela dit, il n'y a pas d'inconvénient à définir le tableau comme vous l'avez fait, si ce n'est que vous perdez cette correspondance intuitive entre l'index d'une case dans le tableau et sa désignation usuelle.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  11. #11
    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
    vous perdez cette correspondance intuitive entre l'index d'une case dans le tableau et sa désignation usuelle.
    Effectivement le problème n'est que de nature esthétique si l'on peut dire. Je devrais donc pouvoir poursuivre sereinement mes travaux. J'ai eu un moment de panique car je viens de passer deux jours à programmer et j'étais super content de l'avancement, mon générateur de coup est quasi terminé. Bien entendu je vais ralentir lorsqu'il s'agira de mettre en place l'alpha bêta, cela me parait un peu épineux pour l'instant.

    Merci pour votre éclairage et bon dimanche.

    G. Legaty

  12. #12
    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 Roland Chastain Voir le message
    Merci pour les compliments (dont une partie revient à l'auteur du programme original).
    J'ajoute les miens... (avec deux ans de retard)
    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

  13. #13
    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 Bibliothèque d'ouverture en txt
    J'aurais pu conserver mon fichier tel quel, mais ayant appris récemment à utiliser les tables de chaînes, j'ai voulu m'en servir dans ce projet. J'ai donc écrit un petit programme pour convertir le fichier LIVRE.TXT en un fichier LIVRE.RC contenant une table de chaînes.

    Dans votre programme J-S Echecs vous avez utilisé un fichier texte pour la bibliothèque d'ouverture, avez-vous encore ce fichier ? Il m'intéresse car pour l'instant je pense utiliser uniquement ce format pour integrer une bibliothèque d'ouverture dans mon programme.

    Merci,
    Gérard

  14. #14
    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
    Voici le fichier en question. Pour information, je l'avais fait à la main en m'appuyant sur les Pro Deo Utilities d'Ed Schröder.

    Par la suite j'ai intégré dans mon projet le livre d'ouvertures Pro Deo, utilisé par l'intermédiaire d'une DLL. Le tout se trouve . Du coup, je ne me suis plus intéressé au problème et je n'ai pas eu l'occasion d'améliorer ma technique : c'est dommage, dans un sens.
    Fichiers attachés Fichiers attachés
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  15. #15
    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
    Citation Envoyé par gvasseur58 Voir le message
    J'ajoute les miens... (avec deux ans de retard)
    Merci !

    J'espère un de ces jours proposer une nouvelle version du tutoriel, en le complétant sur certains points (l'utilisation du protocole UCI par exemple).
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  16. #16
    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 Fichier txt bibliothèques d'ouverture
    Voici le fichier en question.
    Merci ! Je trouve plus pratique dans un premier temps d'utiliser un fichier texte que je pourrais facilement compléter.

    Gérard

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/08/2011, 16h00
  2. Jeu d'échec borland soap
    Par rpoulin dans le forum Web & réseau
    Réponses: 2
    Dernier message: 20/10/2005, 05h02

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