トラック
/
Java
Java
/
演習
/
ハングマン
ハングマン

ハングマン

上級

説明

関数型リアクティブプログラミングを使って、ハングマンゲームのロジックを実装してください。

ハングマンは、単語を当てるシンプルなゲームです。

関数型リアクティブプログラミングは、インタラクティブなプログラムを書くための考え方です。通常の見方とは異なり、「ボタンが押されたらカウンターを増やす」と書く代わりに、「カウンターの値は、ボタンが押された回数の合計である」と書きます。

関数型リアクティブプログラミングを使って、ハングマンの基本的なロジックを実装してください。そのためには、関数型リアクティブプログラミングのライブラリをインストールする必要があります。インストール方法は、この演習のプログラミング言語やトラックに固有のファイルで説明されています。

ヒント

関数型プログラミングの大きな特長の1つは、副作用のない関数を持つことです。関数が書き換えた目に見えないオブジェクトを気にかけなくて済みます。

リアクティブプログラミングでは、コンポーネントが自分から処理を探しにいくのではなく、処理のほうがコンポーネントへプッシュされます。これはコールバックに似ていますが、ずっと高いレベルで、より強力な抽象化を備えています。リアクティブプログラミングは、関数型プログラミングと組み合わせて使われることがよくあります。

この演習では、JavaのAPIでリアクティブプログラミングを行うための有名なライブラリ、RxJavaを使います。

この演習で想定する状況は、2つの入力を受け取るアプリケーションです。

  • ゲームエンジンから送られてくる、これから当てる新しい単語
  • プレイヤーが選んだ文字

これらの入力はどちらもObservablesで実装されています。使うのはio.reactivex.Observableクラスです。 基本的には、Observableを購読すると、どこかで生成された値に「反応」できます。たとえば、ゲームエンジンは新しいゲームが始まったことを検知すると新しい単語をプッシュし、キーボードのイベントは文字の入力を生成します。
しかし、リアクティブフレームワークの多くは強力な抽象化を提供しています。mapを使えば受け取った入力を変換できますし、combineを使えば1つ以上のObservableをマージできます。

Outputクラスは、この演習の処理が期待する結果です。これを使えば、フロントエンドは何らかのストレージを必要とせずにゲームの完全な状態を表示できます。そのため、フロントエンドも関数的になります。
この演習では、2つの入力をどちらも使って、この出力をObservableの形で生成する方法を見つける必要があります。

GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Java Exercism

ハングマンを始める準備はできましたか?

Exercismに登録すれば、26個のコンセプト158個の演習、そして本物の人間によるメンタリングとともに、Javaを学んでマスターできます。すべて無料です。