Tracks
/
Tcl
Tcl
/
Übungen
/
Galgenmännchen
Galgenmännchen

Galgenmännchen

Schwer

Anleitung

Implementiere die Logik des Hangman-Spiels mit funktionaler reaktiver Programmierung.

Hangman ist ein einfaches Wortratespiel.

Funktionale reaktive Programmierung ist eine Möglichkeit, interaktive Programme zu schreiben. Sie unterscheidet sich von der üblichen Sichtweise: Statt zu sagen „wenn die Taste gedrückt wird, erhöhe den Zähler“, schreibst du „der Wert des Zählers ist die Summe der Anzahl, wie oft die Taste gedrückt wurde“.

Implementiere die grundlegende Logik hinter Hangman mit funktionaler reaktiver Programmierung. Dafür musst du eine FRP-Bibliothek installieren, das wird in den sprach- und trackspezifischen Dateien der Übung beschrieben.

Ein neuer Ansatz für die Übung

Bitte ignoriere den Teil über eine FRP-Bibliothek: Für diese Übung ist keine Bibliothek von Drittanbietern erforderlich. Diese Übung konzentriert sich auf ereignisgesteuerte Programmierung mit Callbacks und der Ereignisschleife von Tcl.

Du sollst einen TCP-Server und ein domänenspezifisches Protokoll implementieren. Dieser Server wird mit dem zu erratenden Wort gestartet. Das Testskript implementiert den Client, der die Befehle an den Server sendet.

Domänenspezifisches Protokoll

Die Protokollbefehle, die du implementieren musst, sind:

  • STATUS, um den aktuellen Zustand des Spiels zurückzugeben. Die Antwort ist eine dreielementige Liste:
    1. die Anzahl der verbleibenden Fehlversuche,
    2. das Wort, bei dem nicht geratene Buchstaben durch Unterstriche verdeckt sind, und
    3. ein Statusfeld (eines von „ongoing“, „win“ oder „lose“)
  • GUESS x, wobei x ein Buchstabe ist, der geraten werden soll. Der Server antwortet nach jedem Versuch mit der Statusliste.
  • SHUTDOWN, um den Server aus der Ferne herunterzufahren. Andernfalls beendet sich der Server nach einem Sieg oder einer Niederlage.

Der Server sollte diese Befehle ohne Beachtung der Groß- und Kleinschreibung verarbeiten können.

Welchen Port verwendet der Server?

Starte deinen Server mit Portnummer 0: Tcl findet dann einen unbenutzten Port, sodass wir keine Portnummer im Testskript fest verdrahten müssen. Alle Interpreter, die in einem Prozess laufen (einschließlich Threads), teilen sich dieselbe Umgebung, sodass der Server seinen Port über das globale env-Array an das Testskript zurückmelden kann. Ein Beispiel findest du in der ursprünglichen Datei hangman.tcl.

Hinweise

Du brauchst diese Tcl-Befehle: socket, fileevent, vwait.

Dieses Beispiel-Socket-Programm kann dir den Einstieg erleichtern.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Tcl Exercism

Bereit, mit Galgenmännchen zu starten?

Melde dich bei Exercism an, um Tcl mit 135 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.