RPNでゲームを作ろう(その1)

RPNで、往年のプログラミング例題「数当てゲーム」を作ってみたいと思います。少し長い話になりそうですので「連載」で行きたいと思います。今日は、その1です。

プログラム言語を習得する際の例題には、いろいろ有名なものがあります。だいぶ昔、私が初めてコンピュータを使い始めた頃は、この数当てゲームが多かったように思います。(単なる主観ですが。)

最近、数当てゲームはあまり見かけませんね。今時の例題といえば、もっと実用的な、ソートだったり、あるいはネットワークに関するものだったりするのでしょうね。

おそらく、私が初めてプログラム言語を覚えた頃は、今ほどには、コンピュータが実用品ではなく、それこそ、数当てゲームのような、まだコンピュータを何に使って良いのかわからない、という感じがたっぷり含まれた例題が多かったような気がします。(まあ、もちろんソートはありましたけど。)当時の入門言語と言えばBASIC、これにあきたらなくなったら、マシン語アセンブルは表を使って手動で)という感じでした。

この例題「数当てゲーム」は、以下に説明するように、非常に単純です。(しかも特に面白いゲームでもありません。)しかし、これには、数値の計算(乱数発生)、入力、比較、分岐、メッセージ出力、反復といった、プログラミングで最初期に身につけるべき事項が一通り、しっかり含まれていて、なかなか良い例題だと思います。さらに、これをプレイするためには、いわゆる二分探索の考え方が必要になります。

で、今回はこれをRPN(RPL)で実装してみたいと思います。『ゆにすの日記』の筋としては、先日(1月10日)の記事で紹介した「HP 15c LE」で作るのが順当のように思いますが、これは基本的には数字しか出力できないので、ちょっとゲームはやりにくいです。ので、同社の「HP 35s」を使おうと思います。この35sは、RPNを用いたプログラミングの入門としては、良い機種だと思います。

ここで製作する、数あてゲームのルールは簡単です。まず出題者であるコンピュータが、0から9までの整数のうち、どれか一つを選定し、プレイヤー(人間)には知らせないでおきます。プレイヤーは、0から9までの数字のうち、一つを選んで回答とします。最初は、何も情報が与えられていないので、適当に選びます。出題者は、プレイヤーの回答と、事前に選定しておいた整数とを比較して、「大きすぎる」、「小さすぎる」、「正解」のいずれであるかを、プレイヤーに提示します。不正解の場合、プレイヤーは、提示を参考にして自分の回答を修正して再挑戦します。4回の回答で当てられなかったら、ゲームオーバーです。

例えば、

ゲーム開始
  出題者:7を選定
プレイヤー:5と回答
  出題者:「小さすぎる」と提示
プレイヤー:8と回答
  出題者:「大きすぎる」と提示
プレイヤー:7と回答
  出題者:「3回で正解!」と提示
ゲーム終了。

という感じです。

…。

ふう。もう深夜ですね。今日はここまでにして、次回はこのプログラムの構造を考えてみたいと思います。連載と言っておきながら、たぶん、間にほかの記事を挟みつつ、断続的なアップロードになってしまうかとは思いますが。