Implementa a lógica do jogo da forca com programação funcional reativa.
O jogo da forca é um jogo simples de adivinhar palavras.
A Programação Funcional Reativa é uma forma de escrever programas interativos. Difere da perspetiva habitual porque, em vez de dizeres «quando o botão é premido, incrementa o contador», escreves «o valor do contador é a soma do número de vezes que o botão é premido».
Implementa a lógica básica do jogo da forca com programação funcional reativa. Para isso, vais ter de instalar uma biblioteca de FRP; isso será descrito nos ficheiros específicos da linguagem e do track do exercício.
Ignora a parte relativa a uma biblioteca FRP; não é precisa uma biblioteca de terceiros para este exercício. Este exercício centra-se na programação orientada a eventos, com callbacks e o ciclo de eventos do Tcl.
Tens de construir um servidor TCP e um protocolo específico de domínio. Este servidor é iniciado com a palavra a adivinhar. O script de teste implementa o cliente que envia comandos ao servidor.
Os comandos do protocolo a implementar são:
STATUS para devolver o estado atual do jogo. A resposta é uma lista de três elementos:
GUESS x, em que x é uma letra a adivinhar. O servidor responde com a lista de estado
após cada tentativa.SHUTDOWN para desligar o servidor remotamente. Caso contrário, o servidor termina após
uma vitória ou uma derrota.O servidor deve conseguir tratar estes comandos sem distinguir maiúsculas de minúsculas.
Inicia o teu servidor usando a porta número 0: o Tcl encontra uma porta livre, por isso
não temos de fixar um número de porta no script de teste. Todos os intérpretes a correr num
processo (incluindo as threads) partilham o mesmo ambiente, por isso o servidor pode
comunicar a sua porta ao script de teste através do array global env. Há um exemplo no
ficheiro hangman.tcl inicial.
Vais precisar destes comandos do Tcl:
socket,
fileevent,
vwait.
Este programa de exemplo com sockets pode ajudar-te a começar.
Inscreve-te no Exercism para aprenderes e dominares Tcl com 135 exercícios, e mentoria humana real, tudo grátis.