Треки
/
Java
Java
/
Вправи
/
Шибениця
Шибениця

Шибениця

Складна

Вказівки

Реалізуйте логіку гри Hangman за допомогою функціонального реактивного програмування.

Hangman - це проста гра на вгадування слів.

Функціональне реактивне програмування - це спосіб писати інтерактивні програми. Воно відрізняється від звичного погляду: замість того щоб казати «коли кнопку натиснуто, збільшуємо лічильник», ми пишемо «значення лічильника дорівнює сумі кількості натискань кнопки».

Реалізуйте базову логіку гри Hangman за допомогою функціонального реактивного програмування. Для цього потрібно встановити бібліотеку для функціонального реактивного програмування; про це йдеться у файлах вправи, специфічних для конкретної мови.

Підказки

Один із головних аспектів функціонального програмування - мати функції без побічних ефектів, щоб не доводилося гадати, які приховані обʼєкти змінила функція.

У реактивному програмуванні замість того, щоб component активно шукав роботу, цю роботу передають до component. Це схоже на колбеки, але на значно вищому рівні, з потужнішими абстракціями. Дуже часто реактивне програмування використовують разом із функціональним програмуванням.

У цій вправі ми будемо використовувати RxJava, відому бібліотеку для реактивного програмування з Java API.

Змодельований контекст цієї вправи - застосунок, який приймає два вхідні потоки:

  • нові слова для вгадування, які надсилає якийсь ігровий рушій,
  • літери, які обирає гравець.

Ці два вхідні потоки реалізовано за допомогою Observables, а саме класу io.reactivex.Observable. По суті, ми можемо підписатися на Observable, щоб «реагувати» на значення, які десь створюються. Наприклад, ігровий рушій надсилає нові слова, коли виявляє, що почалася нова гра, а події клавіатури породжують вхідні літери.
Але багато реактивних фреймворків пропонують потужні абстракції, як-от map, що дає змогу змінити отримані вхідні дані, або combine, що дає змогу поєднати один або кілька Observable.

Клас Output - це очікуваний результат обробки вправи, який дає змогу frontend показати повний стан гри, не вимагаючи від нього жодної форми сховища. Це також робить його функціональним.

У цій вправі нам треба знайти спосіб використати обидва вхідні потоки, щоб згенерувати ці вихідні дані у вигляді Observable.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Java Exercism

Час розпочати Шибениця?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Java, а також 26 концепцій158 вправ та справжнє наставництво від людей, і все це безкоштовно.