Valósítsd meg az akasztófa játék logikáját funkcionális reaktív programozással.
Az akasztófa egy egyszerű szókitalálós játék.
A funkcionális reaktív programozás az interaktív programok írásának egyik módja. Annyiban tér el a megszokott szemlélettől, hogy ahelyett, hogy azt mondanád, „amikor megnyomják a gombot, növeld a számlálót”, azt írod le, hogy „a számláló értéke a gomb megnyomásainak összege”.
Valósítsd meg az akasztófa alapvető logikáját funkcionális reaktív programozással. Ehhez telepítened kell egy FRP-könyvtárat, erről a feladat nyelv-, illetve kurzusspecifikus fájljaiban olvashatsz.
Kérünk, hagyd figyelmen kívül az FRP-könyvtárra vonatkozó részt: ehhez a feladathoz nem szükséges külső könyvtár. Ez a feladat az eseményvezérelt programozásra helyezi a hangsúlyt, visszahívásokra és a Tcl eseményciklusára építve.
Egy TCP-szervert és egy domain-specifikus protokollt kell létrehoznod. A szervert a kitalálandó szóval indítjuk el. A tesztszkript valósítja meg a klienst, amely a parancsokat küldi a szervernek.
A megvalósítandó protokollparancsok:
STATUS, amely visszaadja a játék aktuális állapotát. A válasz egy
háromelemű lista lesz:
GUESS x, ahol x a kitalálandó betű. A szerver minden tipp után a
státuszlistával válaszol.SHUTDOWN, amellyel távolról leállíthatod a szervert. A szerver egyébként
győzelem vagy vereség után kilép.A szervernek ezeket a parancsokat kis- és nagybetű megkülönböztetése nélkül kell kezelnie.
Indítsd a szervert a 0-s portszámmal: a Tcl keres egy szabad portot, így
nem kell a portszámot a tesztszkriptbe égetnünk. Egy folyamatban futó összes
értelmező (a szálakat is beleértve) ugyanazt a környezetet használja, ezért a
szerver a globális env tömb segítségével vissza tudja adni a portját a
tesztszkriptnek. A kezdeti hangman.tcl fájlban van egy példa.
Ezekre a Tcl-parancsokra lesz szükséged:
socket,
fileevent,
vwait.
Ez a példa socketprogram segíthet az elindulásban.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Tcl nyelvet 135 feladat segítségével, valódi emberi mentorálással, mindez ingyen.