Ahorcado

Ahorcado

Difícil

Instrucciones

Implementa la lógica del juego del ahorcado usando programación reactiva funcional.

El ahorcado es un juego sencillo de adivinar palabras.

La programación reactiva funcional es una forma de escribir programas interactivos. Se diferencia de la perspectiva habitual en que, en lugar de decir «cuando se presiona el botón, incrementa el contador», escribes «el valor del contador es la suma del número de veces que se presiona el botón».

Implementa la lógica básica detrás del ahorcado usando programación reactiva funcional. Para esto vas a necesitar instalar una biblioteca de FRP; esto se describe en los archivos específicos del lenguaje o del track del ejercicio.

Nuevo enfoque para el ejercicio

Ignora la parte sobre una biblioteca FRP; no se necesita una biblioteca de terceros para este ejercicio. Este ejercicio se centra en la programación basada en eventos, usando callbacks y el bucle de eventos de Tcl.

Debes construir un servidor TCP y un protocolo específico del dominio. Este servidor se inicia con la palabra que hay que adivinar. El script de prueba implementa el cliente que envía comandos al servidor.

Protocolo específico del dominio

Los comandos del protocolo que debes implementar son:

  • STATUS para devolver el estado actual del juego. La respuesta será una lista de tres elementos:
    1. la cantidad de intentos fallidos que quedan,
    2. la palabra enmascarada con guiones bajos en las letras que no se han adivinado, y
    3. un campo de estado (uno de «ongoing», «win» o «lose»)
  • GUESS x, donde x es una letra que se va a adivinar. El servidor responderá con la lista de estado después de cada intento.
  • SHUTDOWN para apagar el servidor de forma remota. De lo contrario, el servidor terminará después de una victoria o una derrota.

El servidor debe poder manejar estos comandos sin distinguir entre mayúsculas y minúsculas.

¿Qué puerto usa el servidor?

Inicia tu servidor usando el puerto número 0: Tcl encontrará un puerto sin usar, así no tenemos que poner un número de puerto fijo en el script de prueba. Todos los intérpretes que se ejecutan en un proceso (incluidos los hilos) comparten el mismo entorno, así que el servidor puede comunicarle su puerto al script de prueba usando el array global env. Hay un ejemplo en el archivo hangman.tcl inicial.

Sugerencias

Vas a necesitar estos comandos de Tcl: socket, fileevent, vwait.

Este programa de ejemplo con sockets te puede servir para empezar.

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Tcl Exercism

¿Todo listo para empezar Ahorcado?

Regístrate en Exercism para aprender y dominar Tcl con 135 ejercicios y mentoría humana real, todo gratis.