異なる構造体を引数に使う方法
Posted: 2010年7月01日(木) 20:59
こんばんは。初めて投稿させていただきます。
龍神録プログラミングの館を参考にして、STGを作っているのですが、
キャラクタの当り判定や、接触時の処理の部分が非常にごちゃごちゃした感じになってしまいました。
今のままでもあまり問題は無いのですが、後学のために質問させてください。
typedef struct{
double x,y,r;//座標と当り範囲
int a,b,c;
}ch_t;//自機
typedef struct{
double x,y,r;
int s,t;
}enemy_t;//敵
typedef struct{
double x,y,r;
int q,w,e;
}boss_t;
ch_t ch;
enemy_t enemy[20];
boss_t boss;
のように、構造体の型は異なるけど、同じ変数を持つ構造体変数が色々あるとき、
int hit_check(引数1,引数2){
double x=(引数1のx)-(引数2のx);
double y=(引数1のy)-(引数2のy);
double r=(引数1のy)+(引数2のy);
if (x*x+y*y<r*r) return 1;
return 0;
}
のような関数を作り、
hit_check(&ch,&enemy)や、hit_check(&ch,&boss)
のように使いたいのですが、
このとき、引数のところはどのようにすればいいのでしょうか?
引数を、enemy.x,enemy.yのようにするのではなく、enemyならenemyだけの指定ですむようにしたいと考えています。
また、構造体の中に構造体変数を入れて、shot[n].bullet.x,shot[n].bullet.y…
のようなとき、引数はどのようになるのでしょうか?
構造体のポインタを使えばいいと思ったのですが、様々な形の構造体が入る時の処理の仕方がよくわかりませんでした。
C/C++はまだ勉強し始めてから1,2ヶ月程度で、まったくの素人です。
VC2010、DXライブラリを使っています
龍神録プログラミングの館を参考にして、STGを作っているのですが、
キャラクタの当り判定や、接触時の処理の部分が非常にごちゃごちゃした感じになってしまいました。
今のままでもあまり問題は無いのですが、後学のために質問させてください。
typedef struct{
double x,y,r;//座標と当り範囲
int a,b,c;
}ch_t;//自機
typedef struct{
double x,y,r;
int s,t;
}enemy_t;//敵
typedef struct{
double x,y,r;
int q,w,e;
}boss_t;
ch_t ch;
enemy_t enemy[20];
boss_t boss;
のように、構造体の型は異なるけど、同じ変数を持つ構造体変数が色々あるとき、
int hit_check(引数1,引数2){
double x=(引数1のx)-(引数2のx);
double y=(引数1のy)-(引数2のy);
double r=(引数1のy)+(引数2のy);
if (x*x+y*y<r*r) return 1;
return 0;
}
のような関数を作り、
hit_check(&ch,&enemy)や、hit_check(&ch,&boss)
のように使いたいのですが、
このとき、引数のところはどのようにすればいいのでしょうか?
引数を、enemy.x,enemy.yのようにするのではなく、enemyならenemyだけの指定ですむようにしたいと考えています。
また、構造体の中に構造体変数を入れて、shot[n].bullet.x,shot[n].bullet.y…
のようなとき、引数はどのようになるのでしょうか?
構造体のポインタを使えばいいと思ったのですが、様々な形の構造体が入る時の処理の仕方がよくわかりませんでした。
C/C++はまだ勉強し始めてから1,2ヶ月程度で、まったくの素人です。
VC2010、DXライブラリを使っています