Реалізуйте логіку гри Hangman за допомогою функціонального реактивного програмування.
Hangman - це проста гра на вгадування слів.
Функціональне реактивне програмування - це спосіб писати інтерактивні програми. Воно відрізняється від звичного погляду: замість того щоб казати «коли кнопку натиснуто, збільшуємо лічильник», ми пишемо «значення лічильника дорівнює сумі кількості натискань кнопки».
Реалізуйте базову логіку гри Hangman за допомогою функціонального реактивного програмування. Для цього потрібно встановити бібліотеку для функціонального реактивного програмування; про це йдеться у файлах вправи, специфічних для конкретної мови.
Проігноруйте частину про бібліотеку FRP: для цієї вправи стороння бібліотека не потрібна. Ця вправа зосереджується на подієво-орієнтованому програмуванні з використанням колбеків і циклу подій Tcl.
Потрібно створити TCP-сервер і предметно-орієнтований протокол. Цей сервер запускають зі словом, яке потрібно вгадати. Тестовий скрипт реалізує клієнт, який надсилає серверу команди.
Команди протоколу, які потрібно реалізувати:
STATUS повертає поточний стан гри. Відповідь буде масивом із трьох
елементів:
GUESS x, де x це літера, яку потрібно вгадати. Після кожного
вгадування сервер відповідатиме масивом зі статусом.SHUTDOWN віддалено вимикає сервер. Інакше сервер завершує роботу після
перемоги або поразки.Сервер має вміти обробляти ці команди незалежно від регістру.
Запустіть свій сервер на порті з номером 0: Tcl знайде невикористаний
порт, тож нам не доведеться жорстко вписувати номер порту в тестовий
скрипт. Усі інтерпретатори, що працюють в одному процесі (включно з
потоками), спільно використовують одне середовище, тож сервер може
повідомити свій порт тестовому скрипту через глобальний масив env.
Приклад є у початковому файлі hangman.tcl.
Знадобляться такі команди Tcl:
socket,
fileevent,
vwait.
Цей приклад програми із сокетами допоможе зробити перший крок.