関数型リアクティブプログラミングを使って、ハングマンゲームのロジックを実装してください。
ハングマンは、単語を当てるシンプルなゲームです。
関数型リアクティブプログラミングは、インタラクティブなプログラムを書くための考え方です。通常の見方とは異なり、「ボタンが押されたらカウンターを増やす」と書く代わりに、「カウンターの値は、ボタンが押された回数の合計である」と書きます。
関数型リアクティブプログラミングを使って、ハングマンの基本的なロジックを実装してください。そのためには、関数型リアクティブプログラミングのライブラリをインストールする必要があります。インストール方法は、この演習のプログラミング言語やトラックに固有のファイルで説明されています。
この演習にサードパーティ製のライブラリは必要ありません。FRPライブラリに関する指示は無視してください。
ときには、例外を送出する必要があります。その際は、エラーの原因が何であるかを示す意味のあるエラーメッセージを必ず含めましょう。そうすることでコードが読みやすくなり、デバッグもずっと楽になります。エラーの原因が特定の型になるとわかっている場合は、組み込みのエラー型から適切なものを選んで送出してもかまいませんが、その場合も意味のあるメッセージを含めましょう。
この演習では、ゲームが終わったのにプレイヤーが続けてプレイしようとしたときに、raise文を使ってValueErrorを「スロー」する必要があります。テストに合格するのは、exceptionをraiseし、かつメッセージを添えた場合だけです。
メッセージ付きでValueErrorを送出するには、メッセージをexception型の引数として書きます:
# when player tries to play, but the game is already over.
raise ValueError("The game has already ended.")