オブジェクトをどう更新するのが良いのか解りません。
こんばんは、C++でのプログラミングについて質問させて頂きます。
現在DirectXライブラリを使って簡単なゲームを作っているのですが、ゲームのメインループの中で、各オブジェクトをどうやって更新するのが良いのかか解らず、アドバイスをもらえればと思い質問させて頂きました。
現在の更新方法は
for(Check_Num=1;Check_Num<PL_Limit;Check_Num++)
{
PL_Array[Check_Num]->Action();//各オブジェクトを更新
OBJ_Array[Check_Num]->Action();
FIRE_Array[Check_Num]->Action();
}
for(;Check_Num<OBJ_Limit;Check_Num++)
{
OBJ_Array[Check_Num]->Action();
FIRE_Array[Check_Num]->Action();
}
for(;Check_Num<FIRE_Limit;Check_Num++)
{
FIRE_Array[Check_Num]->Action();
}
Action関数には、表示を更新する、キー入力で移動する、接触したオブジェクトにダメージを与える、等といった各オブジェクトの動作が書かれています。
最初に定めたオブジェクトを生成できる上限の数まで、片っ端から全て更新していく、といった内容です。
また、オブジェクトの作成は
void Player::Shoot_FireBall()//ファイアボール
{
FireBall* FireBall1 = new FireBall(5,Ref_x(),Ref_y(),charge,"FIREBALL",Ref_angle(),5,0,40,40,4,true,"Action/FireBall1.png",6,3,2,1.0,true,true);
if(FIRE_num>=FIRE_Limit)
FIRE_num = 1;
FIRE_Array[FIRE_num++] = FireBall1;
}
といった関数を使い、特定のキーが入力された時に呼び出してオブジェクトを作成、上限に到達したら古いオブジェクトが入っていた配列を上書きして作る、といった内容です。
以上のようなソースコードを使ってやっていたのですが、このままオブジェクトの数(弾等の種類や敵の種類)が増えてくると、for文の中にその度に記述を追加していくとあまりにも長くなるような気がするのですが、この方法のままでやっていても大丈夫なのでしょうか・・?
後々効率が悪くなってくるような気がするのですが・・・、どうなのでしょうか、もし今の方法が悪いようでしたら、どう改善すれば良いのかを教えて頂ければと思います、宜しくお願いします。