初心者のためのゲームプログラミング入門

プログラミングとゲームの杜

初心者のためのプログラミング入門 & ゲームプログラムの作り方入門

Processing 入門

22.潜水艦3 敵の表示と移動

 

今回は「潜水艦2 画像の表示と入力操作」の続きです。

初めてプログラミングを覚えようとしたとき、それなりに理解できるのですが
なにもせずに何日か過ぎてプログラミングしようとすると
かなり忘れているんですよね。
初めのころは毎日のように続けないとダメなんだな、と思いました。

 

 

敵を表示しよう

敵である潜水艦を表示します。
背景やプレイヤーと同じ手順で画像を読み込みます。
ただ、左向きと右向き、2枚の絵を読み込みたいので配列タイプで宣言します。

 

敵の潜水艦を表示する

 

 

実行してみましょう。
画面中央に、左向きと右向きの潜水艦が表示されるか確認しましょう。

 

潜水艦を表示する

 

ゲームの制作によく使われるプログラミング言語では、絵を反転する機能があるので
右向きか左向き、どちらかの絵があればいい場合が多いです。
Processing でも絵を反転できますが、その手順が複雑なので
絵を2枚用意して使うことにしました。

 

 

複数の敵を表示する仕組みを作ろう

複数の敵を表示するようにしましょう。
最大で 12 個表示できるようにします。
制限なく表示するプログラムもできますが、少し複雑になります。
今回はシンプルにいきましょう。

 

複数の敵を表示する

 

手順はいつも通り、宣言・初期化・表示の処理をしています。
6 行目、敵x座標は float を使います。
これは敵をゆっくり移動させるためです。
変数 ed はフラグとして使います。
0 なら左向き、1 なら右向き、2 なら未使用を示します。

70 行目、配列のカッコ [ ] の中には別の変数をいれることもできます。
enemy [ ed [i] ]
はじめは驚くかもしれませんが今後も使うことになります。

 

なお 32 から 34行目は、テストするために追加したものです。
(本当は 31 行目のみ使いますが、今はコメントにしておきます)
それでは実行してみましょう。
次のように表示されたらOKです。

 

複数の敵を表示する仕組み

 

 

32 行目のフラグを変更してテストをしましょう。
0 のとき敵が左向きになるか、2 のとき敵が表示されないか確認します。
テストが終わったら 1 に戻しておいてください。

 

0や2に変更してテスト

 

 

敵を移動させよう

敵を移動させましょう。
変数 espeed を作って、それぞれ別の速度で移動するようにします。

 

敵の移動をプログラミング

 

36 行目、速度を乱数で決めます。これもテストのときだけ使います。
移動の計算は 69 行目です。
70 行目と 73 行目は、画面外へ出たか判断をしています。
x座標を -80 で判断しているのは、潜水艦の幅を考慮しているからです。

 

 

それでは実行して潜水艦がそれぞれ違う速度で移動することを確認しましょう。

 

敵はそれぞれの速度で移動する

 

 

敵を出現させよう

次は敵の出現です。
関数 enemyAdd を作ります。
初期化のところでテストに使っていた行はすべて削除します。

 

敵を出現するプログラム

 

73 行目で敵の発生率を調整します。
87 行目、変数 ed == 2 つまり未使用のところを探します。
見つかれば、速度、向き、x座標、y座標を設定します。
89 行目、左右どちら向きで出現させるかランダムで決めています。
98 行目の break は忘れないようにしましょう。
これがないと未使用のところ全て使って敵が発生します。

 

 

実行してみましょう。
画面の左右から敵が出現すれば成功です。

 

画面の左右から敵が出現する