敵の出現
投稿者 : Fauby(i60-41-30-26.s04.a013.ap.plala.or.jp)
- 2006/08/03(Thu) 19:13
No.10175
|
|
|
|
|
敵の出現についてですが、
//--HensuShoki.tonyu-- extends SecretChar; randomize(); $Tekisu=0; $Tims=0; $How=rnd(4); $Gekihasu=0; $Kakutokusu=0; $Bakustok=0; $Life=500; $Soubakudansu=0; $Clicksu=0; while(1) { print("$tekisu="+$Tekisu); wait(20); print("$tims="+$Tims); wait(20); print("$how="+$How); wait(20); update(); }
//--Tobira1.tonyu-- extends DxChar; zOrder=9; wait(20); while(1) { for (t in $chars) { if (t is Teki1 && crashTo(t)) { $How=1; }else{ if ($How==0 && $Tims==0) { $Tims=1; wait(50); appear(new Teki1(x-75,y,$pat_Teki+0)); $mplayer.play($se_apper); wait(10); appear(new Teki1(x-25,y,$pat_Teki+0)); $mplayer.play($se_apper); wait(10); appear(new Teki1(x+25,y,$pat_Teki+0)); $mplayer.play($se_apper); wait(10); appear(new Teki1(x+75,y,$pat_Teki+0)); $mplayer.play($se_apper); $How=rnd(4); wait(350); $Tims=0; } } } update(); }
//--Tobira2.tonyu-- extends DxChar; zOrder=9; wait(20); while(1) { for (t in $chars) { if (t is Teki1 && crashTo(t)) { $How=2; }else{ if ($How==1 && $Tims==0) { $Tims=1; wait(50); appear(new Teki1(x-80,y,$pat_Teki+0)); $mplayer.play($se_apper); wait(10); appear(new Teki1(x-40,y,$pat_Teki+0)); $mplayer.play($se_apper); wait(10); appear(new Teki1(x-0,y,$pat_Teki+0)); $mplayer.play($se_apper); wait(10); appear(new Teki1(x+40,y,$pat_Teki+0)); $mplayer.play($se_apper); wait(10); appear(new Teki1(x+80,y,$pat_Teki+0)); $mplayer.play($se_apper); wait(10); appear(new Teki1(x+120,y,$pat_Teki+0)); $mplayer.play($se_apper); $How=rnd(4); wait(350); $Tims=0; } } } update(); }
//--Tobira3.tonyu-- extends DxChar; zOrder=12; wait(20); while(1) { for (t in $chars) { if (t is Teki2 && crashTo(t)) { $How=3; }else{ if ($How==2 && $Tims==0) { $Tims=1; wait(50); appear(new Teki2(x-37.5,y,$pat_Teki+0)); $mplayer.play($se_apper); wait(10); appear(new Teki2(x-12.5,y,$pat_Teki+0)); $mplayer.play($se_apper); wait(10); appear(new Teki2(x+12.5,y,$pat_Teki+0)); $mplayer.play($se_apper); wait(10); appear(new Teki2(x+37.5,y,$pat_Teki+0)); $mplayer.play($se_apper); $How=rnd(4); wait(350); $Tims=0; } } } update(); }
//--Tobira4.tonyu-- extends DxChar; zOrder=12; wait(20); while(1) { for (t in $chars) { if (t is Teki2 && crashTo(t)) { $How=0; }else{ if ($How==3 && $Tims==0) { $Tims=1; wait(50); appear(new Teki2(x-40,y,$pat_Teki+0)); $mplayer.play($se_apper); wait(10); appear(new Teki2(x-20,y,$pat_Teki+0)); $mplayer.play($se_apper); wait(10); appear(new Teki2(x-0,y,$pat_Teki+0)); $mplayer.play($se_apper); wait(10); appear(new Teki2(x+20,y,$pat_Teki+0)); $mplayer.play($se_apper); wait(10); appear(new Teki2(x+40,y,$pat_Teki+0)); $mplayer.play($se_apper); wait(10); appear(new Teki2(x+60,y,$pat_Teki+0)); $mplayer.play($se_apper); $How=rnd(4); wait(350); $Tims=0; } } } update(); }
この構文は、扉の上に敵を出現させ、扉の上にすでに敵が存在したら、ほかの扉で敵を出現させ、全ての扉の上に敵が存在したら、それ以上は敵は出現しないという構文なのですが、すでに扉の上に敵が存在しても、同じ扉にまた敵が出現してしまう場合があります。また、全ての扉に敵が存在しても、お構いなしに敵が出現します。誰かアドバイスをお願いします。
|
長い・・・
投稿者 : 迦葉(ZS207032.ppp.dion.ne.jp)
- 2006/08/03(Thu) 23:36
No.10178
|
|
|
|
クラスは二つで事足りますよー。一つでも出来ますが。 敵は扉の上から動かないのでしょうか。
とり合えず扉は敵の判定で
extends DxChar; exist=0; while(1){ //敵に接触してたらexistが1 for(t in $chars){if(t is teki2 && crashTo(t)){ exist=1;}else{exist=0;}}
update();}
で、敵を出現させる奴が
extends SpriteChar; s=0; while(1){ tekisu=0; //waitの代わりにsを使う。あまり意味はないです。 s++; //敵の数を数えてみる for(t in $chars){if(t is teki2){tekisu++;}}
//10フレームごとに、敵の数を見て、敵の数が4匹以内なら敵を出現させる。とりあえずひとつの扉につき一匹だけ敵がいるとします。 扉の数が4個なので4匹。 if(tekisu<4 && s>10){ //扉に敵がいなければ、一匹敵を出現させる。 for(t in $chars){if(t is tobira && t.exist==0){ appear(new Teki2(t.x,t.y,$pat_Teki+0,0));}} s=0; } update();}
だいぶ雑ですし動くのかどうかはっきりしませんがこんな感じ・・。
要するに扉は置いてあるだけにして、マスター的なキャラに、敵の出現を統括させれば宜しいのではないでしょうかと。いっぱいクラス作らなくても良いですし。
|
Re: 敵の出現
投稿者 : Fauby(i60-41-30-26.s04.a013.ap.plala.or.jp)
- 2006/08/04(Fri) 15:21
No.10183
|
|
|
|
|