STGでボムを実装したのですが・・・
Posted: 2011年4月02日(土) 18:56
C言語でSTGを作っています。環境はVisual C++ Expressで、ライブラリはDXライブラリです。
http://www.c3.club.kyutech.ac.jp/gamewi ... ontent_1_2
こちらのサイト様を参考にして、ボムを実装してみました。その結果が下記のコードです(もちろん別のところにボムの構造体を用意しました)。
仕様は、ボムを撃つと敵に20のダメージを与え、敵の弾をすべて消すというものです。
しかしこれだと、ボムを撃った後しばらくすると敵の弾がまた表示されて、そこで固まってしまいます。1度消した弾は二度と表示させたくないのですが、どのようにすればよろしいでしょうか?
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--;
}
しかしこれだと、ボムを撃った後しばらくすると敵の弾がまた表示されて、そこで固まってしまいます。1度消した弾は二度と表示させたくないのですが、どのようにすればよろしいでしょうか?