[過去ログ]
ゲームにおけるデータ構造・クラス設計・パターン2 (627レス)
ゲームにおけるデータ構造・クラス設計・パターン2 http://mevius.5ch.net/test/read.cgi/gamedev/1211544659/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
318: 名前は開発中のものです。 [sage] 2008/08/27(水) 21:03:35 ID:pp3RgERm キャラクターの状態って、どうやって実装してますか? 例えばマリオなら、 enum { SMALL, BIG, FIRE }; enum { STAR, NOT_STAR }; のように、直交した状態ごとにenumで列挙して、ifで場合わけするのでしょうか? stateパターンでは無理??? http://mevius.5ch.net/test/read.cgi/gamedev/1211544659/318
320: 318 [sage] 2008/08/28(木) 00:48:01 ID:Z+eKsEJG >>319 いろいろ考えないといけない事多いですね。 この手のものを実装する方法として、stateパターンとenumとifで場合わけの他に何かあるんでしょうか? 状態の種類と数が複雑になってくると、enumとifを使う方法しかない気がしてきます。 ifで場合分けって、コードが汚く感じてあまり好きじゃないんですよね。 でも、こういうケースでは、これがベストなのかなぁ。 http://mevius.5ch.net/test/read.cgi/gamedev/1211544659/320
328: 318 [sage] 2008/08/28(木) 17:59:10 ID:Z+eKsEJG >>321,322 汚いコードって書き直したくなってくるんですよね。 綺麗に書けないと達成感がないというか・・・。 また、本などで知識をつける毎に、今まで書いてきたコードが正しくない書き方だったな〜と思うことが多くて(プログラミング始めた頃はダライアス継承とかやってたw)。 完成させることが第一と思っていてもついつい・・。 >>323,327 stateパターンですよね? >>325 そういう方法でやってるところもあるんですね。 でも、オブジェクトのコピーが効率悪そう。 http://mevius.5ch.net/test/read.cgi/gamedev/1211544659/328
334: 318 [sage] 2008/08/28(木) 21:30:31 ID:Z+eKsEJG >>329 コードの正しさ、綺麗さの2つは曖昧な表現で使うべきではなかったですね。 私はコードには、実行効率、保守性、読みやすさの3つがあると思っています。 今問題にしてるのは、主にこのうち後者2つです。 ただ、読みやすさは人それぞれなのかもしれません。 >>331 状態毎に仮想関数をオーバーライドするのが、まさにstateパターンですね。 http://mevius.5ch.net/test/read.cgi/gamedev/1211544659/334
338: 318 [sage] 2008/08/28(木) 23:04:17 ID:Z+eKsEJG >>335 保守性については、仕様変更により、状態を追加したり、廃止したりする時、影響する部分を探し出すのがめんどくさいというかすっきりしないというか。 読みやすさは個人的な好みかもしれません。 保守性、読みやすさともにstateパターンの方が好きです。 でも、直交した状態群が複数あるとき、stateパターンで実装するのが難しそうなので悩んでいました。 うまい方法が見つからなければ、enumとifでいくつもりでした。 >>336 ダイアモンド継承の方が一般的な呼び方なのかもしれません。 仮想継承を使うことによって、継承グラフが菱形になるやつです。 http://mevius.5ch.net/test/read.cgi/gamedev/1211544659/338
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.022s