弾の数が想定より多い
Posted: 2012年3月18日(日) 18:36
お久しぶりです、滝上(アカウントを忘れました)です。以前よりプログラムの作成でお世話になってます。
この度、ただの円形の弾幕を作りました。
実際に動かしてみると、たしかに [円形に8発発射] されるのです。 <---実現目標
しかし、[8発発射された後に、4発無駄に発射] されてしまうのです。 <---問題点
私自身は、☆マークの範囲に原因がありそれ以降のコードに影響しているように感じています。
一つ一つの弾幕をその度にテストしながら作ってるので多少コードにおかしい点があると思います。
なにか、良い解決方法や組み方がありましたらお願いします。
この度、ただの円形の弾幕を作りました。
実際に動かしてみると、たしかに [円形に8発発射] されるのです。 <---実現目標
しかし、[8発発射された後に、4発無駄に発射] されてしまうのです。 <---問題点
void test(){
Test_counter++;
//すべての弾が窓の外に出ているかチェック
for(int k=0; k<8; k++){ ―
if(Shote[k].flag==0) Test_contl++; |☆
else Test_contl=0; break; ―
}
//上の処理がOK(=すべての弾のフラグが消えていれば)、 カウンターが20なら弾配置のループ(上記処理が影響してる?)
if(Test_contl%7==0 && Test_counter%20==0){
for(int i=0; i<8; i++){
if(Shote[i].flag==0){
Shote[i].flag=1;
Shote[i].x = Enemy.x;
Shote[i].y = Enemy.y;
if(i==0) Shote[i].angle = atan2(Sky.y - Enemy.y, Sky.x - Enemy.x);
else Shote[i].angle = Shote[i-1].angle+(45*(PI2/360));
}
}
}
//弾の移動と窓の外に出たらフラグを戻す(この辺りには特に問題ないと考えてます)
for(int j=0; j<8; j++){
if(Shote[j].flag==1){
Shote[j].x += cos(Shote[j].angle)*10;
Shote[j].y += sin(Shote[j].angle)*10;
DrawGraph(Shote[j].x, Shote[j].y, Shote_image, TRUE);
}
if(Shote[j].x<0 || Shote[j].x>800 || Shote[j].y<0 || Shote[j].y>800)
Shote[j].flag = 0;
}
}
一つ一つの弾幕をその度にテストしながら作ってるので多少コードにおかしい点があると思います。
なにか、良い解決方法や組み方がありましたらお願いします。