ゲームプログラミング相談室
■ このスレッドは過去ログ倉庫に格納されています
0364名前は開発中のものです。
02/02/07 22:46ID:???そもそも C++ なら、タスク用の構造体を用意せずに
struct Task {
virtual void Update(unsgned tick) = 0;
};
とでもインターフェースを用意してやって、Task を継承したクラスを、自機/弾/敵機
など必要なだけ用意。あとはメインループの中で
using namespace boost;
using namespace std;
list<shared_ptr<Task> > taskList;
for_each(taskList.begin(), taskList.end(), bind(&Task::Update, _1, tick);
とループをまわせば終わりって気がする。
実際には
taskList への新規タスクの登録/削除のタイミングに関しては気をつける必要が
あるけど(特に for_each 使う場合には、ループの最中に削除すると iterator が不
正な値を指すことになる)
taskList への挿入削除時に動的なメモリ確保/開放処理が発生するので、メモ
リ不足が発生しては困る環境では allocator を自作するか、list の変わりになる
コンテナを自前で実装する。
タスクの新規作成/削除時に動的なメモリ確保/開放処理が入るので、ヒープの
断片化が気になる場合には Task::new, Task::delete を自前で用意する。
とか細かい注意点があるけど、そんなものでしょ。
■ このスレッドは過去ログ倉庫に格納されています