Trilhas
/
Tcl
Tcl
/
Exercícios
/
Jogo da Forca
Jogo da Forca

Jogo da Forca

Difícil

Instruções

Implemente a lógica do jogo da forca usando programação reativa funcional.

Forca é um jogo simples de adivinhar palavras.

Programação reativa funcional é uma forma de escrever programas interativos. Ela difere da perspectiva usual: em vez de dizer "quando o botão for pressionado, incremente o contador", você escreve "o valor do contador é a soma do número de vezes que o botão foi pressionado".

Implemente a lógica básica por trás do jogo da forca usando programação reativa funcional. Você vai precisar instalar uma biblioteca de FRP para isso, e isso será descrito nos arquivos específicos da linguagem/trilha do exercício.

Nova abordagem para o exercício

Ignore a parte sobre uma biblioteca FRP: uma biblioteca de terceiros não é necessária para este exercício. Este exercício foca em programação orientada a eventos, usando callbacks e o laço de eventos do Tcl.

Você precisa construir um servidor TCP e um protocolo específico de domínio. Esse servidor é iniciado com a palavra a ser adivinhada. O script de teste implementa o cliente que envia comandos ao servidor.

Protocolo específico de domínio

Os comandos do protocolo a implementar são:

  • STATUS para retornar o estado atual do jogo. A resposta será uma lista de três elementos:
    1. o número de tentativas erradas restantes,
    2. a palavra mascarada com sublinhados no lugar das letras ainda não adivinhadas, e
    3. um campo de status (um de "ongoing", "win" ou "lose")
  • GUESS x, em que x é uma letra a ser adivinhada. O servidor responderá com a lista de status depois de cada palpite.
  • SHUTDOWN para desligar o servidor remotamente. Caso contrário, o servidor encerra após uma vitória ou uma derrota.

O servidor deve ser capaz de lidar com esses comandos sem diferenciar maiúsculas de minúsculas.

Qual porta o servidor usa?

Inicie seu servidor usando o número de porta 0: o Tcl vai encontrar uma porta não utilizada, então não precisamos fixar um número de porta no script de teste. Todos os intérpretes em execução em um processo (incluindo threads) compartilham o mesmo ambiente, então o servidor pode comunicar sua porta de volta ao script de teste usando o array global env. Há um exemplo no arquivo hangman.tcl inicial.

Dicas

Você vai precisar destes comandos do Tcl: socket, fileevent, vwait.

Este exemplo de programa com socket pode ajudar você a começar.

Editar via GitHub O link abre em uma nova janela ou aba
Tcl Exercism

Tudo pronto para começar Jogo da Forca?

Crie sua conta no Exercism para aprender e dominar Tcl com 135 exercícios e mentoria humana de verdade, tudo de graça.