またお世話になります。
今回はタイトル通りモンスターの種類を増やす処理です。
(サンプルのマップデータは0~3までの数値)
void DrawMap(){
int sc = (int)(g_stagedata.scrollx / IMG_CHIPSIZE);
int shiftx = (int)g_stagedata.scrollx % IMG_CHIPSIZE;
for (int y = 0; y < MAP_HEIGHT; y++){
for (int x = 0; x < SCR_WIDTH + 5; x++){
if (x + sc >= g_stagedata.mapwidth) break;
if (g_mapdata[y][x + sc] == '1'){
DrawRotaGraph2(x * IMG_CHIPSIZE - shiftx, y * IMG_CHIPSIZE,
0,0,0.8,0,g_imghandles.block, TRUE);//マップの数値が1ならブロックを表示
}
//モンスター検出
if (g_mapdata[y][x + sc] > '1') SetEnemy(x + sc, y); //1(マップのブロック)以外の場合
}
}
}
void SetEnemy(int mx, int my){
char c = g_mapdata[my][mx]; //マップにいるモンスター判別
//空きを探す
int i;
for (i = 0; i < MAX_ENEMY; i++){
if (g_stagedata.enemies[i].living == FALSE) break;
}
if (i < MAX_ENEMY){
g_stagedata.enemies[i].living = TRUE;
g_stagedata.enemies[i].x = (float)mx * IMG_CHIPSIZE;
g_stagedata.enemies[i].y = (float)my * IMG_CHIPSIZE;
g_stagedata.enemies[i].turn = FALSE;
g_stagedata.enemies[i].noground = FALSE;
g_stagedata.enemies[i].jumping = FALSE;
g_stagedata.enemies[i].jumppower = 0;
g_stagedata.enemies[i].jumpforward = 0;
g_stagedata.enemies[i].type = (EnemyType)(c - '0');
//生命力
switch (g_stagedata.enemies[i].type)
{
case ET_CRAB:
g_stagedata.enemies[i].life = 4;
break;
case ET_OCT:
g_stagedata.enemies[i].life = 5;
break;
}
//マップデータを空に
g_mapdata[my][mx] = '0';
}
}
SetEnemyにいきそれぞれのモンスターに情報を渡しているのですが、
このままだと数値でfor文の処理をしていて、2~9までしかモンスターとして処理できません。
for文以外の方法で読み込むしかないのでしょうか?よろしくお願いします。