以下のDraw関数の処理で、自分の思うようになってくれません。
ソース自体は間違ってないはずなんですが、、なにが原因なのでしょうか。
<やりたいこと>
二種類のフラグと二種類の画像Noの構造体(A_flg、B_flg、low_No、high_No)
を持つブロック情報を、二次元配列に格納してそれを描画する。
(ひとつのチップサイズは16×16とします)
背景画像の根底にはlow_Noが設定されており、フラグ管理によって
その上にhigh_Noが描画されるエリアがある、という処理です。
そして、ある条件化ではさらに自分の下にもhigh_Noを描画する、といった処理です。
<おかしいところ>
下記のソースでいうところの「おまけ」が描画されない。
厳密に言えば、low_Noの描画処理をコメントアウトすると「おまけ」が描画されるので、
low_Noの描画が「おまけ」の上に描画されてしまっている模様。
なぜ、そんな状況になるのかがわかりません。
コード:
void Stage::Draw(){
//二次元配列マップチップ描画
for(int i=0; i<m_line; i++){
for(int j=0; j<m_col; j++){
if(MapChip[i][j].A_flg){
DrawGraph(MapChip[i][j].x,MapChip[i][j].y,Graph[low_No], false);
}else{
if(MapChip[i+1][j].B_flg){//自分の下のブロックのB_flgを確認し、B_flgが立ってない場合はそこにおまけ画像を描画する
//本体描画
DrawGraph(MapChip[i][j].x,MapChip[i][j].y,Graph[high_No], false);
}else{
//本体描画
DrawGraph(MapChip[i][j].x,MapChip[i][j].y,Graph[high_No], false);
//おまけをさらに下に描画
DrawGraph(MapChip[i][j].x,MapChip[i][j].y+16,Graph[high_No], true);
}
}
}
}
}