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é 49 fois Voir les 8 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 : Autre
Date de mise en ligne : 23 décembre 2013




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
Avatar de Roland Chastain Roland Chastain - Rédacteur/Modérateur https://www.developpez.com
le 01/09/2012 à 17:25
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 ?
Avatar de Alcatîz Alcatîz - Responsable Pascal, Delphi 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 Roland Chastain Roland Chastain - Rédacteur/Modérateur https://www.developpez.com
le 18/12/2013 à 22:59
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.
Avatar de Alcatîz Alcatîz - Responsable Pascal, Delphi 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 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, Delphi 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 !

Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.
Responsables bénévoles de la rubrique Pascal : Gilles Vasseur - Alcatîz -