クラスを用いた当たり判定

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ジャン

クラスを用いた当たり判定

#1

投稿記事 by ジャン » 12年前

アクションゲームを作っているのですが
クラスを使った当たり判定の出し方がいくら考えてもわかりません。

コード:

class a{
protected:
   int x1,x2,y1,y2;//当たり判定
  int x3,x4,y3,y4;//攻撃判定
	int atari;//当たれば1
};
class chara1:public a{
};
class chara2:public a{
};
継承クラスの判定を比較して当たっていれば
charaクラスに1を返すようなことをしたいのですがどのようにしたらよいのでしょう。
c++初心者ですがよろしくおねがいします。

nil
記事: 428
登録日時: 12年前

Re: クラスを用いた当たり判定

#2

投稿記事 by nil » 12年前

class aにstaticなCheckHit関数を作り、引数にclass aのポインタか参照を受け取ります。
CheckHit関数を適当な場所で呼び出し、chara1やchara2の参照やポインタを渡せばいいです

ジャン

Re: クラスを用いた当たり判定

#3

投稿記事 by ジャン » 12年前

返信ありがとうございます。
こんな感じですか?

コード:

class a{
public:
int x1,x2,y1,y2;//当たり判定
int x3,x4,y3,y4;//攻撃判定
int atari;//当たれば1
static int checkhit(a* hantei,a* hantei2);
};
int a::checkhit(a* hantei,a* hantei2){
 if(hantei->x1<hantei2->x4&&hantei->x2>hantei2->x3&&hantei->y1<hantei2->y4&&hantei->y2>hantei2->y3)
 return 1;
}
class chara1:public a{
};
class chara2:public a{
};
int main{
chara1 chara1;
chara2 chara2;
chara1.atari=a::checkhit(&chara1,&chara2);
retun 0;
}

nil
記事: 428
登録日時: 12年前

Re: クラスを用いた当たり判定

#4

投稿記事 by nil » 12年前

コード:

int a::checkhit(a* hantei,a* hantei2){
 if(hantei->x1<hantei2->x4&&hantei->x2>hantei2->x3&&hantei->y1<hantei2->y4&&hantei->y2>hantei2->y3)
 return 1;
}
これでは当たっていない場合戻り値のreturnがないのでVC++ではエラーか警告が出たはずです。

ジャン

Re: クラスを用いた当たり判定

#5

投稿記事 by ジャン » 12年前

コード:

int a::checkhit(a* hantei,a* hantei2){
 if(hantei->x1<hantei2->x4&&hantei->x2>hantei2->x3&&hantei->y1<hantei2->y4&&hantei->y2>hantei2->y3)
  return 1;
 else
  return 0;
}
こうですね。
ご指南ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る