- ゲームプログラムなら俺に聞け31 [転載禁止]©2ch.net
416 :370[sage]:2015/06/01(月) 03:15:02.33 ID:YT7OvFsL - >>407
全体的に見てOOPに慣れてないようだから オブジェクト指向とか設計技法とかの 本を読むのを勧める >なんかもうちょっきれいに書けないの? 書ける。 上手い人はキレイに書いてる 良書の書き方をマネすること >BATTLE_CLASS内でpartyClass->charactorClass[0]->weaponClass->weaponATとかでアクセスすんの? しない。 カプセル化の原則に反するから チェーンが長くなるアクセスは原則的にしない たとえばバトルクラス(のオブジェクト)がキャラクラス(のメソッド)に、 キャラクラスがウェポンクラスに、と短いアクセスを繰り返す バトルクラスが直接ウェポンクラスを知らなくても済むようにする >charactorClassをbattleClassにどうやって渡すかって話 バトルクラスのオブジェクト(インスタンス)を生成するときに渡す たとえばステートとイベント発生を管理する ゲームシーン(管理)クラスみたいのを作ってそこで初期化する さらに言うと個人的にオススメなのは セッターすら使わず、コンストラクタで設定する方法 通常、戦闘の途中でキャラクターは入れ替わらないから アクセスの回数も減りカプセル化の原則にも沿っている
|
- ゲームプログラムなら俺に聞け31 [転載禁止]©2ch.net
420 :デフォルトの名無しさん[sage]:2015/06/01(月) 06:32:32.70 ID:YT7OvFsL - >>418
>相互参照 >設定されたオブジェクトが途中で破棄されうる場合は一体どうするんですか? なにか誤解があるようだけど問題にならない たしかにC++だと相互参照で問題が生じうる (からJavaやC#のほうが制作言語にオススメだ)けど 今回の場合はまったく問題にならない なぜならRPGの戦闘はふつう独立したもので 戦闘システムの外部から参照する必要がない 戦闘開始時に生成したオブジェクトは 戦闘終了時にすべてデリートして終わり だから相互参照の汚染も(外部には広がら)ない まとめると、キレイにしてゴミを残さないから問題ない
|
- ゲームプログラムなら俺に聞け31 [転載禁止]©2ch.net
421 :デフォルトの名無しさん[sage]:2015/06/01(月) 06:47:36.54 ID:YT7OvFsL - >>416
>>420 補足しておくと >たとえばバトルクラス(のオブジェクト)がキャラクラス(のメソッド)に、 >キャラクラスがウェポンクラスに、、と短いアクセスを繰り返す これは単純化して話してしまったが、実際の設計では 汎用的なキャラクラスをそのままバトルで使うことはまずしない つまりマップを歩くのもバトルするのも ひとつのクラスを使い回す、ということはしない 実際はバトラー(戦闘用キャラ)クラスを使う 戦闘にしか使わず戦闘以外で参照されないから 戦闘終了時にインスタンスを消しても問題ないというわけ 外部でも使うゴールドとかアイテムとかについては 戦闘終了時に引き渡すようにする それから戦闘システム内でも 戦闘に参加するキャラがそれぞれを相互参照はしない 仲介するクラスが一元的に管理することで 参照は必要最小限で済む こういうのは説明しだすとキリがないから やはりOOPとか設計の本を読むしかない
|