このWikiは古くなりました:
新しいWikiへ移動
敵を出現させる
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
//@pnavi
[[←前>敵を動かす]] [[次→>自機を破壊する]] [[トップ>シュ...
**敵を出現させる [#f55a469f]
***UFOを作る [#r8f16cdd]
この敵はすぐ下に消えてしまうので、次々と新しいオブジェク...
ここでは、UFOを作り、UFOから敵があらわれるという設定にし...
[[オブジェクトを作る>オブジェクトを作る]]を参考にUFOのオ...
&ref(mkufo.png);
キャラクタパターンを設定します。
&ref(mkufop.png);
ダブルクリックして次のように動きを記述します。
//prog
extends SpriteChar;
while(1) {
while(x<$screenWidth) {
x=x+2;
update();
}
while(x>0) {
x=x-2;
update();
}
}
実行させると、UFOが画面を横方向に往復します。
***UFOから敵が出現する [#p101fb51]
さらに、このUFOから敵が出現するようにします。
//prog
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();
}
}
追加した部分について解説します。
//progfrac
if (rnd(100)==0) ..
[[rnd>Object.rnd]](100)は、0から99までの整数乱数を返しま...
//progfrac
.. appear(new Enemy(x,y,$pat_Sample+2));
これによって、敵クラス(Enemy)のオブジェクトが作成されます。
出現場所はUFOのいる場所、キャラクタパターンは $pat_Sample...
([[弾を撃つ>弾を撃つ]]参考)
上の処理では、左から右に移動しているときしか敵が出現しま...
右から左に移動中にもこの処理を挿入する必要があります。
//prog
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();
}
//追加終わり
}
***メソッドを定義する [#l7f727da]
このプログラムでは敵を出現させるために、全く同じ処理を2...
これでもプログラムは正しく動くのですが、いくつか不便な点...
例えば出現確率を変えたいとか、敵のキャラクタパターンを変...
そこで、この敵出現処理をまとめることを行います。
//prog
extends SpriteChar;
//追加
function appearEnemy() {
if (rnd(100)==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();
}
}
まず、一番上に書いた部分について解説します。
//progfrac
function appearEnemy() {
if (rnd(100)==0) appear(new Enemy(x,y,$pat_Sample+2));
}
これは[[メソッド>メソッドの定義]]と呼ばれ、ある処理に名前...
この部分は、最初にいきなり実行されるわけではなく、あとか...
その呼び出しを行うのが、下のほうに書いた
//progfrac
appearEnemy();
です。このように
//plainForm
書式:メソッドの呼び出し
メソッド名();
と書くことで、いつでもメソッドを呼ぶことができます。
試しに、敵の出現確率を1/50に変えてみましょう。それにはapp...
このようにメソッドを使って、よく使う処理をまとめておくと...
//prog
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();
}
}
//@pnavi
[[←前>敵を動かす]] [[次→>自機を破壊する]] [[トップ>シュ...
終了行:
//@pnavi
[[←前>敵を動かす]] [[次→>自機を破壊する]] [[トップ>シュ...
**敵を出現させる [#f55a469f]
***UFOを作る [#r8f16cdd]
この敵はすぐ下に消えてしまうので、次々と新しいオブジェク...
ここでは、UFOを作り、UFOから敵があらわれるという設定にし...
[[オブジェクトを作る>オブジェクトを作る]]を参考にUFOのオ...
&ref(mkufo.png);
キャラクタパターンを設定します。
&ref(mkufop.png);
ダブルクリックして次のように動きを記述します。
//prog
extends SpriteChar;
while(1) {
while(x<$screenWidth) {
x=x+2;
update();
}
while(x>0) {
x=x-2;
update();
}
}
実行させると、UFOが画面を横方向に往復します。
***UFOから敵が出現する [#p101fb51]
さらに、このUFOから敵が出現するようにします。
//prog
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();
}
}
追加した部分について解説します。
//progfrac
if (rnd(100)==0) ..
[[rnd>Object.rnd]](100)は、0から99までの整数乱数を返しま...
//progfrac
.. appear(new Enemy(x,y,$pat_Sample+2));
これによって、敵クラス(Enemy)のオブジェクトが作成されます。
出現場所はUFOのいる場所、キャラクタパターンは $pat_Sample...
([[弾を撃つ>弾を撃つ]]参考)
上の処理では、左から右に移動しているときしか敵が出現しま...
右から左に移動中にもこの処理を挿入する必要があります。
//prog
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();
}
//追加終わり
}
***メソッドを定義する [#l7f727da]
このプログラムでは敵を出現させるために、全く同じ処理を2...
これでもプログラムは正しく動くのですが、いくつか不便な点...
例えば出現確率を変えたいとか、敵のキャラクタパターンを変...
そこで、この敵出現処理をまとめることを行います。
//prog
extends SpriteChar;
//追加
function appearEnemy() {
if (rnd(100)==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();
}
}
まず、一番上に書いた部分について解説します。
//progfrac
function appearEnemy() {
if (rnd(100)==0) appear(new Enemy(x,y,$pat_Sample+2));
}
これは[[メソッド>メソッドの定義]]と呼ばれ、ある処理に名前...
この部分は、最初にいきなり実行されるわけではなく、あとか...
その呼び出しを行うのが、下のほうに書いた
//progfrac
appearEnemy();
です。このように
//plainForm
書式:メソッドの呼び出し
メソッド名();
と書くことで、いつでもメソッドを呼ぶことができます。
試しに、敵の出現確率を1/50に変えてみましょう。それにはapp...
このようにメソッドを使って、よく使う処理をまとめておくと...
//prog
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();
}
}
//@pnavi
[[←前>敵を動かす]] [[次→>自機を破壊する]] [[トップ>シュ...
ページ名: