DRPG製作レポート-2

cafeunder
記事: 0
登録日時: 14年前
住所: ほっかいどう
連絡を取る:

DRPG製作レポート-2

投稿記事 by cafeunder » 14年前

こんばんは!かふぇしたです!
今回は製作レポート2回目ですが、戦闘処理系ではなくダンジョンの構成をしっかりまとめようと思います。

[hr]
~ダンジョンクラス~
ダンジョンのすべての事象を管理するクラスです。

ダンジョンにあるマップ、敵、物体、パーティすべてを管理します。

CODE:

class Dungeon
{
private:
	int exe_stat;

	Thing* ex_thing[EX_THING_MAX];
	Enemy ex_enemy[EX_ENEMY_MAX];
	Article ex_article[EX_ARTICLE_MAX];
	Map map;

	Enemy* Encount_enemy;

	void ThingDraw();
	void ThingMove();
	void ArticleExecute();
public :
	Party ex_party;

	Dungeon();
	void Initialize(char* a_dungeon_name);

	int Execute();
	bool Collition(int pos_x, int pos_y, Thing* thing);

	MapHeaderData_t GetMapData(){return map.data;};
	Enemy* JudgeEncount();
	Thing* GetThingByPlace(int pos_x, int pos_y);
	void ThingSetLive(Thing* thing, char a_live);
};
ダンジョンすべての事象を関連付けるため、ダンジョンを構成する要素のほとんどをスレイブとしています。
具体的にやることは、
    マップ処理
    敵、物体、パーティ固有の動作処理
    Thingクラスで括り出したモノの処理
となっています。
Thingクラスで一旦括りだしているのは、モノに共通する動作(描画、当たり判定など)を一括で処理するためです。

レポートはしませんが、MapクラスとThingクラスのコードも置いておきます
↓Mapクラス↓
► スポイラーを表示
↓Thingクラス↓
► スポイラーを表示
コードを見ると分かるとおり、メンバメソッド以外でも隠蔽されていないものがあります。
map.dataはdataのメンバがすべて定数であるので、さほど問題がないのですが、パーティオブジェクトに関しては、本来は隠蔽すべきです。
しかし、パーティオブジェクトはアクセス頻度が高く、隠蔽されていると処理に困るので・・・。
いっそのことダンジョンクラスから外してやろかとも考えましたが、そうすると今度はダンジョン処理との連携がとれなくなってしまうのです。
なので、パーティオブジェクトに関しては隠蔽していません。問題アリですが・・・。どうしたものか

[hr]
肝心の製作の方ですが、キャラクタを操作して迷路を進み、敵と隣接したら戦闘・・・。といったところまでは完成しています。
ある程度形になったら、一度テストプログラムとしてアップしようと考えています。

次こそは戦闘処理系についてレポート・・・したいです。
ではまた。

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