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

前回(2月2日)の続きです。

今回こそは、プレイヤーに数値を入力してもらう部分を作りましょう。

と、いう割には、やりかたは簡単で、INPUT命令の後に、入力先の変数を書くだけです。ここでは、Answerということで、変数Aに入力してもらうようにしましょう。(HP 35sでは、変数名としてはA〜Zの1文字が使えます。)プログラムの書式は、

INPUT A

となります。この命令では、入力された数値は、変数Aに格納されると同時に、スタックにも積まれます。この命令を、前回作った乱数発生部の後に置きます。

B001 LBL B
B002 RANDOM
B003 10
B004 ×
B005 INTG
B006 INPUT A
B007 RTN

このプログラムを実行すると、

A?

と聞かれるので、適当な数値を入力して、R/S(Run/Stop)キーを押します。例えば、

4 R/S

等とします。ここで重要なことは、プログラムからの問いかけ(この場合「A?」)への入力は、R/Sキーを押す必要があって、ENTERではない、ということです。ややこしいですが、この決まりのおかげで、問いかけられている最中に、プレイヤーは、スタックを使った普通の計算を、ENTERを使って実行することができます。つまり、

A? 

に対して

2 ENTER 3 × R/S

のような操作で、6を入力することができます。

さて、今回のプログラム全体での、スタックの動きを見てみましょう。プレイヤーは4を入力するとします。

入力 → スタック

B001 LBL B
B002 RANDOM → 0.246(適当な乱数)
B003 10 → 10 0.246
B004 × → 2.460
B005 INTG → 2
B006 INPUT A(プレイヤーの操作:4 R/S)→ 4 2
B007 RTN

このような感じで、発生した乱数と、プレイヤーの入力が、スタックの中で並ぶと考えられます。これでとりあえず、プレイヤーに数値を入力してもらう、という目的は達成です。

でも、実は、この方法にはちょっと問題があるのですが、それは次回に説明したいと思います。