引数にクラス型のオブジェクトを設定できる仕組みを用いてゲームキャラクターが武器や防具を装備することを表現してみましょう
ゲームキャラクターが装備する武器や防具を取り扱うクラスを作製してみよ~う
ソーラー「次に
ゲームキャラクターが装備する
武器や防具のデータを取り扱う
クラスを
作製してみたいと思います
ゲームキャラクターに持たせる木の盾を
プロトタイプオブジェクト=対象としてみるモノ
とします
盾の
名前
防御力
の
データを
取り扱うクラスShieldのクラス宣言と
盾のデータを表示するメンバ関数shieldDataDisplay()の定義を
以下のように設定してみます
👇
class Shield{
public:
string shieldname;
int shieldDP;
public:
void shieldDataDisplay();
};
void Shield::shieldDataDisplay() {
cout << shieldname << "\n";
cout << "防御力 " << shieldDP << "\n";
}
このクラスShieldが用いられた
プログラムを実行してみます
#include <iostream>
#include <string>//文字列を取り扱うためにヘッダファイル <string>をインクルードしています
using namespace std;
class Shield {
public:
string shieldname;
int shieldDP;
public:
void shieldDataDisplay();
};
void Shield::shieldDataDisplay() {
cout << shieldname << "\n";
cout << "防御力 " << shieldDP << "\n";
}
int main() {
Shield WoodShiled;
WoodShiled.shieldname = "木の盾";
WoodShiled.shieldDP = 2;
WoodShiled.shieldDataDisplay();
return 0;
}
ビルド実行結果
木の盾
防御力 2
マックス「なんかRPGゲームっぽくなってきた
木の盾
防御力 2
か・・・
旅立ちのころの装備品ってわけか」
マックス「
じゃあ
プロトタイプオブジェクト=対象としてみるモノ
を
妖精の盾
とするなら
妖精の盾
の
データをコマンドプロンプト画面に表示してみるなら
プログラムはこんな感じになるんだろう」
👇
#include <iostream>
#include <string>//文字列を取り扱うためにヘッダファイル <string>をインクルードしています
using namespace std;
class Shield {
public:
string shieldname;
int shieldDP;
public:
void shieldDataDisplay();
};
void Shield::shieldDataDisplay() {
cout << shieldname << "\n";
cout << "防御力 " << shieldDP << "\n";
}
int main() {
Shield FairyShiled;
//🌞FairyShiledのオブジェクト宣言を行っています 可愛い名前ですね
FairyShiled.shieldname = "妖精の盾";
FairyShiled.shieldDP = 15;
FairyShiled.shieldDataDisplay();
return 0;
}
ビルド実行結果
妖精の盾
防御力 15
マックス「おお 麗しい
妖精の盾
防御力 15
が
コマンドプロンプト画面に表示されている・・・
じゃあ
定番っぽい盾😊を登場させてみるとしてみるか
プロトタイプオブジェクトを光の盾に設定して
光の盾
の
データをコマンドプロンプト画面に表示してみるなら
プログラムはこんな感じになるんだろう」
👇
#include <iostream>
#include <string>//文字列を取り扱うためにヘッダファイル <string>をインクルードしています
using namespace std;
class Shield {
public:
string shieldname;
int shieldDP;
public:
void shieldDataDisplay();
};
void Shield::shieldDataDisplay() {
cout << shieldname << "\n";
cout << "防御力 " << shieldDP << "\n";
}
int main() {
Shield LightShiled;
//🌞LightShiledのオブジェクト宣言を行っています Lightは光という意味です
LightShiled.shieldname = "光の盾";
LightShiled.shieldDP = 100;
LightShiled.shieldDataDisplay();
return 0;
}
ビルド実行結果
光の盾
防御力 15
ソーラー「そうなんです
この
クラスShiledを用いれば
木の盾
皮の盾
鉄の盾
妖精の盾
ドラゴンの盾
光の盾
・
・
などの様々な盾の
名前と
防御力を
とりあつかうオブジェクトを
生成することができるんです
つまり
クラスShiledは
ゲームキャラクターが持つ盾のデータを取り扱う
オブジェクトの
設計図
というわけです
ゲームキャラクターが持つ盾=対象としてみるモノ
つまり
プロトタイプオブジェクト
の設計図でなく
ゲームキャラクターが持つ盾=対象としてみるモノ
つまり
プロトタイプオブジェクトのデータを取り扱う
💖オブジェクト💖の
設計図
というわけです
そもそも
プロトタイプオブジェクト=対象としてみるモノ
は設計するものではなく
対象としてみるモノです
さりげないポイントかな😊」
てんC「ということは
クラスShiledは
ゲームキャラクターが持つ盾の
名前
防御力
の
データを取り扱う
オブジェクトの設計図
なら
クラスShiledに変更を加えて
クラスShiledを
ゲームキャラクターが持つ盾の
名前
防御力
重さ
の
データを取り扱う
オブジェクトの設計図
にすることもできるというわけですね」
ソーラー「そうなんです
盾の重さが
キャラクターの素早さ(AGIRITY)
をあらわす
AP
に影響を与えるゲームもたくさんでているけど
そのときに使えそうなクラスになるというわけだね」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます