タスクシステムもどきを作りたかった

アバター
大白定義
記事: 14
登録日時: 14年前
住所: 三重県

タスクシステムもどきを作りたかった

投稿記事 by 大白定義 » 14年前

CODE:

#include 

class CTask{
public:
	int Element;
	CTask *Next;
	CTask *Prev;

	CTask(CTask *Prev, int Element){
		this->Prev = Prev;
		this->Element = Element;
	}

	void InsertNext(CTask *Next){
		this->Next = Next;
	}

	void InsertPrev(CTask *Prev){
		this->Prev = Prev;
	}

	void PrintElement(){
		printf("%d\n", this->Element);
	}
};

class CList{
private:
	CTask *ActiveTask;
	CTask *PassiveTask;
public:
	CList(int max){
		int i;
		CTask *task;

		ActiveTask = new CTask(ActiveTask, 0);
		ActiveTask->InsertNext(ActiveTask);

		PassiveTask = new CTask(NULL, 0);
		for(i=1, task=PassiveTask; iNext){
			task->InsertNext(new CTask(NULL, i));
		}
	}

	~CList(){
		CTask *task1 = NULL, *task2 = NULL;
		
		for(task1 = ActiveTask->Next; task1!=ActiveTask; task1=task2){
			task2 = task1->Next;
			delete task1;
		}
		delete ActiveTask;

		for(task1 = PassiveTask; task1!=NULL; task1=task2){
			task2 = task1->Next;
			delete task1;
		}
	}
};

int main(void){
	CList *List;

	List = new CList(10);

	getchar();
	return 0;
}
さっきまで脳みその中にあったものを淡々と書いただけなのでコメント無かったりで読みづらく、大変申し訳ない。

とりあえずやりたかったことは、
PassiveTaskという単方向環状リストにあらかじめ指定された数のノードを用意しておいて、
何かでノートを使うことになったとき(STGで言うなら的が弾を発射した時)にPassiveTaskから1つノードを取り出してActiveTaskという双方向環状リストに登録。
ActiveTaskに登録されているノードが破棄されるとき(STGで言うなら弾がヒット、あるいは画面外に出たとき)にそれを取り出してPassiveTaskに登録する。

…といった感じのこと。

CTaskのElementの部分をゆくゆくはCObjectみたいな全てのクラスのスーパークラスにしてやれば、タスクシステムっぽいものができるかなー、なんて思ったりしたわけなんですけれど…。
うーん、まずそれがタスクシステムというので合っているのかどうかが怖い。

で、まぁこれを実行した結果、getchar()が実行されていない様…。
加えてコマンドフロンプトの今までの実行結果が消去されてることから、
絶対これまずいことになってるだろ!? と言わざるを得ない。

エラーの場所がわっかんねぇ。どうすんべさ。

コメントはまだありません。