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
このような感じで、発生した乱数と、プレイヤーの入力が、スタックの中で並ぶと考えられます。これでとりあえず、プレイヤーに数値を入力してもらう、という目的は達成です。
でも、実は、この方法にはちょっと問題があるのですが、それは次回に説明したいと思います。