ページ 11

ミシャクジ様を・・・。

Posted: 2009年11月17日(火) 00:49
by スタートメニュー
ミシャクジ様弾幕を(60章での中ボスの2段階目で)ボスに撃たせようとしてるのですが(中ボスの2段階目で)
いざ実行して二段階目に行くと
”Ensoukyou.exe の 0x00562a20 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xb8892af8 を読み込み中にアクセス違反が発生しました。”となります。
雑魚敵が撃つミシャクジ様コードをボス用にいじってみたのですが、
どうもわかりません。
以下コードです。ご意見お願いします。
void boss_shot_bulletH002(){
#define TM000 120
    int i,k,t=boss_shot.cnt%TM000,t2=boss_shot.cnt;
    double angle;
    if(t>=0 && t<1200 && t%1200==0){
        double angle=rang(PI);
        for(int j=0;j<2;j++){//途中から2分裂する分
            for(int i=0;i<80;i++){//一度に60個
                if((k=search_boss_shot())!=-1){
                    boss_shot.bullet[k].knd    =8;//8番の弾
                    boss_shot.bullet[k].angle  =angle+PI2/80*i;//円形60個
                    boss_shot.bullet[k].flag   =1;
                    boss_shot.bullet[k].x      =enemy[shot[k].num].x;
                    boss_shot.bullet[k].y      =enemy[shot[k].num].y;
                    boss_shot.bullet[k].col    =4;//4番の色
                    boss_shot.bullet[k].cnt    =0;
                    boss_shot.bullet[k].state  =j;//ステータス。0か1かで回転がかわる
                    boss_shot.bullet[k].spd    =2;
			        se_flag[0]=1;//発射音鳴らす
                }
            }
        }
    }
    for(int i=0;i<SHOT_BULLET_MAX;i++){//全弾分
        if(boss_shot.bullet.flag>0){//登録されている弾があれば
            int state=boss_shot.bullet.state;
            int cnt=boss_shot.bullet.cnt;
            if(30<cnt && cnt<120){//30~120カウントなら
                boss_shot.bullet.spd-=1.2/90.0;//90カウントかけて1.2減らす
                boss_shot.bullet.angle+=(PI/2)/90.0*(state?-1:1);//90カウントかけて90°傾ける
            }
        }
    }
}

Re:ミシャクジ様を・・・。

Posted: 2009年11月17日(火) 01:38
by pooka
ぱっと見ですが、ボスの弾幕のようなので
>boss_shot.bullet[k].x&#160;=&#160;enemy[shot[k].num].x;
>boss_shot.bullet[k].y&#160;=&#160;enemy[shot[k].num].y;
これは
boss_shot.bullet[k].x&#160;=&#160;boss.x;
boss_shot.bullet[k].y&#160;=&#160;boss.y;
では?

あと
>for(int&#160;i&#160;=&#160;0;&#160;i&#160;<&#160;SHOT_BULLET_MAX;&#160;i++){//全弾分
のSHOT_BULLET_MAXは
BOSS_BULLET_MAX
かと。

Re:ミシャクジ様を・・・。

Posted: 2009年11月17日(火) 07:46
by スタートメニュー
pookaさん
ご指摘ありがとうございました。
上記場所を直したところ、
”Run-Time Check Failure #3 - The variable 'j' is being used without being initialized.”
というのが出ました。
どうやら”for(int j=0;j<2;j++){//途中から2分裂する分”これが、
ひっかかっているみたいなのですが
どうしたらいいでしょうか。

ご意見よろしくお願いします。

Re:ミシャクジ様を・・・。

Posted: 2009年11月17日(火) 17:05
by スタートメニュー
色々調べたところ最初のintにjをいれ2分裂forのiをjにしたら出来ました。
pookaさんご意見ありがとうございました。