Implementa a lógica do jogo da forca com programação funcional reativa.
O jogo da forca é um jogo simples de adivinhar palavras.
A Programação Funcional Reativa é uma forma de escrever programas interativos. Difere da perspetiva habitual porque, em vez de dizeres «quando o botão é premido, incrementa o contador», escreves «o valor do contador é a soma do número de vezes que o botão é premido».
Implementa a lógica básica do jogo da forca com programação funcional reativa. Para isso, vais ter de instalar uma biblioteca de FRP; isso será descrito nos ficheiros específicos da linguagem e do track do exercício.
Um dos principais aspetos da Programação Funcional é ter funções sem efeitos secundários, ou seja, não teres de te preocupar com os objetos ocultos que uma função alterou.
Com a Programação Reativa, em vez de haver um component a procurar trabalho ativamente, é o trabalho que é empurrado para o component. Isto é semelhante aos callbacks, mas a um nível muito mais elevado, com abstrações mais poderosas. Muitas vezes, a Programação Reativa é usada em conjunto com a Programação Funcional.
Neste exercício, vamos usar o RxJava, uma biblioteca bem conhecida de Programação Reativa com uma API de Java.
O contexto simulado deste exercício é uma aplicação que recebe duas entradas:
Essas duas entradas são implementadas com Observables, através da classe io.reactivex.Observable.
Basicamente, podes subscrever um Observable para "reagir" aos valores que são produzidos algures. Por exemplo, o motor de jogo envia novas palavras quando deteta que começou um novo jogo, ou os eventos de teclado geram entradas de letras.
Mas muitos frameworks reativos oferecem abstrações poderosas, como o map, que te permite alterar a entrada recebida, ou o combine, que te permite juntar um ou mais Observables.
A classe Output é o resultado esperado do processamento do exercício, permitindo que um front-end
apresente o estado completo do jogo sem lhe exigir qualquer forma de armazenamento, o que a torna
também funcional.
Neste exercício, tens de encontrar uma forma de usar as duas entradas para gerar esta saída na forma de um Observable.
Inscreve-te no Exercism para aprenderes e dominares Java com 26 conceitos158 exercícios, e mentoria humana real, tudo grátis.