思いつきで出来た弾幕

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

思いつきで出来た弾幕

#1

投稿記事 by ディア » 16年前

void boss_shot_bulletH002(){
#define TM002 650
    int i,k,t=boss_shot.cnt%TM002;
    double angle;
    if(t==0 || t==210){
        //40<x<FMX-40  50<y<150 の範囲で100離れた位置に80カウントで移動する
        move_boss_pos(40,50,FMX-40,150,100, 80);
    }
    //最初のランダム発射
    if(t<180){
        for(i=0;i<2;i++){//1カウントに2回発射
            if((k=search_boss_shot())!=-1){
                boss_shot.bullet[k].col   = GetRand(6);//7種類の色をランダムに
                boss_shot.bullet[k].x     = boss.x;//発射初期座標はボスの位置
                boss_shot.bullet[k].y     = boss.y;
                boss_shot.bullet[k].knd   = 7;//弾の種類
                boss_shot.bullet[k].angle = rang(PI2/20)+PI2/10*t;
                boss_shot.bullet[k].flag  = 1;
                boss_shot.bullet[k].cnt   = 0;
                boss_shot.bullet[k].spd   = 3.2+rang(2.1);
                boss_shot.bullet[k].state = 0;//弾のステータス
                boss_shot.bullet[k].kaiten= 1;//弾を回転するかどうかのフラグ
            }
        }
        if(t%10==0)
            se_flag[0]=1;
    }
    //次のランダム発射
    if(t<400){
        for(i=0;i<2;i++){//1カウントに2回発射
            if((k=search_boss_shot())!=-1){
                boss_shot.bullet[k].col   = GetRand(6);//7種類の色をランダムに
                boss_shot.bullet[k].x     = boss.x;//発射初期座標はボスの位置
                boss_shot.bullet[k].y     = boss.y;
                boss_shot.bullet[k].knd   = 7;//弾の種類
                boss_shot.bullet[k].angle = rang(PI2/20)+PI2/10*t;
                boss_shot.bullet[k].flag  = 1;
                boss_shot.bullet[k].cnt   = 0;
                boss_shot.bullet[k].spd   = 3.2+rang(2.1);
                boss_shot.bullet[k].state = 3;//弾のステータス
                boss_shot.bullet[k].kaiten= 1;//弾を回転するかどうかのフラグ
            }
        }
        if(t%10==0)
            se_flag[0]=1;
    }
    for(i=0;i<BOSS_BULLET_MAX;i++){
        if(boss_shot.bullet.flag>0){
            //tが190の時に全てストップさせ、白くし、カウントリセット
            if(boss_shot.bullet.state==0){
                if(t==190){
                    boss_shot.bullet.kaiten=0;//弾の回転を止める
                    boss_shot.bullet.spd   =0;
                    boss_shot.bullet.col   =9;
                    boss_shot.bullet.cnt   =0;
                    boss_shot.bullet.state =1;//ステータスを1に
                }
            }
            //ランダムな方向に移動し始める
            if(boss_shot.bullet.state==1){
                if(boss_shot.bullet.cnt==200){
                    boss_shot.bullet.angle=rang(PI);//全方向ランダム
                    boss_shot.bullet[i].kaiten=1;//回転するフラグを立てる
		    boss_shot.bullet[i].col   =0;
		    
                }
                if(boss_shot.bullet[i].cnt>200)
                    boss_shot.bullet[i].spd+=0.01;//段々加速
            }
        }
    }
        for(i=0;i<BOSS_BULLET_MAX;i++){
        if(boss_shot.bullet[i].flag>0){
            //tが220の時に全てストップさせ、白くし、カウントリセット
            if(boss_shot.bullet[i].state==3){
                if(t==410){
                    boss_shot.bullet[i].kaiten=0;//弾の回転を止める
                    boss_shot.bullet[i].spd   =0;
                    boss_shot.bullet[i].col   =9;
                    boss_shot.bullet[i].cnt   =0;
                    boss_shot.bullet[i].state =4;//ステータスを4に
                }
            }
            //ランダムな方向に移動し始める
            if(boss_shot.bullet[i].state==4){
                if(boss_shot.bullet[i].cnt==200){
                    boss_shot.bullet[i].angle=rang(PI);//全方向ランダム
                    boss_shot.bullet[i].kaiten=1;//回転するフラグを立てる
		    boss_shot.bullet[i].col   =1;
                }
                if(boss_shot.bullet[i].cnt>200)
                    boss_shot.bullet[i].spd+=0.01;//段々加速
            }
        }
    }
}


思いつきでつくりました。
パーフェクトフリーズの上からパーフェクトフリーズを
重ねるっていう、実装難易度は低くても
攻略難易度は高めのものです。

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