弾幕名:なし (「そして誰もいなくなるか?」のサンプル)
作製難易度:★★★★ (4/10)
実行結果
---- boss_shotH.cpp に以下を追加 ---- //周りから中央への発射 void boss_shot_bulletH006(){ #define TM006 300 //横一列に置く弾の数 #define DNUMX 15 int i,j,k,t=boss_shot.cnt%TM006,t2=boss_shot.cnt; double xlen=FMX/DNUMX;//画面にDNUM個並べるにはxlen間隔で並べればいい int dnumy=FMY/xlen;//xlenずつならべると鉛直方向にいくつはいるか int cnum; if(dnumy==0){printfDx("boss_shot_bulletH006で0割り\n"); return ;} double ylen=FMY/dnumy;//ylenずつおけばいい double x,y,angle; static int num; if(t2==0)num=0; if(t==0){ x=0,y=0,angle=0,cnum=0; //画面左上端から 右→下→左→上 の4方向移動させる for(j=0;j<4;j++){ //水平方向ならDNUMX、鉛直方向ならdnumy int to = j%2 ? dnumy: DNUMX ; //水平方向、鉛直方向では置く個数が違うので、to回置く for(i=0;i<=to;i++){ if((k=search_boss_shot())!=-1){ boss_shot.bullet[k].x = x;//座標 boss_shot.bullet[k].y = y; boss_shot.bullet[k].knd = 4;//弾の種類 boss_shot.bullet[k].flag = 1; boss_shot.bullet[k].cnt = 0; switch(num){ case 0://発射種類1 boss_shot.bullet[k].col = 0;//弾の色 boss_shot.bullet[k].angle = bossatan3(k,FMX/2,FMY/2);//角度 boss_shot.bullet[k].spd = 1.3;//スピード boss_shot.bullet[k].state = 0;//ステータス break; case 1://発射種類2 boss_shot.bullet[k].col = 3;//弾の色 boss_shot.bullet[k].angle = bossatan3(k,FMX/2,FMY/2);//角度 boss_shot.bullet[k].spd = 1.4+ ((j%2 ? -1 : 1) * ((cos(PI2/to*i-PI)+1)/2))*0.4;//スピード boss_shot.bullet[k].state = 1;//ステータス break; case 2://発射種類3 boss_shot.bullet[k].col = 6;//弾の色 boss_shot.bullet[k].angle = bossatan3(k,FMX/2,FMY/2);//角度 boss_shot.bullet[k].spd = 1.3;//スピード boss_shot.bullet[k].state = 2;//ステータス boss_shot.bullet[k].base_angle[0] = PI/1000 * (j%2 ? -1 : 1) * ((cos(PI2/to*i-PI)+1)/2);//加算する角度 break; } se_flag[0]=1; cnum++; } x+=cos(angle)*xlen; y+=sin(angle)*ylen; } angle+=PI/2; } } for(i=0;i<BOSS_BULLET_MAX;i++){ if(boss_shot.bullet[i].flag>0){ int cnt=boss_shot.bullet[i].cnt; switch(boss_shot.bullet[i].state){ case 2://発射種類3なら //角度を加算 boss_shot.bullet[i].angle+=boss_shot.bullet[i].base_angle[0]; break; default: break; } } } if(t==TM006-1) num=(++num)%3; }
変更されているfunc.hも確認しておいて下さい。
またまた安置があるので調整は必要です。
- Remical Soft -