←前 次→ トップ |
敵を出現させる
 UFOを作る
 UFOから敵が出現する
 メソッドを定義する
敵を出現させる
この敵はすぐ下に消えてしまうので、次々と新しいオブジェクトを出現させる仕組みを作ります。
ここでは、UFOを作り、UFOから敵があらわれるという設定にします。
オブジェクトを作るを参考にUFOのオブジェクトを作成します
キャラクタパターンを設定します。
ダブルクリックして次のように動きを記述します。
UFOを作る
extends SpriteChar; while(1) { while(x<$screenWidth) { x=x+2; update(); } while(x>0) { x=x-2; update(); } } |
実行させると、UFOが画面を横方向に往復します。
UFOから敵が出現する
さらに、このUFOから敵が出現するようにします。
extends SpriteChar; while(1) { while(x<$screenWidth) { x=x+2; if (rnd(100)==0) appear(new Enemy(x,y,$pat_Sample+2)); update(); } while(x>0) { x=x-2; update(); } } |
追加した部分について解説します。
|
rnd(100)は、0から99までの整数乱数を返します。その値が0のとき、つまり100分の1の確率でifの後ろが実行されます。
|
これによって、敵クラス(Enemy)のオブジェクトが作成されます。 出現場所はUFOのいる場所、キャラクタパターンは $pat_Sample+2 ()です (弾を撃つ参考)
上の処理では、左から右に移動しているときしか敵が出現しません。 右から左に移動中にもこの処理を挿入する必要があります。
extends SpriteChar; while(1) { while(x<$screenWidth) { x=x+2; if (rnd(100)==0) appear(new Enemy(x,y,$pat_Sample+2)); update(); } while(x>0) { x=x-2; if (rnd(100)==0) appear(new Enemy(x,y,$pat_Sample+2)); update(); } } |
extends SpriteChar; function appearEnemy() { if (rnd(100)==0) appear(new Enemy(x,y,$pat_Sample+2)); } |
まず、一番上に書いた部分について解説します。
|
これはメソッドと呼ばれ、ある処理に名前をつけて何度も使えるようにしたものです。ここでは、1/100の確率で敵を出現させる処理に appearEnemyという名前(メソッド名)をつけています。 この部分は、最初にいきなり実行されるわけではなく、あとからこのメソッドを呼び出すことによって実行されます。
その呼び出しを行うのが、下のほうに書いた
|
です。このように
書式:メソッドの呼び出し |
メソッド名(); |
と書くことで、いつでもメソッドを呼ぶことができます。
試しに、敵の出現確率を1/50に変えてみましょう。それにはappearEnemyの一箇所を書き換えればよいのです。 このようにメソッドを使って、よく使う処理をまとめておくと、後で修正が楽になります。
extends SpriteChar; function appearEnemy() { if (rnd( 50 )==0) appear(new Enemy(x,y,$pat_Sample+2)); } while(1) { while(x<$screenWidth) { x=x+2; appearEnemy(); update(); } while(x>0) { x=x-2; appearEnemy(); update(); } } |
←前 次→ トップ |