早速こちらに載せておこうと思います。
(万が一データに何かがあったときのための
バックアップ的な意味とC言語サイト的な意味で)
void ShowEnemy( short SET_KIND_OF_ENEMY , int i )
{
switch( SET_KIND_OF_ENEMY ){
case 0 : DrawCircle( (short)en[i].enemy_x ,
(short)en[i].enemy_y , 10 , GetColor( 255 , 255 , 0 ) , TRUE );
en[i].enemy_hitpoint = 1;
break;
case 1 : DrawCircle( (short)en[i].enemy_x ,
(short)en[i].enemy_y , 10 , GetColor( 255 , 0 , 255 ) , TRUE );
en[i].enemy_hitpoint = 10;
break;
case 2 : EnemyMove_pattern01();
}
}
void EnemyMovePattern_LEFT_STOP_LEFT( int i , double SET_X , double SET_Y , double SET_SPEED ,
short XandY_SETTING_TIME , short SET_FLAG_ON_TIME , short SET_KIND_OF_ENEMY ,
short SET_STOP_TIME , short SET_MOVE_TIME ){
static unsigned char mot_time = 0;
en[i].cnt++;
if( en[i].cnt == XandY_SETTING_TIME ){
en[i].enemy_x = SET_X;
en[i].enemy_y = SET_Y;
}
if( en[i].cnt == SET_FLAG_ON_TIME ){
en[i].enemy_flag ^= 0x1;
}
if( en[i].enemy_flag >= 0x1 ){
ShowEnemy( SET_KIND_OF_ENEMY , i );
}
if( en[i].enemy_flag == 0x1 ){
en[i].enemy_x -= SET_SPEED;
}
if( en[i].cnt > SET_STOP_TIME && en[i].enemy_flag == 0x1 ){
en[i].enemy_flag ^= 0x2;
}
if( en[i].cnt > SET_MOVE_TIME && en[i].enemy_flag == 0x3 ){
en[i].enemy_flag ^= 0x2;
}
if( en[i].enemy_x = 50 ? mot_time = 0 , en[i].enemy_hitpoint = -1 : NULL;
}
}
最終的に画像に差し替えていきます。
一度に画面に描画できる最大数は50体なので
ENEMY_MAX = 50です。
ShowEnemy関数は指定された番号の敵を描画する関数です。
0.pngの敵画像ならば0
1.pngの敵画像ならば1
といった感じです。 は左へ移動してから止まり、また動く
移動パターンその1の関数です。
(というかまだこれしか作ってないのですが^^;)
初期のX座標、Y座標、出現タイム、画像の種類、
いつ動きを止めて
いつから動きだすか
初期化する敵の構造体の配列番号
などの設定を行うことができます。
次は三角関数を使って曲がって移動する関数と、
角度取得の関数を作っていきたいです。
あと、いつ攻撃するかなどの攻撃タイムも考えなければです