敵の出現プログラム

アバター
せんちゃ
記事: 50
登録日時: 15年前
住所: 江別市東野幌町
連絡を取る:

敵の出現プログラム

投稿記事 by せんちゃ » 15年前

ソースコードが載せれると聞いて、
早速こちらに載せておこうと思います。
(万が一データに何かがあったときのための
バックアップ的な意味とC言語サイト的な意味で)

CODE:

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
といった感じです。

CODE:

void EnemyMovePattern_LEFT_STOP_LEFT
は左へ移動してから止まり、また動く
移動パターンその1の関数です。
(というかまだこれしか作ってないのですが^^;)

初期のX座標、Y座標、出現タイム、画像の種類、
いつ動きを止めて
いつから動きだすか
初期化する敵の構造体の配列番号
などの設定を行うことができます。

次は三角関数を使って曲がって移動する関数と、
角度取得の関数を作っていきたいです。

あと、いつ攻撃するかなどの攻撃タイムも考えなければです
最後に編集したユーザー せんちゃ on 2010年10月16日(土) 12:01 [ 編集 1 回目 ]

コメントはまだありません。