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

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

従来のプログラムに、前回のループの構造を導入します。以下にリストを載せます。従来の部分と、今回書き加えた部分の間に空行を入れて区別してあります。また、見やすくするために、今回書き加えた部分にだけ、説明を書き込みます。

この「数当てゲーム」のプログラムは、とりあえず、これで完成です。

次回は、プログラム中に何度も登場するのに、まだ説明していない、SFおよびCF命令についての説明を書いてみたいと思います。たぶん次回が最終回です。

B001 LBL B

B002 CLVARS ← 変数A〜Zをクリア
B003 CLSTK ← スタックをクリア
B004 0.004
B005 STO C ← ループカウンタとして使うCに0.004を格納する

B006 RANDOM
B007 10
B008 ×
B009 INTG
B010 STO Q

B011 ISG C ← ループの先頭
B012 GTO B014 ← ループの内側へ
B013 GTO E001 ← ループの外側へ

B014 CLSTK ← ループの内側の始点

B015 0
B016 STO A ← ユーザーからの回答を格納する変数に毎回ゼロを代入してクリア

B017 INPUT A
B018 CLSTK
B019 RCL Q
B020 RCL A
B021 x≠y?
B022 GTO C001
B023 SF 10
B024 CORRECT
B025 CF 10
B026 CLSTK
B027 RTN
C001 LBL C
C002 x>y?
C003 GTO D
C004 SF 10
C005 TOO-SMALL
C006 CF 10
C007 GTO B011
D001 LBL D
D002 SF 10
D003 TOO-LARGE
D004 CF 10
D005 GTO B011 ← ループの内側の終わり

E001 LBL E ← ループの外側の始点
E002 SF 10
E003 GAME-OVER ← 4回の回答で正解できなかったので、ゲームオーバーと表示
E004 CF 10
E005 CLSTK ← プログラム終了