Enemy.cppのソースvoid InitEnemy(void); //初期処理敵 void MoveEnemy(void); //敵移動処理 #define ENEMY_LINEX 10 #define ENEMY_LINEY 5 #define ENEMY_MAX 50
#define __ENEMY_CPP__ #include "Def.h" struct ENEMY //敵の情報構造体 { int ex; int ey; int eLive; //生死情報 }; static ENEMY Enemy[ENEMY_MAX]; static int EnemyLR; //敵の左右の方向を決める変数 static int EnemyDown; //敵が下に移動中のときの変数 void InitEnemy() { EnemyLR = 5; //最初は右向きでスタート for(int y=0;y < ENEMY_LINEY;y++) { for(int x=0;x < ENEMY_LINEX;x++) { int i = (y * ENEMY_LINEX) + x; Enemy[i].ex=(x * 48)+20; //この数字は敵と敵の間隔+左から20ピクセル右に置いてる。 Enemy[i].ey=y * 48; Enemy[i].eLive = 1; } } } void MoveEnemy() { 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 = 5; EnemyDown = 1; break; }else if(Enemy[i].ex > 590) //右の限界点 { EnemyLR = -5; 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 += 5;} //下段移動中なら下へ。 else {Enemy[i].ex += EnemyLR;} //そうでないなら、左右へ。 DrawImg(32,0,32,32,Enemy[i].ex,Enemy[i].ey); } }