どの様な時にコンストラクタは用いられるのでしょうか😊 ゲームキャラクターのデータをコンストラクタを用いて初期化してみよう

ゲームキャラクターのデータをコンストラクタを用いて初期化してみよう

ソーラー「いままでコンストラクタの仕組みを学んできましたが


どのようなときにコンストラクタは用いられるのでしょうか?


今日はコンストラクタがどのような時に用いられるかを見ていきましょう


さきほどは


ゲームキャラクターのデータを


クラスGamecharacterを用いて取り扱うことができました」


そのプログラムはこちらです

👇

#include <iostream>

#include <string>//文字列を取り扱うためにヘッダファイル <string>をインクルードしています

using namespace std;


class GameCharacter {


public:

string name;

int HP;

int MP;

void statusDataDisplay();


};




void GameCharacter::statusDataDisplay() {


cout << name << "\n";

cout << "HP " << HP << "\n";

cout << "MP " << MP << "\n";

}


int main() {


GameCharacter Lyliane;

//🌞LylianeのGameCharacter型のオブジェクト宣言を実行しています🌞

Lyliane.name = "リリアーネ";

Lyliane.HP = 10;

Lyliane.MP = 50;


Lyliane.statusDataDisplay();


return 0;

}


ビルド実行結果


リリアーネ

HP 10

MP 50


ソーラー「このプログラムで取り扱われている



💖プロトタイプオブジェクト= 対象としてみるモノ💖



リリアーネという名前のゲームキャラクターなんです


リリアーネという名前のゲームキャラクターは


GameCharacterのカテゴリーに属しているので


💖プロトタイプオブジェクト= 対象としてみるモノ💖のデータ


           すなわち


    💖リリアーネという名前のゲームキャラクター💖のデータ




GameCharacterのカテゴリーに属しているゲームキャラクターをとりあつかう


クラスGameCharacter型のオブジェクトLylianeを用いて取り扱っています




このプログラムでは


LylianeのクラスGameCharacter型のオブジェクト宣言


GameCharacter Lyliane;


を実行し


オブジェクトLylianeを生成しています




そして


オブジェクトLylianeのメンバ変数


Lyliane.name

Lyliane.HP

Lyliane.MP



💖プロトタイプオブジェクト= 対象としてみるモノ💖


のデータ


          つまり


リリアーネという名前のゲームキャラクターの


リリアーネという名前

HP 10

MP 50

データ


を格納しています


そして


オブジェクトLylianeのメンバ関数


Lyliane.statusDataDisplay()


を用いて


それらのデータを


コマンドプロンプト画面に表示しています


このプログラムでは


Lyliane.name = "リリアーネ";

Lyliane.HP = 10;

Lyliane.MP = 50;


の実行により


オブジェクトLylianeのメンバ変数


Lyliane.name

Lyliane.HP

Lyliane.MP


"リリアーネ"

10

50


が代入されています」


ソーラー「ところで


今は


リリアーネという名前のゲームキャラクターの


名前

HP

MP

データを


取り扱うために


LylianeのGameCharacter 型のオブジェクト宣言


GameCharacter Lyliane;


を実行しましたが


エルフィンという名前のゲームキャラクターの


名前

HP

MP

データを


取り扱うために


ElfineのGameCharacter型のオブジェクト宣言


GameCharacter Elfine;


を実行することもあれば


ユーリという名前のゲームキャラクターの


名前

HP

MP

データを


取り扱うために


YuuriのGameCharacter型のオブジェクト宣言


GameCharacter Yuuri;


を実行することもあるわけです」


マックス「そりゃあ


ゲームだからいろいろなキャラクターが出てくるのは当然か」


ソーラー「さてさて


みなさんが


ゲームの制作者なら


いろいろなゲームキャラクターを登場させて


より


面白いゲームにしていきたいとおもわれることでしょう


さらにさらに


ゲームキャラクターが登場してくることになります 


ヒューマンタイプのアルテイシア

エルフタイプのディアーナ

動物タイプのたまちゃん

アンドロイドタイプのアイザック

など

など


ひょっとしたら


総勢


10000以上のゲームキャラクターが登場する


ゲームになるかもしれません


ゲーム制作初期の段階では、これらのゲームキャラクターの


HP

MP


はどのくらいの値に設定したらよいか


まだまだ


決められないということもありえますね


ゲームバランスを考えながら


さまざまなゲームキャラクターの


HP

MP

設定、変更する、ということも


十分あり得ます


しかし


キャラクターの


HP

MP


を設定しておかなければ


そもそも


ゲームが進行できず


ゲームバランスを考えながら


ゲームキャラクターの


HP

MP

設定、変更する、ということも


もちろんできませんね


そこで


ゲームキャラクターの


HP

MP



適当に設定して


ゲームバランスをみていくことになるわけですが


10000以上のゲームキャラクターがいる場合


一人ひとりのゲームキャラクターの


HP

MP



適当に設定していくのは


手間がかかりますね


そこで


コンストラクタを用いて


オブジェクトが作製されると同時に


自動的に


オブジェクトのメンバ変数である


オブジェクト.HP

オブジェクト.MP


に数値データ

1000

1000

が代入されるようにしてみます


具体的には


オブジェクトLylianeが作製されると同時に


自動的に


オブジェクトLylianeのメンバ変数である


Lyliane.HP

Lyliane.MP


に数値データ

1000

1000

が代入されるということになります


そのプログラムはこちらです

👇



#include <iostream>

#include <string>


using namespace std;


class GameCharacter{


public:

string name;

int HP;

int MP;

void statusDataDisplay();

GameCharacter();//🌞👈ここに注目 コンストラクタを設定しました

};




void GameCharacter::statusDataDisplay() {


cout << name << "\n";

cout << "HP " << HP << "\n";

cout << "MP " << MP << "\n";

}


GameCharacter::GameCharacter() {


HP = 1000;

MP = 1000;


}


int main() {


GameCharacter Lyliane;

Lyliane.name = "リリアーネ";

Lyliane.statusDataDisplay();


return 0;

}


ビルド実行結果


リリアーネ

HP 1000

MP 1000


ソーラー「クラスGameCharacter型のオブジェクト宣言


GameCharacter Lyliane;


により


クラスGameCharacter型のオブジェクトLylianeが生成されると同時に


          自動的に実行される


クラスGameCharacter型のオブジェクトLylianeのコンストラクタにより


リリアーネの


HP

MP


1000

1000

に設定されましたね


どの様な GameCharacter型の


オブジェクトのメンバ変数HP

オブジェクトのメンバ変数MP


1000

1000

に設定される


つまり


どのゲームキャラクターの


HP

MP


1000

1000

に設定されるというわけです




これだけ

HP

MP


があると


いろいろなことをゲーム内で試しても大丈夫そうですね」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る