RPNでゲームを作ろう(12)

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

残った課題は、プレイヤーの回答の回数を数えて、4回を超えたらゲームオーバーにする処理を作ることです。これは、今まで既に出てきた、比較と分岐で実装できますが、HP 35sには、制御構造としてループが用意されていますので、これを使いましょう。今回は、35sでのループの作り方を説明します。

余談ですが、どこかで聞いた話なんですけど(出典が何だったか忘れてしまいました。すみません)、初めてプログラム言語を学ぶ際、途中でつまずく人は、ほとんど「for文でつまずく」つまり、ループの概念が出てきたところで、わからなくなるのだそうです。オブジェクトだの高階関数だのといった、難しい概念でつまずいて挫折することは、あまりないようです。ということは、この連載も、ループを扱う今回が関門ですね。

一般に、ループでは、ループカウンタとなる変数を用意して、その初期値、増分、終わりの値を設定します。また、ループして実行する範囲を示しておく必要があります。

たとえば、そうですね、BASICでは、

for i = 0 to 4 step 1
 (ループ内の処理)
next i
 (ループ終了後の処理)

という感じで書いて、i がループカウンタ、0 が初期値、4 が終わりの値、step でループ1回あたりのカウンタの増分を示しています。(stepが1の場合は、省略できます。)これを、とりあえず、これと同じものを35sのプログラムで書くと

A001 LBL A
A002 0.04
A003 STO R
A004 ISG R
A005 GTO B001
A006 GTO C001
B001 LBL B
B002(ループ内の処理)
B003 GTO A004
C001 LBL C
C002(ループ終了後の処理)

となります。ラベルや行番号は今だけの、暫定的なもので、今まで作ったプログラムとは関係ありません。

…と。非常に中途半端ですが、ちょっと時間が無くなってしまったので、今日はループのプログラム例をお見せするだけにして、次回に、その説明をしたいと思います。