【C++】RPGにおけるオブジェクト指向的な設計について質問です。
Posted: 2016年7月16日(土) 15:59
オブジェクト指向プログラミング初心者です。
C++とDXライブラリを用いてフィールドバトルのできるRPGを制作しようとしています。
カプセル化やポリモーフィズムといったオブジェクト指向の考え方というものは段々と分かってきたのですが、
実際の実装方法が今いちよく分かりません。
別のインスタンスの状態を取得・(間接的にでも)操作しなければならないときってありますよね。
例えば、フィールドバトルを実装したRPGで、プレイヤーがモンスターに攻撃すると、モンスターのHPが減りますよね。
それは、プレイヤークラスのアタックメソッドの中で、モンスタークラスの被ダメージメソッドを呼び出せば良いですよね。
引数に与えたダメージの大きさを渡すなどして。
ただ、実際問題それをどうやって実装したらいいんでしょう?
プレイヤークラス内部から静的でないモンスタークラスのメソッドを呼び出すためにはオブジェクト参照が必要なので、
プレイヤークラス内部でモンスタークラスがnewによって実体化されてないとダメですよね。
しかし、それが間違いであることは承知していますし、そもそも値が初期化されてしまいますよね。
現状、仕方なくグローバル変数を介してプレイヤークラスからリクエストを送信するという形で実装していますが、
とても見づらいプログラムになってしまいました。
どこをどのようにするのがオブジェクト指向的な美しいプログラムなのでしょうか?
C++とDXライブラリを用いてフィールドバトルのできるRPGを制作しようとしています。
カプセル化やポリモーフィズムといったオブジェクト指向の考え方というものは段々と分かってきたのですが、
実際の実装方法が今いちよく分かりません。
別のインスタンスの状態を取得・(間接的にでも)操作しなければならないときってありますよね。
例えば、フィールドバトルを実装したRPGで、プレイヤーがモンスターに攻撃すると、モンスターのHPが減りますよね。
それは、プレイヤークラスのアタックメソッドの中で、モンスタークラスの被ダメージメソッドを呼び出せば良いですよね。
引数に与えたダメージの大きさを渡すなどして。
ただ、実際問題それをどうやって実装したらいいんでしょう?
プレイヤークラス内部から静的でないモンスタークラスのメソッドを呼び出すためにはオブジェクト参照が必要なので、
プレイヤークラス内部でモンスタークラスがnewによって実体化されてないとダメですよね。
しかし、それが間違いであることは承知していますし、そもそも値が初期化されてしまいますよね。
現状、仕方なくグローバル変数を介してプレイヤークラスからリクエストを送信するという形で実装していますが、
とても見づらいプログラムになってしまいました。
どこをどのようにするのがオブジェクト指向的な美しいプログラムなのでしょうか?