//------------------------------------------------------------------ //Enemy5の実行ファイルです。 //ボス // //------------------------------------------------------------------ #include "Enemy0.h" #define CX 0 #define CY 64 #define CXA 32 #define CYA 32 template <> void Enemy>::move() { old_x=x;old_y=y; if(t%3==0){ blue=255; green=255; } // //ドット絵表示用の処理 // if(xs>0.5){ cx=CX+CXA; } else if(xs<-0.5){ cx=CX+CXA*2; } else { cx=CX; } // //初期化処理 // if(t==10){ } if(t==100){ p_world->Make_Text>>(2); } //行動パターン設定部分 // //なお関数をほんらいとは別用途に使用しているため名前と機能が一致していない switch(mode) { case 0: guard(); if(memo_t>=120){ sound[9]=1; mode=1;goto init; } break; case 1: attack(); if(memo_t>=180){ sound[9]=1; mode=2;goto init; } break; case 2: sub_attack(); if(memo_t>=200){ sound[9]=1; mode=3;goto init; } break; case 3: special_attack(); if(memo_t>=120){ sound[9]=1; mode=0;goto init; } break; } // //共通処理部分 // memo_t++; // //禁じられた条件式使用部分w // goto defo; init: memo_t=0;xs=0;ys=0; defo: xs=xs+xas; ys=ys+yas; x=x+xs; y=y+ys; t++; // 画面外判定 move_rest(); return; } template <> void Enemy>::attack() { //バルカン砲 float aim_rad; aim_rad=aim(p_world->p_object[0]); if(memo_t%60>30 && memo_t<120){ if(t%6==0 && p_world->p_object[0]!=NULL) { cargo.insert(x,y,101,4,aim_rad+PI/16,id,1); p_world->Make> >(&cargo); cargo.insert(x,y,101,5,aim_rad,id,1); p_world->Make> >(&cargo); cargo.insert(x,y,101,4,aim_rad-PI/16,id,1); p_world->Make> >(&cargo); } } return; } template <> void Enemy>::sub_attack() { float aim_rad; aim_rad=aim(p_world->p_object[0]); if(t%6==0 && memo_t>70 && memo_t<120){ cargo.insert(x+24,y,101,6,PI/2-PI/16,id,0);p_world->Make> >(&cargo); cargo.insert(x+16,y,101,5,PI/2,id,0);p_world->Make> >(&cargo); cargo.insert(x,y,101,5,PI/2,id,0);p_world->Make> >(&cargo); cargo.insert(x-16,y,101,5,PI/2,id,0);p_world->Make> >(&cargo); cargo.insert(x-24,y,101,6,PI/2+PI/16,id,0);p_world->Make> >(&cargo); } return; } template <> void Enemy>::special_attack() { if(t%4==0) { cargo.insert(x,y,101,4,PI/2+t/20.0,id,0); p_world->Make> >(&cargo); cargo.insert(x,y,101,4,PI/2-t/20.0,id,0); p_world->Make> >(&cargo); } return; } template <> void Enemy>::guard() { float target_x=320,target_y=120; target_aim(320,120,2,2); return; } template <> void Enemy>::damage(Object *p_obj) { sound[2]=1; blue=125; green=125; hp-=p_obj->ap; if(hp<0){ p_world->sca+=sca; cargo.insert(x,y,401,0,0,id,0);p_world->Make>>(&cargo); cargo.insert(240,380,401,0,-PI/2,id,0);p_world->Make>>(&cargo); cargo.insert(380,240,401,0,-PI/2,id,0);p_world->Make>>(&cargo); cargo.insert(x,y,401,0,0,id,0);p_world->effect_p1(&cargo); cargo.insert(x,y,108,0,-PI/2,id,0);p_world->Make> >(&cargo); del(); sound[10]=1; } return; } template <> void Enemy>::del() { p_world->p_object[id]=NULL; delete(this); return; } template <> void Enemy>::move_rest() { if( x<=-100 || x>=900 || y<=-100 || y>=700 ){ del(); } return; } template <> Enemy>::Enemy(Cargo *p_cargo) { //tof=true; mode=0; v=1; t=0; mirror=p_cargo->mirror; hp=600; ap=0; sca=60; id=p_cargo->ID; parent_id=p_cargo->parent_ID; //child_id=0; order=1; m_hit=1; e_hit=0; eb_hit=0; pb_hit=1; x=p_cargo->x;//座標 y=p_cargo->y; xs=0;//速度 ys=0; xas=0;//加速度 yas=0; xha=32;//当たり判定 yha=32; xa=CXA;//表示範囲 ya=CYA; cx=CX;//コピー座標 cy=CY; cxa=CXA;//コピー範囲 cya=CYA; alpha=255;//透明度 rad=p_cargo->rad;//角度 red=255; blue=255; green=255; //謎なバグ防止用 cargo.insert(0,0,1,8,-PI/2,0,0);p_world->Make> >(&cargo); //アーマー生成 cargo.insert(x,y,411,0,-PI/2,id,0);p_world->Make>>(&cargo); cargo.insert(x,y,7,0,-PI/2,id,1);p_world->Make>>(&cargo); cargo.insert(x,y,7,0,-PI/2,id,-1);p_world->Make>>(&cargo); cargo.insert(x,y,7,0,-PI/2,id,1);p_world->Make>>(&cargo); cargo.insert(x,y,7,0,-PI/2,id,-1);p_world->Make>>(&cargo); cargo.insert(x,y,7,0,-PI/2,id,0);p_world->Make>>(&cargo); cargo.insert(x,y,7,0,-PI/2,id,0);p_world->Make>>(&cargo); //ファンネル cargo.insert(x,y,7,0,-PI/2,id,1);p_world->Make> >(&cargo); cargo.insert(x,y,7,0,-PI/2,id,2);p_world->Make> >(&cargo); memo_t=0; return; } template <> Enemy>::Enemy() { return; } template <> Enemy>::~Enemy() { return; }