重すぎる
投稿者 : バリュー(YahooBB220021023035.bbtec.net)
- 2004/04/04(Sun) 21:44
No.5889
|
|
|
|
|
ロック●ン風アクション作成中なのですが、 ボス製作中、途中まで正常に動作していたものが突然「Mapの処理が重すぎる」と表示されて動作が止まってしまいました。 update();を忘れている、とも表示されましたがただ闇雲に入れても直りません。 下記にボスのプログラムを載せて置くので、ここが重いのではないか、ここに入れるとよいのではないかという指摘がありましたら、是非教えてください。
life=28;//敵ライフ設定 f=0; while(1){ p=$pat_enemy00+6; //ダメージ・無敵処理 for (t in $chars ) { if ( t is bullet && crashTo(t) ) { if (isInvisible==0) { life=life-1; t.die(); if (life<1) die(); isInvisible=50; } } } //ダメージ・無敵処理2 for (t in $chars ) { if ( t is bullet2 && crashTo(t) ) { if (isInvisible==0) { life=life-1; t.die(); if (life<1) die(); isInvisible=50; } } } //自機との衝突処理 if (crashTo($mainchara)) { $mainchara.damage5(); } //左向き時の敵攻撃処理 if (f==0){ //通常弾 if (rnd(90)==0){ appear(new enemybullet(x,y,$pat_baster02+0)); p=$pat_enemy00+5; wait(10); } //ジャンプ・ジャンプ中弾 if (y>=288){ if (rnd(60)==0){ for (i=0 ; i<60 ; i++) { y-=4; x-=8; f=1; if (rnd(40)==0){ appear(new enemybullet4(x,y,$pat_baster02+1)); p=$pat_enemy00+5; wait(10); } if(life==0)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+29,0,28); if(life>0)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+27,0,27); if(life>1)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+23,0,26); if(life>2)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+24,0,25); if(life>3)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+25,0,24); if(life>4)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+26,0,23); if(life>5)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+20,0,22); if(life>6)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+21,0,21); if(life>7)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+22,0,20); if(life>8)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+18,0,19); if(life>9)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+19,0,18); if(life>10)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+17,0,17); if(life>11)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+11,0,16); if(life>12)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+12,0,15); if(life>13)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+13,0,14); if(life>14)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+14,0,13); if(life>15)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+15,0,12); if(life>16)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+16,0,11); if(life>17)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+10,0,10); if(life>18)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+9,0,9); if(life>19)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+0,0,8); if(life>20)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+1,0,7); if(life>21)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+2,0,6); if(life>22)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+3,0,5); if(life>23)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+4,0,4); if(life>24)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+5,0,3); if(life>25)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+6,0,2); if(life>26)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+7,0,1); if(life==28)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+8,0,0); update(); } } } //ライフ半分特殊攻撃 if(life<=14){ if (rnd(90)==0){ p=$pat_enemy00+4; update(); wait(90); appear(new cielbullet5(x+500,16,$pat_baster02+2)); appear(new cielbullet5(x+420,16,$pat_baster02+2)); appear(new cielbullet5(x+360,16,$pat_baster02+2)); appear(new cielbullet5(x+280,16,$pat_baster02+2)); appear(new cielbullet5(x+140,16,$pat_baster02+2)); } } //右向き時の敵攻撃処理 if (f==1){ if (rnd(90)==0){ appear(new enemybullet2(x,y,$pat_baster02+0)); p=$pat_enemy00+5; wait(10); } //ジャンプ・ジャンプ中弾 if (y>=288){ if (rnd(60)==0){ for (i=0 ; i<60 ; i++) { y-=4; x+=8; f=0; if (rnd(40)==0){ appear(new enemybullet3(x,y,$pat_baster02+1)); p=$pat_ciel00+5; wait(10); } if(life==0)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+29,0,28); if(life>0)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+27,0,27); if(life>1)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+23,0,26); if(life>2)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+24,0,25); if(life>3)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+25,0,24); if(life>4)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+26,0,23); if(life>5)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+20,0,22); if(life>6)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+21,0,21); if(life>7)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+22,0,20); if(life>8)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+18,0,19); if(life>9)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+19,0,18); if(life>10)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+17,0,17); if(life>11)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+11,0,16); if(life>12)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+12,0,15); if(life>13)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+13,0,14); if(life>14)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+14,0,13); if(life>15)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+15,0,12); if(life>16)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+16,0,11); if(life>17)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+10,0,10); if(life>18)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+9,0,9); if(life>19)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+0,0,8); if(life>20)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+1,0,7); if(life>21)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+2,0,6); if(life>22)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+3,0,5); if(life>23)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+4,0,4); if(life>24)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+5,0,3); if(life>25)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+6,0,2); if(life>26)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+7,0,1); if(life==28)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+8,0,0); update(); } } } //ライフ半分特殊攻撃 if(life<=14){ if (rnd(90)==0){ p=$pat_enemy00+4; update(); wait(90); appear(new enemybullet5(x+500,16,$pat_baster02+2)); appear(new enemybullet5(x+420,16,$pat_baster02+2)); appear(new enemybullet5(x+360,16,$pat_baster02+2)); appear(new enemybullet5(x+280,16,$pat_baster02+2)); appear(new enemybullet5(x+140,16,$pat_baster02+2)); } } //敵落下処理 y+=vy; if($map.getAt(x,y+33)==$pat_block01+0 ) { vy=0; } else { vy+=0.5; } //敵ライフ表示 if(life==0)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+29,0,28); if(life>0)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+27,0,27); if(life>1)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+23,0,26); if(life>2)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+24,0,25); if(life>3)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+25,0,24); if(life>4)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+26,0,23); if(life>5)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+20,0,22); if(life>6)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+21,0,21); if(life>7)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+22,0,20); if(life>8)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+18,0,19); if(life>9)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+19,0,18); if(life>10)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+17,0,17); if(life>11)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+11,0,16); if(life>12)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+12,0,15); if(life>13)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+13,0,14); if(life>14)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+14,0,13); if(life>15)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+15,0,12); if(life>16)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+16,0,11); if(life>17)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+10,0,10); if(life>18)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+9,0,9); if(life>19)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+0,0,8); if(life>20)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+1,0,7); if(life>21)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+2,0,6); if(life>22)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+3,0,5); if(life>23)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+4,0,4); if(life>24)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+5,0,3); if(life>25)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+6,0,2); if(life>26)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+7,0,1); if(life==28)drawSprite($mainchara.x+280, $mainchara.y-200,$pat_meter02+8,0,0); if ($map.getAt(x,y-24)==$pat_block01+0 ) { if (vy<0.1) vy=0.1; } update(); if (isInvisible>0) { isInvisible-=1; } }
}
}
自機は動かしていません。 ボスがジャンプをして、ジャンプの頂点に達した時に止まってしまいます。 よろしくお願いします(汗)
|
Fileの添付
投稿者 : nuntora(144.138.223.20)
- 2004/04/05(Mon) 21:15
No.5900
|
|
|
|
どれが原因でそのようなエラーが起るのかは、これだけ見ただけではなんとも判断しかねます。 もし宜しければ、Fileを添付していただきたいと思います。より的確なアドバイスができると思います。
|
|