ゲームのオブジェクトの設計について
Posted: 2016年2月22日(月) 20:55
C++とDxライブラリを使用して簡単なゲームエンジンのようなものを作りたいと考えたのですが、ゲームオブジェクトの設計でモヤモヤしているので質問させてください。
現在、ゲームのオブジェクトの基本的なイベントや処理をまとめ"Node"クラスを作っておき、それを継承して"Player"クラスや"Enemy"クラスなどを作成していこうかと考えているのですが、
"Node"クラスにはないパラメーターを継承先で作ってしまった場合どのように他のNodeを継承したクラス(EnemyクラスやPlayerクラスなど)からそれらをコントロールすればよいのでしょうか?
あるいは、全く違った考え方を検討するべきなのでしょうか。
OSはwin8.1、開発環境はVisualC++2010Express、C++歴は一年ほどです。
よろしくお願いします。
現在、ゲームのオブジェクトの基本的なイベントや処理をまとめ"Node"クラスを作っておき、それを継承して"Player"クラスや"Enemy"クラスなどを作成していこうかと考えているのですが、
"Node"クラスにはないパラメーターを継承先で作ってしまった場合どのように他のNodeを継承したクラス(EnemyクラスやPlayerクラスなど)からそれらをコントロールすればよいのでしょうか?
あるいは、全く違った考え方を検討するべきなのでしょうか。
OSはwin8.1、開発環境はVisualC++2010Express、C++歴は一年ほどです。
#define GET_LENGTH(array) //配列の要素数をかぞえる処理
/*
他のゲームでも使いまわしたい
なるべく隠蔽したい
*/
class Node{
/*
座標などの基本的なパラメーター
(略)
*/
/*
毎ループ時の処理やクリックされたときの処理
*/
public : virtual void loop( Node *nodes[] );
/*
あたり判定などの基本的な処理
*/
public : virtual bool checkHit( Node *node );
};
/*
Nodeクラスを継承してゲームに必要なオブジェクトを作っていく
*/
class Enemy : public Node{
private: int hp; //新しく追加したパラメーター
public : virtual void loop(Node *nodes[]){
//移動したりする
};
};
class Shot : public Node{
public : virtual void loop(Node *nodes[]){
for( int i=0; i<GET_LENGTH(nodes); i++){
if( nodes[i]->checkHit( this ) ){
/*
HPを減らす処理ができない!!
*/
}
}
};
};
よろしくお願いします。