- 1 名前:名前は開発中のものです。 [2008/05/23(金) 21:10:59 ID:8M1gqhPX]
- 具体的なゲーム名を挙げて、
どのようにクラス設計をすればよいか、 継承・委譲関係はどのようにすればよいか、 使えそうなパターンは何かなど語るのもよし。 自作ゲームの内容とクラス図を書いて 改善案を聞くもよし。 設計に関して困ったことを質問するもよし。 関数の具体的な実装内容やゲーム内容に関しては他スレに譲る。 大いに語れ。 前スレ pc11.2ch.net/test/read.cgi/gamedev/1155209226/ テンプレ追加事項あったらよろすく
- 318 名前:名前は開発中のものです。 mailto:sage [2008/08/27(水) 21:03:35 ID:pp3RgERm]
- キャラクターの状態って、どうやって実装してますか?
例えばマリオなら、 enum { SMALL, BIG, FIRE }; enum { STAR, NOT_STAR }; のように、直交した状態ごとにenumで列挙して、ifで場合わけするのでしょうか? stateパターンでは無理???
- 319 名前:名前は開発中のものです。 mailto:sage [2008/08/27(水) 21:31:52 ID:tgwWcjRq]
- それだけだとモーション中とかが実装できないよね
FCマリオならそのenumに加えて、ゲームステータスとして「巨大化アニメ進捗」を示すカウンタ用意すれば十分だと思う ステータス変化中に他の画面止めていいのか、それとも無敵時間とか起きながら遷移中にも時間は動かすのか前提がもうちょい欲しいかも。 その辺の細部を徹底的に見つめていくと、 適するパターンがあるのか、それとも独自な設計選ぶべきかが見えてくるんじゃないかな。 マリオにしてもSFCのヨッシーとかFC版3での画面奥行き潜りとか、色々 実装したい事を見据えて行くと変数の数やステータスのまとめ方が見えて来るだろうしね。
- 320 名前:318 mailto:sage [2008/08/28(木) 00:48:01 ID:Z+eKsEJG]
- >>319
いろいろ考えないといけない事多いですね。 この手のものを実装する方法として、stateパターンとenumとifで場合わけの他に何かあるんでしょうか? 状態の種類と数が複雑になってくると、enumとifを使う方法しかない気がしてきます。 ifで場合分けって、コードが汚く感じてあまり好きじゃないんですよね。 でも、こういうケースでは、これがベストなのかなぁ。
- 321 名前:名前は開発中のものです。 mailto:sage [2008/08/28(木) 01:16:45 ID:q3w3U78u]
- >コードが汚く感じてあまり好きじゃないんですよね。
好みと言うより仕方がない気も。 よくわからんなら下手に「なんとかパターン使うべきなのかな!」って 考えるより、ベタで汚いながらも「いじりやすい」単純なコードからはじめてさ、 あとはめくらめっぽう試した方がいいよ。 ifでの場合分けさえ、インライン展開される事を知ってるかどうかで汚くても使う訳で。 で、知ってる人にはそういうのやら三項演算多用した分岐の方を「美しい」って言っちゃったりするからねw
- 322 名前:名前は開発中のものです。 mailto:sage [2008/08/28(木) 01:34:35 ID:O/+Qqs/2]
- 最初ってそういうの考えちゃうよな
世間じゃどういうのが正しいんだろうとか考えて自分のコードが全然すすまねぇ 今ではなんだかんだで破綻するギリギリまで「動けばいいや」の精神で書いてる 仕事じゃないからこそだな
- 323 名前:名前は開発中のものです。 mailto:sage [2008/08/28(木) 03:20:26 ID:tq3ymPlL]
- 関数ポインタで飛ばせば見た目は良くなるね。
可視性に問題が出てきそうで自分では使ってないけど。
- 324 名前:名前は開発中のものです。 mailto:sage [2008/08/28(木) 09:12:41 ID:y2qhH8VC]
- そこで goto ですよ
- 325 名前:名前は開発中のものです。 mailto:sage [2008/08/28(木) 10:11:26 ID:MS2hHN8x]
- 某シューティングツクール的にはそもそも「状態」という概念が無くて、
全く別のオブジェクトを「発射」して、自分を「消滅」させることで状態の変化を表現してた。
|

|