5.エアホッケーゲーム ロジック&解説

 プログラム実行結果

右側の青いバーを上下キーにて操作します。
右端、または左端にタッチした時点でゲーム終了となります。
玉が自分または敵のバーに接触した際、はねかえり角度はランダムで定義しています。

 

 プログラム(ボール)

ball

 

 

 

 

 

 

 

 

 

 

 

 

 

まず、ボールのプログラムから説明します。

①いつもと同じ通り、緑の旗をクリックしたタイミングで起動します。

②まず初期処理をします。ボールの向きと初期位置を決めます。

③繰り返し処理に入ります。この繰り返し処理は条件を設定する事ができ、ボールのx座標が-220~220までのあいだ繰り返すことになります。ここでいう-220というのは左端にボールが触れる位置で、220は右端にボールが触れる位置です。

④現在向いている方向(初期状態ならば②で設定した-120度になります)へ8進めます。この数字を小さくするとボールの速度が遅くなり、逆に数字を大きくすると早くなります。

⑤ここでは自分のラケット(右側の板)に接触した時の処理となります。ラケットに触れた場合は反射するように角度を変えます。なお、「360度―ボールの角度」にて反射後角度を求める事ができるのですが、それではゲームとして面白味が無いため、360度の部分をランダムで定義しています。

⑥敵のラケット(左側の板)に接触した時の処理となります。考え方は⑤と同じです。

⑦画面の端について時に跳ね返る命令を入れておきます。なお、左右端に接触した場合は、この命令を実行するものの、③の条件から外れてしまうため、繰り返し処理から抜けることになります。

⑧この分岐命令を実行されるということは、⑤の繰り返し条件から外れたという事になるため、ボールが左右のどちらかの端に接触した(x軸が-220より小さい or 220より大きい)となります。

この分岐はゲームに勝ったのか負けたのかを判断します。ボールが右端に接触して「負けた」場合は【まけ】を、ボールが左端に接触して「勝った」場合は【かち】のメッセージを他のプログラムに送ります。

このメッセージを受け取っているのは画面のプログラムとなり、後ほど説明します。

 

 

 プログラム(ラケット-自分)

jibun

右側のラケット(板)のプログラムとなります。

このラケットはキーボードの上下ボタンで移動できるようにします。

①緑色の旗を押したタイミングで操作可能とします。

②初期位置を設定しています。y座標が0なので、真ん中に表示させます。

③繰り返し処理となり、上ボタンまたは下ボタンを押下した際の処理を繰り返します。

④上ボタンが押された場合は上に動かすためにy座標を増やし、下ボタンが押された場合は下に動かすためにy座標を減らします。

 

 プログラム(ラケット-敵)

teki

こちらは左側の敵ラケット(板)のプログラムとなります。

①~③については自分のラケットの処理と同じですが、④~⑤は自動で動かす必要があるため異なります

今回、敵ラケットを動かす方法として、ボールの位置と自分の位置を比較して動かす方法としています。

④敵ラケットよりボールが上にある場合のロジックとなり、その場合は敵ラケットのy座標を増やします。

⑤敵ラケットよりボールが下にある場合のロジックとなり、その場合は敵ラケットのy座標を減らします。

 

 プログラム(背景)

haikei

背景のプログラムとなります。

①緑色の旗をクリックしたタイミングで、背景を「はじめ」という背景にします。

水色の無字の背景を「はじめ」というふうに定義しています。

②ボールのプログラムからメッセージを送っていましたが、ここで受け取ります。【かち】のメッセージを受け取ったタイミングで背景を「あなたのかち」という背景に変更し、勝ちの文字を背景に表示させます。

③では逆に【まけ】のメッセージを受け取った際の処理となり、負けの文字を背景に表示させます。

WS000041

 

各背景の定義は左記のとおりです。

 

 

 

 

 

 

 

※キッズプログラミング講座では上記内容を子供にもわかりやすい表現に変えて教えます。