色々とアドバイスありがとうございます。
頂いたソースなのですが使い方がよくわかりません・・・。
変数出力を駆使してみたらどうもHitDownの判定が上手くいっておりません・・・。
小分けにしたいのですが今の自分では出来ないのでまとめて判定だけを処理するようにしたいです。
//////////////////////////////////////////////////
マップデータイメージ こんな感じのtblでまとめて読み込んでいます。
//////////////////////////////////////////////////
int MapData_01[CEL_H][CEL_W] = {
{ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1 },
{ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1 },
{ 1,1,1,1,2, 3,3,4,4,5, 5,1,1,0,0, 0,0,0,0,1 },
{ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1 },
{ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1 },
{ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1 },
{ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1 },
{ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1 },
{ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1 },
{ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1 },
{ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1 },
{ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1 },
{ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1 },
{ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1 },
{ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1 },
};
//////////////////////////////////////////////////
void InitMap(void){
MapNum = 0;
for(int i=0; i<CEL_H; i++){
for(int j=0; j<CEL_W; j++){
MapData[j] = *(MapTbl[MapNum] + i*CEL_W + j);
//MapData[j] = MapData_05[j];
}
}
// オブジェ初期化
for(int i=0; i<OBJ_MAX; i++){
Map.Cy = i / CEL_W;
Map.Cx = i-(Map.Cy*CEL_W);
Map.Ptn = MapData[Map.Cy][Map.Cx];
Map.Px = float(Map[i].Cx*CEL_SW + CEL_SW/2);
Map[i].Py = float(Map[i].Cy*CEL_SH + CEL_SH/2);
Map[i].Air = 0xff;
Map[i].Cnt = 0;
if(Map[i].Ptn == 100){
M_Start.x = Map[i].Cx;
M_Start.y = Map[i].Cy;
}
if(Map[i].Ptn == 101){
M_Goal.x = Map[i].Cx;
M_Goal.y = Map[i].Cy;
}
}
}
//////////////////////////////////////////////////
bool HitDown(void){
bool hitF = false;
for(int i=0; i<OBJ_MAX; i++){
if((Play.Px-16)%CEL_SW == 0 && Play.Px == Map[i].Px && Play.Cy-1 == Map[i].Cy){
hitF = true;
break;
}
}
if((Play.Px-16)%CEL_SW == 0){
/*
if(){
if((Play.Px-16)%CEL_SW == 0 && Play.Px == Map[i].Px && Play.Cy-1 == Map[i].Cy){
hitF = true;
break;
}
}
*/
}
return hitF;
}