Menu

第9回 簡単なゲームの作成2


今回は、「当たり判定(はんてい)」というゲームで良く使われる条件判定の命令を見ていくよ。
逃げるキャラクターを追いかけたり、あるいは逆にキャラクターから逃げ回ったり、さらには敵キャラクターにぶつかったりして、ゲームではポイントを加点したり、減点したりするルールを作って得点を競うよね。この場合、「追いついた」とか、「ぶつかった」とかを判定する必要がある。この判定のことを当たり判定というんだ。
この回では、簡単な「宝探し」を行うゲームを考えてみるよ。以前にも使った不規則な数を作り出す命令RND( )を使って、まず、画面の秘密の場所にお宝を3つ隠そう。そして、そのお宝を「人」の型をしたキャラクターを画面の中で、縦横に動かして探していくことにするよ。
まずは、入力をしていこう。
10行目から60行目のプログラム
10 CLS
20 C=15
30 D=12
40 L=RND(31)+1
50 M=RND(31)+1
60 N=RND(31)+1

[プログラムの説明]
10 CLS 画面をクリアしているよ。
20 C=15 ここでは、「人」のキャラクターの横方向の最初の位置を真ん中くらいに設定しているよ。
30 D=12 ここでは、「人」のキャラクターの縦方向の最初の位置を真ん中くらいに設定しているよ。
40 L=RND(31)+1 ここでは、1つ目のお宝の隠し場所を計算しているよ。
50 M=RND(31)+1 ここでは、2つ目のお宝の隠し場所を計算しているよ。
60 N=RND(31)+1 ここでは、3つ目のお宝の隠し場所を計算しているよ。

70行目から140行目のプログラム
70 A=INKEY()
80 IF A=28 THEN X=-1
90 IF A=29 THEN X=1
100 IF A=30 THEN Y=-1
110 IF A=31 THEN Y=1
120 LOCATE C+X, D+Y
130 PRINT CHR$(#F9)
140 C=C+X : D=D+Y

[プログラムの説明]
70 ここでは、キーボードのどのキーが押されたか、を番号で受け取って、Aの箱に入れているよ。
80 押されたキーが28番(左向きの矢印)「←」の場合、Xの箱に「ー1」を入れるよ。現在の位置から「人」のキャラクターをひとつだけ横方向に1だけ減らした位置に移動させるためだよ。
90 押されたキーが29番(右向きの矢印)「→」の場合、Xの箱に「1」を入れるよ。現在の位置から「人」のキャラクターをひとつだけ横方向に1だけ増やした位置に移動させるためだよ。
100 押されたキーが30番(上向きの矢印)「↑」の場合、Yの箱に「ー1」を入れるよ。現在の位置から「人」のキャラクターをひとつだけ縦方向に1だけ減らした位置に移動させるためだよ。
110 押されたキーが31番(下向きの矢印)「↓」の場合、Yの箱に「1」を入れるよ。現在の位置から「人」のキャラクターをひとつだけ縦方向に1だけ増やした位置に移動させるためだよ。
120 押されたキーに応じた位置へ移動させる命令だよ。
130 「人」のキャラクターを120行目で移動した位置に表示するよ。
140 現在のキャラクターの位置を保管しているよ。

150行目から240行目のプログラム
150 IF C=L AND D=7 THEN GOTO 220
160 IF C=M AND D=14 THEN GOTO 230
170 IF C=N AND D=21 THEN GOTO 240
180 X=0: Y=0: A=0
190 WAIT 5
200 CLS
210 GOTO 60
220 PRINT "GET1": END
230 PRINT "GET2": END
240 PRINT "GET3": END

[プログラムの説明]
ここからが今回の「当たり判定」のプログラムの部分だよ。
150 1つ目のお宝の隠し場所と「人」のキャラクターの現在の位置が一緒かどうかを判定しているよ。もし、1つ目のお宝の隠し場所と現在の位置が一緒の場合は、220行目に飛ぶよ。
160 2つ目のお宝の隠し場所と「人」のキャラクターの現在の位置が一緒かどうかを判定しているよ。もし、2つ目のお宝の隠し場所と現在の位置が一緒の場合は、230行目に飛ぶよ。
170 3つ目のお宝の隠し場所と「人」のキャラクターの現在の位置が一緒かどうかを判定しているよ。もし、3つ目のお宝の隠し場所と現在の位置が一緒の場合は、240行目に飛ぶよ。
180 お宝の隠し場所と一致しなかった場合、横、縦方向の移動をゼロにして、キーの番号もゼロに戻すよ。そして、また探し続けるよ。
190 すぐに戻ると早すぎて見えなくなってしまうから、時間を稼いでいるよ。
200 画面をクリアしているよ。
210 60行目に戻って、再び探し続けるよ。
220 ここでは、一つ目のお宝をゲットした表示をしてプログラムを終えるよ。
230 ここでは、二つ目のお宝をゲットした表示をしてプログラムを終えるよ。
240 ここでは、三つ目のお宝をゲットした表示をしてプログラムを終えるよ。

以上がお宝探しのプログラムだよ。
完成したら、「RUN」を押して実行してみよう。
そして、矢印キーを押しながら、縦横に「人」のキャラクターを動かして、お宝をゲットする旅に出よう。上手く見つかるかな。