東方シューティングのようなゲームを作りたい!と思って始めたのですが...
自機(player)のクラスを作っているときに、数人の自機から選べるようにしたくてそれぞれ特徴を持たせようと思ったのですが、つまずいてしまいました。
まず、ヘッダーはこんな感じに書いてみました。
後々消したり足したりするデータメンバーはあると思いますがとりあえずこれで...
character.h
class character{
private:
double Speed;//移動速度
double x;//X座標
double y;//Y座標
int Power;//弾の威力
int Life;//残機
int Spell;//スペル数
bool Exist;//死んでるか生きてるか
bool Selection;//そのキャラが選ばれたかどうか
//画像
int Width;//画像の幅
int Height;//画像の高さ
int MoveStraight;//真っ直ぐ飛ぶときのグラフィックハンドル
int MoveLeft;//左に移動するときのグラフィックハンドル
int MoveRight;//右に移動するときのグラフィックハンドル
public:
character();
void CharaMove();
void CharaDraw();
};
自機を何種類か追加するときそれぞれ違ったパラメーターを持ちます。
この場合どうやって書けば良いのか分からなくなってしまいました。
とりあえず自分が考えた中では、
案1-配列を利用する
character.cpp
character::character(par1,par,2,par3,par4,par5,par6,par7,par8,......){
Speed=par1;
x=par2;
y=par3;
Power=par4;
Life=par5;
Spell=par6;
Exist=par7;
Selection=par8;
//以下略
}
character ziki[3]={
character(3,200,200,15,3,4,true,false,......),
character(7,200,200,8,3,4,true,false,......),
character(.......)
}
としても問題ないでしょうか?
案2-全員が初めに同じパラメーターを持つものを基本クラスで、違うパラメーターは継承を使って派生クラスを作成してそこで新たに追加する
character.h
class character{
protected:
double x;//X座標
double y;//Y座標
int Life;//残機
int Spell;//スペル数
bool Exist;//死んでるか生きてるか
bool Selection;//そのキャラが選ばれたかどうか
public:
character();
void CharaMove();
void CharaDraw();
};
class Ziki1:protected character{
private:
Speed=3;
Power=15;
Width=20;
Height=40;
MoveStraight=LoadGraph("photo1.png");
MoveLeft=LoadGraph("photo2.png");
MoveRight=LoadGraph("photo3.png");
}
class Ziki2:protected character{
private:
Speed=7;
Power=8;
Width=25;
Height=35;
MoveStraight=LoadGraph("photo4.png");
MoveLeft=LoadGraph("photo5.png");
MoveRight=LoadGraph("photo6.png");
}
クラスを使用しない
ただ使用しない方が良いことがあるのであれば使わなくてもよいのですが、
できれば使いたいです。
こんな感じです。
クラスは初めて使用するのであまりよくわからないことが多いです。
このシューティングゲームに手を出す前に「ブロック崩し(笑)」みたいなのを作りましたが
その時は一切クラスを使用せずに作りました。
ですが、最初からC++でプログラムを勉強しているのでC++の特徴を活かして
よりよいコードを書いてみたく思いました。
どうかご援助願います。
クラスの特徴や仕様、どんな時にどのようなメリットがあるのか教えていただけると
とてもうれしいです。
環境:
windows8.1 64bit
visualstudio2013
C++/Dxライブラリ使用