Enemy.cppの追加ソースvoid CheckClear() //クリア判定 { if(NumCheckEnemy() == 0) { SDL_Delay(1000); GameInit(); } }
static int WaitEnemyMove = 0; void MoveEnemy() { if(WaitEnemyMove == 0) { WaitEnemyMove = NumCheckEnemy() - 1; //カウントが0なら、今の数を取得し、移動の処理をする。 if(EnemyDown == 0) //下段移動中でなければ { for(int i=0;i < ENEMY_MAX;i++) { if(Enemy[i].eLive == 0) continue; //もし[i]番目の敵が死んでたら、今回の処理はパス if(Enemy[i].ex < 20) //左の限界点にいたら、左右反転、下段ON、ループを抜ける。 { EnemyLR = 16; EnemyDown = 1; break; }else if(Enemy[i].ex > 590) //右の限界点 { EnemyLR = -16; EnemyDown= 1; break; } } }else{ EnemyDown = 0 ;} //下段移動中なら、下段OFF for(int i=0;i < ENEMY_MAX;i++) //移動処理 { if(Enemy[i].eLive == 0) continue; if(EnemyDown){Enemy[i].ey += 16;} //下段移動中なら下へ。 else {Enemy[i].ex += EnemyLR;} //そうでないなら、左右へ。 DrawImg(32,0,32,32,Enemy[i].ex,Enemy[i].ey); } }else{ for(int i=0;i < ENEMY_MAX;i++) //ウエイト中の処理 { if(Enemy[i].eLive == 0) continue; DrawImg(32,0,32,32,Enemy[i].ex,Enemy[i].ey); } WaitEnemyMove--; //ウエイト中ならカウントを進める。 } } int NumCheckEnemy() { int e; for(int i = 0; i < ENEMY_MAX; i++) { if(Enemy[i].eLive == 1) e++; } return e; }