条件分岐を使って、スプライトを動かす

「条件分岐」とは、プログラミングの基本制御構造のひとつである大切な考え方です。先ほど実装した「順次処理」と「反復」に続く3つ目の構造となります。条件分岐を使用することで、プログラミングで実現できることがさらに広がります。必須の命令となりますのでじっくりと学習/理解をしてください。

 

先ほど、カーソルキーでスプライトが左右に移動するスクリプトを作りました。これを条件分岐を使って書き換えてみたいと思います。以下のようにスクリプトを修正してください。

一番上のブロックは変更ありません。スプライトをアニメーションさせています。「右向き矢印キーが押されたとき」と「左向け矢印キーが押されたとき」のブロックは不要ですので削除してください。「緑の旗がクリックされたとき」から始まる下のブロックが新たに作成したスクリプトです。

 

上から順に説明します。

 

「(緑の旗)がクリックされたとき」

緑の旗をクリックするとこのブロックから順にプログラムを実行します。このスクリプト(プログラム)は、緑の旗をクリックした際の処理が書かれています。

 

「ずっと」

コの字型のブロックで、この中に置いたブロックを繰り返し実行します。

 

「もし 右向き矢印キーが押された なら」(★)

オレンジ色の「もし なら」のブロック上に、水色の「調べる」の「 キーが押された」を配置します。この「もし なら」が条件分岐の命令となります。条件分岐とは、ある条件が満たされた場合のみ、その後の処理を実行するという命令です。(この場合、右向きのキーが押された場合のみ、右向き移動の処理を行っています。)逆に何もキーが押されていない、別のキーが押されている等、条件が満たされない場合は「もし なら」の中の処理は実行されません。

「90度に向ける」

スプライトを右向きにします。

 

「x座標を10ずつ変える」

スプライトを右に10移動します。

 

「もし端に着いたら、跳ね返る」

スプライトが画面の端に着いたら、それ以上移動できないようにします。

 

以下、左向きについても同様な処理をしています。

 

「もし 左向き矢印キーが押された なら」

「-90度に向ける」

「x座標を-10ずつ変える」

「もし端に着いたら、跳ね返る」(☆)

 

このスクリプトは、実行すると「ずっと」の中の★から☆までの処理を繰り返します。つまり、左右のカーソルキーが押されたら、スプライトの移動をするプログラムとなります。左右のカーソルキーが押されていない場合は、ふたつの「もし なら」の処理が実行されませんので、何もしないことになります。

 

条件分岐の処理を用いることで、より複雑な処理を比較的シンプルに記述することが可能です。また、プログラムがすっきり見やすくなる等のメリットもあります。

 

ゲームでは、自身のキャラクターの移動処理(キーが押されたか、地面から落ちたか)や、衝突処理(敵に当たった、敵のミサイルに当たった)などで条件分岐を多用します。ぜひ基礎をマスターして頂ければと思います。

あわせて読みたい