Missile.cppに追加ソースvoid HitCheck(void); //当たり判定処理 bool HitCheckNormal(int ax,int ay,int bx,int by); //通常当たり判定 int GetMx(int i); //それぞれの座標取得 int GetMy(int i); int GetEx(int i); int GetEy(int i); void DeleteMissile(int i); //ミサイルの消滅 void DeleteEnemy(int i); //敵の消滅
Enemy.cppに追加ソースint GetMx(int i) { return Missile[i].mx; } int GetMy(int i) { if(Missile[i].mGo == 0) //そのミサイルがなければ-1を返す。 {return -1;} return Missile[i].my; } void DeleteMissile(int i) { Missile[i].mGo = 0; //ミサイル消滅 }
HitCheck.cppのソースint GetEx(int i) { return Enemy[i].ex; } int GetEy(int i) { if(Enemy[i].eLive == 0) //その敵が死んでいれば、-1を返す。 {return -1;} return Enemy[i].ey; } void DeleteEnemy(int i) { Enemy[i].eLive = 0; //敵消滅 }
#include "Def.h" void HitCheck() { int mx;int my; int ex;int ey; for(int m=0; m < MISSILE_MAX; m++) { mx=GetMx(m); my=GetMy(m); if(my == -1)continue; //そのミサイルがなければ次へ for(int e=0; e < ENEMY_MAX; e++) { ex=GetEx(e); ey=GetEy(e); if(ey == -1)continue; //その敵がいなければ、次へ。 if(HitCheckNormal(mx,my,ex,ey)) //消滅処理 { DeleteEnemy(e); DeleteMissile(m); break; //消滅したのだから、次のミサイルの処理へ。 } } } } bool HitCheckNormal(int ax,int ay,int bx,int by) //ここで座標の計算をする { if((ax - bx < 16 ) && (ax - bx > -16) && (ay - by < 32) && (ay - by > -16)) {return true;} //それぞれの座標差が条件と一致していれば、trueを返す。 return false; }