STGでボムを実装したのですが・・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
tt

STGでボムを実装したのですが・・・

#1

投稿記事 by tt » 14年前

C言語でSTGを作っています。環境はVisual C++ Expressで、ライブラリはDXライブラリです。
http://www.c3.club.kyutech.ac.jp/gamewi ... ontent_1_2
こちらのサイト様を参考にして、ボムを実装してみました。その結果が下記のコードです(もちろん別のところにボムの構造体を用意しました)。

コード:

void BombEffect()
{
   if(bomb.counter == bomb.maxcounter)
   {
       for(int i = 0; i < ENEMY_TOTAL_SHOT_NUM; i++)
       {
           if(EnemyShot[i].flag == 1)
           {
               EnemyShot[i].flag = 0;
           }
       

		   for(int i = 0; i < ENEMY_TOTAL_NUM; i++)
		   {
			   if(enemy[i].flag == 1)
			   {
				   enemy[i].hp-=20;
				   if(enemy[i].hp<=0){
					   enemy[i].flag=0;
				   }
			   }
		   }
	   }
   }
}
void EnemyCreateShot()
{
   if(bomb.counter == 0)
   {
	   for(int i=0;i<ENEMY_TOTAL_NUM;i++){
		   for(int j = 0; j < ENEMY_TOTAL_SHOT_NUM; j++)
		   {
			   EnemyShot[i].flag= 1;
			   EnemyShot[i].EnemyShots[j].x = enemy[i].x; 
			   EnemyShot[i].EnemyShots[j].y = enemy[i].y;
		   }
	   }
   }
}

void Bomb()
{
	if(Player.flag==1)
		if(Key[KEY_INPUT_X]==1 && bomb.counter == 0 && bomb.kosuu > 0)
		{
        bomb.kosuu--;
		bomb.counter = bomb.maxcounter;
		}
   
		if(bomb.counter> 0)
		{
			BombEffect();   
			bomb.counter--;
		}
仕様は、ボムを撃つと敵に20のダメージを与え、敵の弾をすべて消すというものです。
しかしこれだと、ボムを撃った後しばらくすると敵の弾がまた表示されて、そこで固まってしまいます。1度消した弾は二度と表示させたくないのですが、どのようにすればよろしいでしょうか?

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: STGでボムを実装したのですが・・・

#2

投稿記事 by h2so5 » 14年前

tt さんが書きました:

コード:

       for(int i = 0; i < ENEMY_TOTAL_SHOT_NUM; i++)
       {
           if(EnemyShot[i].flag == 1)
           {
               EnemyShot[i].flag = 0;
           }
ここだけ見ると、EnemyShotの要素数はENEMY_TOTAL_SHOT_NUM個に見えるのですが
tt さんが書きました:

コード:


	   for(int i=0;i<ENEMY_TOTAL_NUM;i++){
		   for(int j = 0; j < ENEMY_TOTAL_SHOT_NUM; j++)
		   {
			   EnemyShot[i].flag= 1;

ここを見るとEnemyShotをENEMY_TOTAL_NUM分しかループ回していないのが変ですね

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: STGでボムを実装したのですが・・・

#3

投稿記事 by softya(ソフト屋) » 14年前

敵の弾の生存フラグの数が敵の数と同じなのは何故でしょうか?
敵の弾の生存フラグは弾の数だけ必要なはずです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

tt

Re: STGでボムを実装したのですが・・・

#4

投稿記事 by tt » 14年前

すいません、for文のところが間違ってました。直りました。

閉鎖

“C言語何でも質問掲示板” へ戻る