enemy.cpp
#include "../include/GV.h"
//敵の移動パターン0での移動制御
void enemy_pattern0(int i){
int t=enemy[i].cnt;
if(t==0)
enemy[i].vy=2;//下がってくる
if(t==60)
enemy[i].vy=0;//止まる
if(t==60+enemy[i].wait)//登録された時間だけ停滞して
enemy[i].vy=-2;//上がっていく
}
//空いている敵番号を検索
int enemy_num_search(){
for(int i=0;i<ENEMY_MAX;i++){//フラグのたって無いenemyを探す
if(enemy[i].flag==0){
return i;//使用可能番号を返す
}
}
return -1;//全部埋まっていたらエラーを返す
}
//敵情報を登録
void enemy_enter(){//敵の行動を登録・制御する関数
int i,j,t;
for(t=0;t<ENEMY_ORDER_MAX;t++){
if(enemy_order[t].cnt==stage_count){//現在の瞬間がオーダーの瞬間なら
if((i=enemy_num_search())!=-1){
enemy[i].flag =1;//フラグ
enemy[i].cnt =0;//カウンタ
enemy[i].pattern=enemy_order[t].pattern;//移動パターン
enemy[i].muki =1;//向き
enemy[i].knd =enemy_order[t].knd;//敵の種類
enemy[i].x =enemy_order[t].x;//座標
enemy[i].y =enemy_order[t].y;
enemy[i].sp =enemy_order[t].sp;//スピード
enemy[i].bltime =enemy_order[t].bltime;//弾の発射時間
enemy[i].blknd =enemy_order[t].blknd;//弾幕の種類
enemy[i].blknd2 =enemy_order[t].blknd2;//弾の種類
enemy[i].col =enemy_order[t].col;//色
enemy[i].wait =enemy_order[t].wait;//停滞時間
enemy[i].hp =enemy_order[t].hp;//体力
enemy[i].hp_max =enemy[i].hp;//体力最大値
enemy[i].vx =0;//水平成分の速度
enemy[i].vy =0;//鉛直成分の速度
enemy[i].ang =0;//角度
for(j=0;j<6;j++)
enemy[i].item_n[j]=enemy_order[t].item_n[j];//落とすアイテム
}
}
}
}
//敵の行動制御
void enemy_act(){
int i;
for(i=0;i<ENEMY_MAX;i++){
if(enemy[i].flag==1){//その敵のフラグがオンになってたら
enemy_pattern0(i);
enemy[i].x+=cos(enemy[i].ang)*enemy[i].sp;
enemy[i].y+=sin(enemy[i].ang)*enemy[i].sp;
enemy[i].x+=enemy[i].vx;
enemy[i].y+=enemy[i].vy;
enemy[i].cnt++;
enemy[i].img=enemy[i].muki*3+(enemy[i].cnt%18)/6;
//敵が画面から外れたら消す
if(enemy[i].x<-20 || FIELD_MAX_X+20<enemy[i].x || enemy[i].y<-20 || FIELD_MAX_Y+20<enemy[i].y)
enemy[i].flag=0;
}
}
}
//敵処理メイン
void enemy_main(){
enemy_enter();
enemy_act();
}#include "../include/GV.h"
void load(){
img_board[10] = LoadGraph("../dat/img/board/10.png");
img_board[11] = LoadGraph("../dat/img/board/11.png");
img_board[12] = LoadGraph("../dat/img/board/12.png");
img_board[20] = LoadGraph("../dat/img/board/20.png");
LoadDivGraph( "../dat/img/char/0.png" , 12 , 4 , 3 , 73 , 73 , img_ch[0] ) ;
LoadDivGraph( "../dat/img/enemy/0.png" , 9 , 3 , 3 , 32 , 32 , img_enemy[0] ) ;
}
//敵の出現情報をエクセルから読み込んで格納する関数
void load_story(){
int n,num,i,fp;
char fname[32]={"../dat/csv/storyH0.csv"};
int input[64];
char inputc[64];
fp = FileRead_open(fname);//ファイル読み込み
if(fp == NULL){
printfDx("read error\n");
return;
}
for(i=0;i<2;i++)//最初の2行読み飛ばす
while(FileRead_getc(fp)!='\n');
n=0 , num=0;
while(1){
for(i=0;i<64;i++){
inputc[i]=input[i]=FileRead_getc(fp);//1文字取得する
if(inputc[i]=='/'){//スラッシュがあれば
while(FileRead_getc(fp)!='\n');//改行までループ
i=-1;//カウンタを最初に戻して
continue;
}
if(input[i]==',' || input[i]=='\n'){//カンマか改行なら
inputc[i]='\0';//そこまでを文字列とし
break;
}
if(input[i]==EOF){//ファイルの終わりなら
goto EXFILE;//終了
}
}
switch(num){
case 0: enemy_order[n].cnt =atoi(inputc);break;
case 1: enemy_order[n].pattern =atoi(inputc);break;
case 2: enemy_order[n].knd =atoi(inputc);break;
case 3: enemy_order[n].x =atof(inputc);break;
case 4: enemy_order[n].y =atof(inputc);break;
case 5: enemy_order[n].sp =atof(inputc);break;
case 6: enemy_order[n].bltime =atoi(inputc);break;
case 7: enemy_order[n].blknd =atoi(inputc);break;
case 8: enemy_order[n].col =atoi(inputc);break;
case 9: enemy_order[n].hp =atoi(inputc);break;
case 10:enemy_order[n].blknd2 =atoi(inputc);break;
case 11:enemy_order[n].wait =atoi(inputc);break;
case 12:enemy_order[n].item_n[0]=atoi(inputc);break;
case 13:enemy_order[n].item_n[1]=atoi(inputc);break;
case 14:enemy_order[n].item_n[2]=atoi(inputc);break;
case 15:enemy_order[n].item_n[3]=atoi(inputc);break;
case 16:enemy_order[n].item_n[4]=atoi(inputc);break;
case 17:enemy_order[n].item_n[5]=atoi(inputc);break;
}
num++;
if(num==18){
num=0;
n++;
}
}
EXFILE:
FileRead_close(fp);
}//graph.cpp
//描画メイン
GLOBAL void graph_main();
//key.cpp
//現在のキー入力処理を行う
GLOBAL int GetHitKeyStateAll_2();
//受け取ったキー番号の現在の入力状態を返す
GLOBAL int CheckStateKey(unsigned char Handle);
//laod.cpp
//データのロード
GLOBAL void load();
GLOBAL void load_story();
//ini.cpp
GLOBAL void first_ini();
GLOBAL void ini();
//char.cpp
GLOBAL void calc_ch();
GLOBAL void ch_move();
//enemy.cpp
GLOBAL void enemy_main();
GLOBAL void GetHitPadStateAll();
GLOBAL int CheckStatePad(unsigned int Handle);
他に必要なヘッダー、C++ファイルがありましたらお教えください。載せますので・・