その後、これではわかりにくいと思いヘッダーにグローバル関数として記述し、別ファイルでそれぞれ呼び出すことにしました。
その際、直接メモリを弄っていた変数がエラーを吐いたのですが、どう処置したらいいかよくわかりません・・・
↓ヘッダーです
GLOBAL void unit_angle_left(int,int);
GLOBAL void unit_angle_right(int,int);
GLOBAL void unit_move_left(int,double,int);//
GLOBAL void unit_move_right(int,double,int);//
GLOBAL void unit_angle_change(int,int);
GLOBAL void unit_move_up(int,int);
GLOBAL void unit_move_nup(int,int);
GLOBAL void unit_moveing(double,double,int,double,int);//
GLOBAL void unit_check_move(double,double,int,int);//
GLOBAL void unit_unitpact_angles(int,int);
GLOBAL double unit_range_target(int,int,int,int);//距離測定
GLOBAL double unit_range_player0(int,int);
void unit_move_left(int i,double *l_x,int k){
*l_x=unit_status[k].unit_member[i].angle_slide;
}
void unit_move_right(int i,double *l_x,int k){
*l_x=-unit_status[k].unit_member[i].angle_slide;
}
void unit_moveing(double *l_tmpx,double *l_tmpy,int i,double l_x,int k){//移動先をテンプレートに代入。加速度が微塵もついてなかったらもちろん進行先座標に0を代入
if(unit_status[k].unit_member[i].speed_inertia>0){
*l_tmpx = cos(unit_status[k].unit_member[i].angle_inertia + l_x) * (unit_status[k].unit_member[i].speed + unit_status[k].unit_member[i].speed_inertia);//構造体にすべし。(多人数対策)
*l_tmpy = sin(unit_status[k].unit_member[i].angle_inertia + l_x) * (unit_status[k].unit_member[i].speed + unit_status[k].unit_member[i].speed_inertia);//と思ったけどtmpに入れてるのがすでに構造体なわけでいいんだった
}else{
*l_tmpx=0;
*l_tmpy=0;
}
}
void unit_check_move(double *l_tmpx,double *l_tmpy,int i,int k){//先に判定して可能なら移動する。l_p_x,yはcharacterの座標のtmp、そこにmove関数から来る数値を足して可能かどうか判断する。
int result_x = field_check((int)(unit_status[k].unit_member[i].x + *l_tmpx ),(int)(unit_status[k].unit_member[i].y ),k,i);
int result_y = field_check((int)(unit_status[k].unit_member[i].x ),(int)(unit_status[k].unit_member[i].y + *l_tmpy ),k,i);
if(1<=result_x){ //x座標、y座標、敵1か味方0か、その番号
unit_status[k].unit_member[i].x+=*l_tmpx;
}
if(1<=result_y){ //x座標、y座標、敵1か味方0か、その番号
unit_status[k].unit_member[i].y+=*l_tmpy;
}
if(2==result_x){//敵にぶつかってたら
unit_status[k].unit_member[i].life-=0.1; //ダメージ計算は別にすべき
}
if(2==result_y){
unit_status[k].unit_member[i].life-=0.1; //ダメージ計算は別にすべき
}
}
1>.\unit_ai00.cpp(24) : error C2664: 'unit_move_left' : 2 番目の引数を 'double *' から 'double' に変換できません。(新しい機能 ; ヘルプを参照)
1> この変換が可能なコンテキストはありません。
1>.\unit_ai00.cpp(35) : error C2664: 'unit_move_right' : 2 番目の引数を 'double *' から 'double' に変換できません。(新しい機能 ; ヘルプを参照)
1> この変換が可能なコンテキストはありません。
1>.\unit_ai00.cpp(92) : error C2664: 'unit_moveing' : 1 番目の引数を 'double *' から 'double' に変換できません。(新しい機能 ; ヘルプを参照)
1> この変換が可能なコンテキストはありません。
1>.\unit_ai00.cpp(93) : error C2664: 'unit_check_move' : 1 番目の引数を 'double *' から 'double' に変換できません。(新しい機能 ; ヘルプを参照)
1> この変換が可能なコンテキストはありません。
1>unit_ai.cpp
1>.\unit_ai.cpp(10) : error C2660: 'unit_ai_main00' : 関数に 2 個の引数を指定できません。