Rutas
/
Tcl
Tcl
/
Ejercicios
/
El ahorcado
El ahorcado

El ahorcado

Difícil

Instrucciones

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

El ahorcado es un juego sencillo de adivinación de 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 pulse el botón, incrementa el contador», escribes «el valor del contador es la suma del número de veces que se pulsa el botón».

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

Nuevo enfoque del ejercicio

Por favor, ignora la parte que hace referencia a una biblioteca FRP: no se necesita una biblioteca de terceros para este ejercicio. Este ejercicio se centra en la programación dirigida por eventos mediante callbacks y el bucle de eventos de Tcl.

Debes construir un servidor TCP y un protocolo específico del dominio. Este servidor se lanza con la palabra que hay que adivinar. El script de pruebas 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. el número de intentos fallidos que quedan,
    2. la palabra enmascarada con guiones bajos para las letras no adivinadas, y
    3. un campo de estado (uno de «ongoing», «win» o «lose»)
  • GUESS x, donde x es una letra que hay que 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 se cerrará tras una victoria o una derrota.

El servidor debería poder gestionar 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 que no esté en uso, así no tenemos que fijar un número de puerto directamente en el script de pruebas. Todos los intérpretes que se ejecutan en un proceso (incluidos los hilos) comparten el mismo entorno, así que el servidor puede comunicar su puerto al script de pruebas usando el array env global. Hay un ejemplo en el archivo inicial hangman.tcl.

Pistas

Necesitarás estos comandos de Tcl: socket, fileevent, vwait.

Este programa de ejemplo con sockets puede servirte para empezar.

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

¿Listo para empezar El ahorcado?

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