JS-Echecs

Présentation
C'est un programme didactique de jeu d'échecs, adapté de JS-Schach (jeu d'échecs de Jürgen Schlottke).

Cette version du programme propose une interface graphique basée sur la librairie OWL. Le programme a été développé pour Virtual Pascal 2.1.

Mise à jour 21 décembre 2013 : La nouvelle version du jeu inclut le livre d'ouvertures du programme Pro Deo d'Ed Schröder.
Téléchargement
Compatibilité
Windows
0  0 
Téléchargé 28 fois Voir les 12 commentaires
Détails
Catégories : Autres compilateurs
Avatar de Roland Chastain
Rédacteur / Modérateur
Voir tous les téléchargements de l'auteur
Licence : Non renseignée
Date de mise en ligne : 23 décembre 2013




Avatar de Roland Chastain Roland Chastain - Rédacteur/Modérateur https://www.developpez.com
le 21/12/2013 à 18:48
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.
Avatar de Alcatîz Alcatîz - Responsable Pascal, Lazarus et Assembleur https://www.developpez.com
le 02/09/2012 à 10:09
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.
Avatar de Roland Chastain Roland Chastain - Rédacteur/Modérateur https://www.developpez.com
le 02/09/2012 à 15:13
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
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
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.
Avatar de Alcatîz Alcatîz - Responsable Pascal, Lazarus et Assembleur https://www.developpez.com
le 19/12/2013 à 20:31
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.
Avatar de Alcatîz Alcatîz - Responsable Pascal, Lazarus et Assembleur https://www.developpez.com
le 23/12/2013 à 10:08
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 !

Avatar de Alcatîz Alcatîz - Responsable Pascal, Lazarus et Assembleur https://www.developpez.com
le 06/03/2019 à 18:03
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.

Avatar de Alcatîz Alcatîz - Responsable Pascal, Lazarus et Assembleur https://www.developpez.com
le 06/03/2019 à 20:44
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.

Avatar de forum forum - Robot Forum https://www.developpez.com
le 27/06/2012 à 2:17
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 ?
Avatar de Roland Chastain Roland Chastain - Rédacteur/Modérateur https://www.developpez.com
le 27/06/2012 à 2:32
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
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.