Kurzusok
/
Tcl
Tcl
/
Feladatok
/
Akasztófa
Akasztófa

Akasztófa

Nehéz

Utasítások

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.

Új megközelítés a feladathoz

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.

Domain-specifikus protokoll

A megvalósítandó protokollparancsok:

  • STATUS, amely visszaadja a játék aktuális állapotát. A válasz egy háromelemű lista lesz:
    1. a hátralévő rossz tippek száma,
    2. a szó aláhúzásjelekkel elfedve a ki nem talált betűk helyén, és
    3. egy állapotmező (a következők egyike: „ongoing”, „win” vagy „lose”)
  • 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.

Melyik portot használja a szerver?

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.

Tippek

Ezekre a Tcl-parancsokra lesz szükséged: socket, fileevent, vwait.

Ez a példa socketprogram segíthet az elindulásban.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Tcl Exercism

Készen állsz elkezdeni a(z) Akasztófa feladatot?

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.