今回は、『ポッポマラソン』に必要な捕まえる『ポッポ』の数を表示するプログラムを説明します。
前回は、そのプログラムを作りました。
初期設定
'ポッポマラソン
'サイショ
TUKAMAETAPOPPO=0
POPPO=0
PIJON=0
AME=0
SINKAAME=12
MAXPIJON=60
各変数の初期設定です。
- TUKAMAETAPOPPO:捕まえたポッポの数。まだ捕まえていないので 0
- POPPO:今持っているポッポの数。持っていないので 0
- PIJON:今持っているピジョンの数。持っていないので 0
- AME::今持っているアメの数。持っていないので 0
- SINKAAME:ポッポを”進化”させてピジョンにするのに必要なアメの数。12個
- MAXPIJON:必要な進化させたピジョンの数。今回は 60
メインループ(メインループの始まり)
'メイン
REPEAT
メインループの開始位置です。
“UNTIL”と対になって、この間を”UNTIL”の後の条件式が“true”になるまで繰り返します。
★”WHILE”と”WEND”の場合は、”WHILE”の後の条件式が“true”の間のみ繰り返します。
メインループ(ポッポ所得)
GOSUB @GETPOPPO
サブルーチンを呼んで、ポッポを1匹捕まえたとして、処理をします。
★サブルーチンとは、ある決まった特定の処理をまとめたもので、そのサブルーチンを呼び出せば、そのサブルーチンの処理をして、呼び出したところの次の命令から続けるようになっています。
なお、呼び出されるサブルーチンは、ラベル名(“@”で始まる)で呼びます。
メインループ(進化に必要なアメがあれば進化)
IF AME >= SINKAAME THEN
GOSUB @SINKA
進化に必要なアメがあれば、サブルーチンを呼んで進化の処理をします。
メインループ(博士に送ってアメにする)
ELSEIF POPPO > 1 THEN
GOSUB @HAKASE
もし、進化に必要なアメがなく、進化させるポッポが2匹以上いれば、博士に送るサブルーチンを呼びます。
メインループ(進化に必要なアメがあれば進化(2))
IF AME >= SINKAAME THEN
GOSUB @SINKA
ENDIF
博士に送った後、進化に必要なアメがあれば、サブルーチンを呼んで進化の処理をします。
メインループ(条件の終わり)
ENDIF
メインループ(途中経過の表示)
PRINT TUKAMAETAPOPPO,POPPO,AME,PIJON
途中経過として、現時点での、捕まえたポッポの数、今持っているポッポの数、今持っているアメの数、今持っているピジョンの数を表示します。
メインループ(メインループの最後)
UNTIL PIJON >= MAXPIJON
メインループ(結果表示)
PRINT "ピジョン";MAXPIJON;"ヒキニ ヒツヨウナ ポッポ ハ";TUKAMAETAPOPPO;"ヒキ"
END
結果を表示します。
★次の行からサブルーチンなので、メインのプログラムを停止させるために、”END”は必要。
ポッポを捕まえたときのサブルーチン
@GETPOPPO
INC TUKAMAETAPOPPO
INC POPPO
INC AME,3
RETURN
ポッポを捕まえたとき、変化がある変数の処理をします。
なお、最初の行の”@GETPOPPO”はラベルです。
このラベルを頼りにサブルーチンが呼ばれます。
- TUKAMAETAPOPPO:捕まえたポッポの数は、1 匹増えます。
- POPPO:今持っているポッポの数も1 匹増えます。
- AME::今持っているアメの数は 3つ増えます。
進化したときのサブルーチン
@SINKA
DEC POPPO
INC PIJON
DEC AME,SINKAAME
INC AME
RETURN
ポッポを進化させたとき、変化がある変数の処理をします。
- POPPO:今持っているポッポの数は、1匹減ります。
- PIJON:今持っているピジョンの数は、1匹増えます。
- AME::今持っているアメの数は、SINKAAME(ポッポを”進化”させてピジョンにするのに必要なアメの数) 分減ります。そして、進化により 1 増えます。
ポッポを博士に送った時のサブルーチン
@HAKASE
DEC POPPO
INC AME
RETURN
ポッポを博士に送った時、変化がある変数の処理をします。
- POPPO:今持っているポッポの数は 1 匹減ります。
- AME::今持っているアメの数は 1つ増えます。
次回は、『ポッポ』以外のモンスターの場合ができるように、修正しようと思います。
では今回はここまで。
また次回をお楽しみに。
sammyの相方です。
時たま出てくることがあります。