ミシャグジさま弾幕をボスも使えるようにしたい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
化猫

ミシャグジさま弾幕をボスも使えるようにしたい

#1

投稿記事 by 化猫 » 15年前

初めまして

龍神録プログラミングの館の16章「ミシャグジさま弾幕を作ってみよう」で作った弾幕を
ボスも扱えるようにしようと、boss_shotH.cppに同じ内容を書き、そこから変数(?)などを書き換えて、
void boss_shot_bulletH039()
{
    int t=boss_shot.cnt;
    int k=1;
    if(t<1000 && t%200==0){
        double angle=rang(PI);
        for(int j=0;j<2;j++){//途中から2分裂する分
            for(int i=0;i<60;i++){//一度に60個
                if(boss_shot.bullet[k].flag!=2 && (k=search_boss_shot())!=-1){
                    boss_shot.bullet[k].knd    =8;//8番の弾
                    boss_shot.bullet[k].angle  =angle+PI2/60*i;//円形60個
                    boss_shot.bullet[k].flag   =1;
                    boss_shot.bullet[k].x      =boss.x;
                    boss_shot.bullet[k].y      =boss.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;
                    if(j==1){
                        boss_shot.bullet[k].col    =0;//見やすくするため
                    }
                }
            }
        }
        se_flag[0]=1;//発射音鳴らす
    }
    for(int i=0;i<SHOT_BULLET_MAX;i++){//全弾分
        if(boss_shot.bullet[k].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°傾ける
            }
        }
    }
}

見やすくするために色を変えていたり、多少違います

これで実行してみると、後から発射された弾が、先に発射された弾を追い越してしまいます。
その弾は
・角度が変わるまで時間が掛かる。(追い越した後に角度が変わりだす)
・スピードが速い(追い越した後、角度が変わると共にスピードが落ちだす)
・このように動きが違う弾はランダムに飛んでくる。(10回中2回の時もあれば、1回の時もありました)

ここから考えて、恐らく

if(30<cnt && cnt<120){

ここに当てはまらないため、しばらくの間、スピードも落ちなければ、角度も変わらないのだと思いました。

今したいことは、追い越すような事をなくしたいということです。
どのように書き換えればいいのでしょうか?

分かりにくい場所がありましたら、指摘お願いします。

Cの知識は、初心者レベルです。
ご教授宜しくお願いします。 画像

Tatu

Re:ミシャグジさま弾幕をボスも使えるようにしたい

#2

投稿記事 by Tatu » 15年前

if(boss_shot.bullet[k].flag>0){//登録されている弾があれば
で添え字がiではなく、kとなっているのが原因だと思います。

化猫

Re:ミシャグジさま弾幕をボスも使えるようにしたい

#3

投稿記事 by 化猫 » 15年前

直したところ、無事思ったように動作しました。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る