今RPGを作成しています。日記ではRPGをC言語で作ると言ってましたが、
「新・ゲームプログラミングの館」でC++のファイル分割などが載っていましたので、C++で作ることにしました。(変わりやすい性格なんです・・。)
そこでクラスについて質問があります。
例えば
プレイヤークラス、キーボードクラスがあります
中身はこんな感じです
//プレイヤークラス
class Player{
private:
enum MUKI{
DOWN,
LEFT,
RIGHT,
UP
};
MUKI muki;
int img[12];
int GraphX;//描画用X座標
int GraphY;//描画用Y座標
int MapX;//マップX座標
int MapY;//マップY座標
int HitX;//当たり判定用X座標
int HitY;//当たり判定用Y座標
int DivX;//画像のxサイズ
int DivY;//画像のyサイズ
int walkFlag;//歩けるかどうかの判定
public:
void Player_Init(int x,int y);//初期化関数
void Player_Calc();//計算関数
void Player_Graph();//描画関数
void Player_End();//終了関数
};
//キーボードクラス
class Keyboard{
private:
int key[256];
public:
void Key_Update();
int Key_Get(int KeyCode);
};
自分は、プレイヤークラスのメンバ関数のvoid Player_Calc()の中に
キーボードクラスのメンバ関数を使いたいんです。
C言語だったらそのまま関数を呼べると思うんですが、C++だとオブジェトを作成してからそこからメンバ関数を呼べなくちゃいけないと思います。
最初はキーボードクラスをプレイヤークラスで継承すればいいんじゃないかな?と思いましたが、
これだと自分も訳が分からなくなり、これから処理が増えるとともになおさら意味不明になると思い、やめました。
そこで、自分はPlayer.cpp(メンバ関数を定義してるところです)にキーボードクラスのオブジェクトを作成し、
そして、main.cppにプレイヤークラスのオブジェクトを作成しました。
しかし、なんかいや~な感じがします。
キーボードクラスのKet_Get()関数はいっぱい使うと思うのに、いちいちオブジェクトを作成するのもなんか変だし
(たとえば・・タイトルの選択肢処理のときキーボードを使うと思うんですが、Player.cppにオブジェクトがあるのにいちいちTitle.cppにキーボードクラスのオブジェクトを作成するということです)
main.cppにプレイヤークラスのオブジェクトを作成するのもなんか変な感じがします。
すいません、わかりませんよね・・・。
そこで聞きたいことがあります。
①みなさんは、オブジェクトの管理をどうしていますか。
②↑のとは関係ないですが、どこからクラス化したほうがいいのか教えて下さい。(例えば描画処理ならマップの描画などもまとめて描画クラスにいれたほうがいいのか、
もしくはマップ描画というクラスを作ったほうがいいのか)
③ゲームのクラス管理のコツなどを教えてください(こうやってやったほうがわかりやすいよなど・・・)
④ゲームのクラス管理に詳しいサイトさんなどを教えてください。
質問多くてすいません・・・。どうかお願いしますm(__)m
※一応ソースを貼ります。