



![]()
弾幕名:なし (「そして誰もいなくなるか?」のサンプル)
作製難易度:★★★★ (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 -