B-Magaスマートフォン専用ページを表示B-Maga初心者向けのプログラミングについての情報や、フリーゲームの情報など、お知らせしていくブログです。プログラムの投稿の受付や、そのプログラムの公開などもやる予定です。楓ちゃんに変なこと言われる前に、講座を始めていきましょう!今回は、敵の表示と移動について説明していきますよ!楓:先手打たれちゃったー。今日もよろしくお願いしますっ。ふふん、私だって、いつもやられてばかりじゃないよー。それじゃ初めていきましょう!~敵に必要な変数は?~さて、まずは敵の移動や表示に関係する変数の定義から始めていこうか。前のあたりに、次のコードを書いてね。このeFlagって配列変数はなんですか?うん。それは、その番号の敵が出現しているかどうかを表すフラグだよ。これが1になってる敵だけを表示、移動させるようにするんだ。それと、eFireTimeは、出現してから弾を発射するまでの時間。eTimeCntは出現してから経過した時間だよ。eTimeCntがeFireTimeと同じになったら、弾を発射するようにする予定。~敵を作ろう!~さて。それでは、まずは敵を出現させる処理から作っていこうか。その前に一つやっておかなくちゃならないことがあるの。それは、まだ使われていない番号を探すこと。使われている番号を使ってしまうと、移動中の敵が、突然別のところに出現した!ってことになっちゃうでしょ?あぁ、なるほどっ。いうことでさっそく、使われていない敵の番号を探す関数、FindEmptyEnemyを作りましょう。これですっ!といっても、やってることは前回作ったGetShotIDと同じだけどね。これを使って、見つけた番号に敵を作っていくわけですね!うん、その通り。いっても、やってることはCreateShotとほぼ同じだけどね。出現するX座標と弾を発射するまでの間隔は、乱数(でたらめな数)で決めてるよ。dxGetRand関数は、0から()の中までの乱数を返すものだってことは、前の講座で話したよね。dxGetRand(20)にも注目。このような書き方をすることで、例えばこの例だと40から60までの乱数を取り出すことができるよ。次は移動と表示の処理も作っていこうか。言っても、することは難しくないよ。For~Nextのループで敵の番号を回して、eFlagが1のものだけを移動、そして表示させてるだけ。移動の結果、敵が画面外に出たら、eFlagを0に戻してる、と。画像の読み込みからやっていこうか。サブプロシージャMaterialLoadに、次のコードを書いてね。↑追加後のMaterialLoadはこうなります。(赤枠で囲まれたのが追加したところ)続いて、敵の移動を処理するサブプロシージャMoveEnemyだよ。こちらが敵の描画を処理するサブプロシージャDrawEnemy。やっているのが移動か描画の違いだけで、ほとんど、MoveEnemyと同じだけどね。この二つのサブプロシージャを実行し、さらに敵の出現の制御を行う、いわば上記二つのサブプロシージャの親玉というべきサブプロシージャ、EnemyMainだよ。ここでは、MoveEnemyとDrawEnemyを呼び出す他にも、totalTimeをカウントアップして、30の倍数になるごとに、CreateEnemyを呼び出して敵を作ることもやっているよ。Mod演算子は、割った余りを計算する演算子なんだけど、このように使えば、一定の値ごとに処理を呼び出す処理を作ることができるんだ。GameMainの中に、次のコードを付け加えてね。↑付け加えた後のGameMain。(赤枠内が追加されたコード)できたら実行してみて。画面の上から敵キャラが下に移動していきますっ!では今回はここまで。次回は、弾を撃つ処理をやっていくよ。!==========※次の更新は、『師匠TのチャレンジARSゲーム!』の予定です。|この記事へのコメントコメントを書くコチラをクリックしてくださいSeesaaブログ。