5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

タスクシステム総合スレ part2

344 :名前は開発中のものです。:2008/06/15(日) 04:22:06 ID:3r3JLp6V
設計についての文句は別にないが、Gameクラスにリストをすべて突っ込んで
「グローバル変数がなくなった!」というのは詭弁ではないか?
タスクシステムでも、リストをひとつのクラスにまとめておけば、
オブジェクトが何種類増えようがグローバル変数増えないじゃん。

つか、全てのゲームオブジェクトをタスクとして作るのなら、
>>321 で言うGameObjectは、種類が増えるたびにリストを増やすんじゃなくて
タスクリストからそのオブジェクトのリストを取得する関数を作るべきじゃないかと思った。
例えばこんな風に。(先にリスト化するにしても、ラッピングはすべきかと)
class Bullet : public Task {
public:
  static const int TARGET_PLAYER = 0x01;
  static const int TARGET_ENEMY = 0x02;
  bool check_target(int target) const {
    return (this->target & target) != 0;
  }
};
void search_bullets(std::list<Bullet *> &list, int target) {
  for (std::list<Task *>::iterator i = tasks.begin(); i != tasks.end(); ++i) {
    Bullet *bullet = dynamic_cast<Bullet *>(*i);
    if (bullet != 0 && bullet->check_target(target)) {
      list.push_back(bullet);
    }
  }
}

std::list<Bullet *> list;
search_bullets(list, Bullet::TARGET_PLAYER); // 自機に当たる弾を取得

441 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)