Track
/
Tcl
Tcl
/
Esercizi
/
Impiccato
Impiccato

Impiccato

Difficile

Istruzioni

Implementa la logica del gioco dell'impiccato usando la programmazione funzionale reattiva.

L'impiccato è un semplice gioco in cui si indovinano le parole.

La programmazione funzionale reattiva è un modo per scrivere programmi interattivi. Si differenzia dalla prospettiva usuale: invece di dire «quando si preme il pulsante, incrementa il contatore», scrivi «il valore del contatore è la somma del numero di volte in cui si preme il pulsante».

Implementa la logica di base dell'impiccato usando la programmazione funzionale reattiva. Per farlo dovrai installare una libreria di programmazione funzionale reattiva: sarà descritto nei file specifici della lingua dell'esercizio.

Un nuovo approccio all'esercizio

Ignora la parte che riguarda una libreria FRP: per questo esercizio non serve una libreria di terze parti. Questo esercizio si concentra sulla programmazione orientata agli eventi, usando callback e il ciclo di eventi di Tcl.

Devi costruire un server TCP e un protocollo specifico del dominio. Il server viene avviato con la parola da indovinare. Lo script di test implementa il client che invia i comandi al server.

Protocollo specifico del dominio

I comandi del protocollo da implementare sono:

  • STATUS per restituire lo stato attuale della partita. La risposta sarà un elenco di tre elementi:
    1. il numero di tentativi errati rimasti,
    2. la parola mascherata con underscore al posto delle lettere non ancora indovinate, e
    3. un campo di stato (uno tra "ongoing", "win" o "lose")
  • GUESS x, dove x è una lettera da indovinare. Il server risponderà con l'elenco di stato dopo ogni tentativo.
  • SHUTDOWN per spegnere il server da remoto. Altrimenti il server termina dopo una vittoria o una sconfitta.

Il server deve essere in grado di gestire questi comandi senza distinguere maiuscole e minuscole.

Quale porta usa il server?

Avvia il server usando il numero di porta 0: Tcl troverà una porta libera, così non dobbiamo scrivere un numero di porta fisso nello script di test. Tutti gli interpreti in esecuzione in un processo (compresi i thread) condividono lo stesso ambiente, quindi il server può comunicare la sua porta allo script di test usando l'array globale env. C'è un esempio nel file hangman.tcl iniziale.

Suggerimenti

Ti serviranno questi comandi di Tcl: socket, fileevent, vwait.

Questo programma di esempio con i socket può aiutarti a iniziare.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Tcl Exercism

Vuoi iniziare Impiccato?

Iscriviti a Exercism per imparare e padroneggiare Tcl con 135 esercizi e il mentoring di persone reali, tutto gratis.