タスクシステム

アバター
TororoShinku
記事: 67
登録日時: 15年前
住所: 伊勢神宮のある美し国
連絡を取る:

タスクシステム

投稿記事 by TororoShinku » 15年前

CODE:

#pragma once
#include "DxLib.h"
#include 

#define TASK_MAX 10000

template 
class CTask
{
private:
	struct TaskObj
	{
		T obj;
		string name;
		BOOL use;
	};
	TaskObj m_Task[TASK_MAX];
	T temp;
public:
	CTask()
	{
		for(int i=0;i<TASK_MAX;i++)
		{
			m_Task[i].obj = temp;
			m_Task[i].name = "";
			m_Task[i].use = FALSE;
		}
	}

	void PushTop(T object, string name)
	{
		for(int i=0; i<TASK_MAX; i++)
		{
			if(m_Task[i].use == FALSE)
			{
				m_Task[i].name = name;
				m_Task[i].obj = object;
				m_Task[i].use = TRUE;
				return;
			}
		}
		ERROR_BOX("タスクに空きがありません。");
	}

	void PushBack(T object, string name)
	{
		for(int i=1; i<TASK_MAX; i++)
		{
			int k = TASK_MAX-i;
			if(m_Task[k].use == FALSE)
			{
				m_Task[k].name = name;
				m_Task[k].obj = object;
				m_Task[k].use = TRUE;
				return;
			}
		}
		ERROR_BOX("タスクに空きがありません。");
	}

	T GetObject(int number)
	{
		if(m_Task[number].use == TRUE)
		{
			return m_Task[number].obj;
		}
		return temp;
	}

	T GetObject(string name)
	{
		for(int i=0; i<TASK_MAX; i++)
		{
			if(m_Task[i].name == name && 
               m_Task[i].use == TRUE)
			{
				return m_Task[i].obj;
			}
		}
		return temp;
	}

	void BreakObject(int number)
	{
		if(m_Task[i].use == TRUE)
		{
			m_Task[number].name = "";
			m_Task[i].use = FALSE;
		}
	}

	void BreakObject(string name)
	{
		for(int i=0; i<TASK_MAX; i++)
		{
			if(m_Task[i].name == name && 
               m_Task[i].use == TRUE)
			{
				m_Task[i].name = "";
				m_Task[i].use = FALSE;
			}
		}
	}

	string GetName(int number)
	{
		return m_Names[number];
	}
};
不具合だらけの、要素は10000までの、
ひどいシステムです。。

どう直そうかな??
最後に編集したユーザー TororoShinku on 2010年10月17日(日) 12:03 [ 編集 1 回目 ]

アバター
MNS
記事: 35
登録日時: 15年前

Re: タスクシステム

投稿記事 by MNS » 15年前

タスクシステム。良く聞きますけど、
一体どういったものなのでしょうか?
それが解らない私には、このコードが、
ハッシュテーブルのコードか何かと
勘違いしてしまいますね…[e]199[/e]
出来れば教えてくれるとうれしいです[e]146[/e]

アバター
TororoShinku
記事: 67
登録日時: 15年前
住所: 伊勢神宮のある美し国
連絡を取る:

Re: タスクシステム

投稿記事 by TororoShinku » 15年前

まぁこのソースは、正しく言えば、
タスク風システムですね・・・

タスクとは、簡単に複数のタスクを並列(同時)? に
処理する事が出来るシステムらしいです。

自分も、意味はあやふやにしか理解していないので、
かなり間違っているところもあると思います。。

アバター
MNS
記事: 35
登録日時: 15年前

Re: タスクシステム

投稿記事 by MNS » 15年前

ゲームに有用なシステムであるとは聞いたことがあります。
並列処理と聞くと、マルチスレッドなんかとも関係してくるのでしょうか
要勉強ですね…[e]202[/e]

アバター
TororoShinku
記事: 67
登録日時: 15年前
住所: 伊勢神宮のある美し国
連絡を取る:

Re: タスクシステム

投稿記事 by TororoShinku » 15年前

いまさらながら、テスト運転せずに作ったものだから、
使ってみると、まともに動きませんねww

STLを使って作り直そう・・

アバター
Justy
副管理人
記事: 122
登録日時: 15年前

Re: タスクシステム

投稿記事 by Justy » 15年前

 タスク、というよりは文字列とデータ(T)をペアにした入れ物クラス、ってところですよね。

アバター
TororoShinku
記事: 67
登録日時: 15年前
住所: 伊勢神宮のある美し国
連絡を取る:

Re: タスクシステム

投稿記事 by TororoShinku » 15年前

そのとおりです。。

本当のタスククラス って言うものは、
どう言う物なんでしょうか?

アバター
Justy
副管理人
記事: 122
登録日時: 15年前

Re: タスクシステム

投稿記事 by Justy » 15年前

 人によっていろいろあるので細かい部分は一概には言えないですが、とりあえず登録した関数やクラスなどを連続して実行する機構がないとタスクシステムとは言いづらいのではないでしょうか。

アバター
TororoShinku
記事: 67
登録日時: 15年前
住所: 伊勢神宮のある美し国
連絡を取る:

Re: タスクシステム

投稿記事 by TororoShinku » 15年前

これだと、記録保存用クラスみたいですね。

関数は外部実行ですし。。

アバター
Ciel
記事: 252
登録日時: 15年前

Re: タスクシステム

投稿記事 by Ciel » 15年前

タスクシステムについては下記のURLに詳しくのってますよ。
http://homepage3.nifty.com/moha/prog_task.html

参考になれば、幸いです。