Le pendu

Le pendu

Difficile

Instructions

Implémente la logique du jeu du pendu en utilisant la programmation réactive fonctionnelle.

Le pendu est un simple jeu de devinettes de mots.

La programmation réactive fonctionnelle est une façon d'écrire des programmes interactifs. Elle diffère de la perspective habituelle : au lieu de dire « quand on appuie sur le bouton, incrémenter le compteur », on écrit « la valeur du compteur est la somme du nombre de fois où on appuie sur le bouton ».

Implémente la logique de base du pendu en utilisant la programmation réactive fonctionnelle. Pour cela, tu devras installer une bibliothèque FRP ; ce point sera décrit dans les fichiers spécifiques au langage ou au parcours de l'exercice.

Nouvelle approche de l'exercice

Ignore la partie qui concerne une bibliothèque FRP : aucune bibliothèque tierce n'est nécessaire pour cet exercice. Cet exercice porte sur la programmation événementielle avec des callbacks et la boucle d'événements de Tcl.

Tu dois construire un serveur TCP et un protocole spécifique au domaine. Ce serveur est lancé avec le mot à deviner. Le script de test implémente le client qui envoie les commandes au serveur.

Protocole spécifique au domaine

Les commandes du protocole à implémenter sont :

  • STATUS pour renvoyer l'état actuel de la partie. La réponse sera une liste de trois éléments :
    1. le nombre de mauvaises propositions restantes,
    2. le mot masqué par des tirets bas pour les lettres non devinées, et
    3. un champ de statut (l'une des valeurs « ongoing », « win » ou « lose »)
  • GUESS x où x est une lettre à deviner. Le serveur répond avec la liste de statut après chaque proposition.
  • SHUTDOWN pour arrêter le serveur à distance. Sinon, le serveur se termine après une victoire ou une défaite.

Le serveur doit pouvoir traiter ces commandes sans tenir compte de la casse.

Quel port le serveur utilise-t-il ?

Lance ton serveur avec le numéro de port 0 : Tcl trouvera un port inutilisé, ce qui évite de coder un numéro de port « en dur » dans le script de test. Tous les interprètes qui s'exécutent dans un même processus (y compris les threads) partagent le même environnement, donc le serveur peut communiquer son port au script de test grâce au tableau global env. Tu trouveras un exemple dans le fichier hangman.tcl initial.

Indices

Tu auras besoin de ces commandes Tcl : socket, fileevent, vwait.

Cet exemple de programme socket peut te servir de point de départ.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Tcl Exercism

Prêt à commencer Le pendu ?

Inscris-toi sur Exercism pour apprendre et maîtriser Tcl avec 135 exercices, et un vrai mentorat humain, le tout gratuitement.