初心者は最初はシューティングゲームが一番ということで、シューティングゲームを作りました。
弾幕の数は多くて1000個程度なので、以下のような構造体を作り、配列を生成しました。
struct Enemy { int flag; // 使用中フラグ 最初に0を入れておく double x,y, bx, by; }; struct Enemy enemy_list[1000];そして、以下のような関数で配列を走査させ、空き領域を取得していました。
int getSpace () { for (int i=0;i<1000;++i) if (!enemy_list.flag) // 未使用なら return i; // その配列の添字を返す return -1; // ループを抜けた=空きがないことを-1を返して知らせる }
次に、エフェクトを派手にしようと粒子を飛ばせようとしました。
敵を倒したときに破片のように沢山飛び散らせようと思っています。
上の弾幕のように実装しようと思いましたが、ちょっと困っています。
沢山飛ばすので弾幕より多くのスペースを必要とし、
その上に生成と削除を頻繁に行うので毎回forループで走査させると速度が低下します。
連結リストを使うことも考えましたが、配列と比べて全体的に少し遅めです。
このような大量のデータを扱うとき、どのようなアルゴリズムで実装するのがよいのでしょうか?
様々なエフェクトは普通に配列を使って実装しているのでしょうか?
長くなりましたが、よろしければ先人の経験談を聞かせてほしいです。