Percursos
/
Java
Java
/
Exercícios
/
Jogo da forca
Jogo da forca

Jogo da forca

Difícil

Instruções

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.

Dicas

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:

  • as novas palavras a adivinhar, vindas de algum motor de jogo,
  • as letras escolhidas pelo jogador.

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.

Editar via GitHub A ligação abre numa nova janela ou separador
Java Exercism

Estás pronto para começar Jogo da forca?

Inscreve-te no Exercism para aprenderes e dominares Java com 26 conceitos158 exercícios, e mentoria humana real, tudo grátis.