値の受け渡し
Posted: 2009年8月25日(火) 22:00
少しながいですが
load.cppで得られたenemy_order[n]の値をenemy.cppのenemy_order[n]に渡しているですが、
自分はnが別々に宣言されて別々の値が返っているようにしか見えません。
nのあけ渡しえお行っている部分はどの部分でしょうか?。
それともenemy_order[~~]とさえなっていれば勝手に同じ値が入るのでしょうか?
load.cpp-----
#include "dxlibp.h"
#include "GV.h"
#include <stdlib.h>
void load_story(){
int n,num,i,fp;
char fname[32]={"dat/storyH0.csv"};
int input[64];
char inputc[64];
fp = FileRead_open(fname);//ファイル読み込み
if(fp == 0){
printfDx("read error\n");
return;}
else {printfDx("OK\n");}
for(i=0;i<2;i++)
//最初の2行読み飛ばす
while(FileRead_getc(fp)!='\n');
n=0 , num=0;
while(1){
int fz =FileRead_open(fname);
for(i=0;i<64;i++){
inputc=input=FileRead_getc(fp);//1文字取得する
if(inputc=='/'){//スラッシュがあれば
while(FileRead_getc(fp)!='\n');//改行までループ
i=-1;//カウンタを最初に戻して
continue;
}
if(input==',' || input=='\n'){//カンマか改行なら
inputc='\0';//そこまでを文字列とし
break;
}
if(fz!=0){//ファイルの終わりなら
printfDx("end\n");
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);
}
enemy.cpp----
void enemy_enter(){//敵の行動を登録・制御する関数
int i,j,n;
for(n=0;n<ENEMY_ORDER_MAX;n++){
if(enemy_order[t].cnt==stage_count){//現在の瞬間がオーダーの瞬間なら
if((i=enemy_num_search())!=-1){
enemy.flag =1;//フラグ
enemy.cnt =0;//カウンタ
enemy.pattern=enemy_order[n].pattern;//移動パターン
enemy.muki =1;//向き
enemy[i].knd =enemy_order[n].knd;//敵の種類
enemy[i].x =enemy_order[n].x;//座標
enemy[i].y =enemy_order[n].y;
enemy[i].sp =enemy_order[n].sp;//スピード
enemy[i].bltime =enemy_order[n].bltime;//弾の発射時間
enemy[i].blknd =enemy_order[n].blknd;//弾幕の種類
enemy[i].blknd2 =enemy_order[n].blknd2;//弾の種類
enemy[i].col =enemy_order[n].col;//色
enemy[i].wait =enemy_order[n].wait;//色
enemy[i].hp =enemy_order[n].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[n].item_n[j];//落とすアイテム
}
}
}
}load.cppで得られたenemy_order[n]の値をenemy.cppのenemy_order[n]に渡しているですが、
自分はnが別々に宣言されて別々の値が返っているようにしか見えません。
nのあけ渡しえお行っている部分はどの部分でしょうか?。
それともenemy_order[~~]とさえなっていれば勝手に同じ値が入るのでしょうか?