Track
/
Java
Java
/
Esercizi
/
Impiccato
Impiccato

Impiccato

Difficile

Istruzioni

Implementa la logica del gioco dell'impiccato usando la programmazione funzionale reattiva.

L'impiccato è un semplice gioco in cui si indovinano le parole.

La programmazione funzionale reattiva è un modo per scrivere programmi interattivi. Si differenzia dalla prospettiva usuale: invece di dire «quando si preme il pulsante, incrementa il contatore», scrivi «il valore del contatore è la somma del numero di volte in cui si preme il pulsante».

Implementa la logica di base dell'impiccato usando la programmazione funzionale reattiva. Per farlo dovrai installare una libreria di programmazione funzionale reattiva: sarà descritto nei file specifici della lingua dell'esercizio.

Suggerimenti

Uno degli aspetti principali della programmazione funzionale è avere funzioni senza effetti collaterali, per non doversi chiedere quali oggetti nascosti una funzione ha modificato.

Con la programmazione reattiva, invece di avere un componente che cerca attivamente lavoro, è il lavoro a essere spinto verso il componente. È simile alle callback, ma a un livello molto più alto, con astrazioni più potenti. Molto spesso la programmazione reattiva viene usata insieme alla programmazione funzionale.

Nell'esercizio useremo RxJava, una libreria molto nota per la programmazione reattiva con un'API Java.

Il contesto simulato di questo esercizio è un'applicazione che riceve due input:

  • le nuove parole da indovinare, fornite da un motore di gioco,
  • le lettere scelte dal giocatore.

Questi due input sono implementati con gli Observables, usando la classe io.reactivex.Observable. In sostanza, puoi sottoscriverti a un Observable per «reagire» ai valori che vengono prodotti da qualche parte. Per esempio, il motore di gioco spinge nuove parole quando rileva che è iniziata una nuova partita, oppure gli eventi della tastiera generano input di lettere.

Ma molti framework reattivi offrono astrazioni potenti, come map, che ti permette di cambiare l'input ricevuto, o combine, che ti consente di unire tra loro uno o più Observable.

La classe Output è il risultato atteso dell'elaborazione dell'esercizio: consente a un front-end di mostrare lo stato completo della partita senza richiedergli alcuna forma di archiviazione, il che rende funzionale anche il risultato.

In questo esercizio devi trovare un modo per usare entrambi gli input e generare questo output sotto forma di un Observable.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Java Exercism

Vuoi iniziare Impiccato?

Iscriviti a Exercism per imparare e padroneggiare Java con 26 concetti158 esercizi e il mentoring di persone reali, tutto gratis.