ゲームにおけるデータ構造・クラス設計・パターン
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2006/08/10(木) 20:27:06ID:BnvyxuCBどのようにクラス設計をすればよいか、
継承・委譲関係はどのようにすればよいか、
使えそうなパターンは何かなど語るのもよし。
自作ゲームの内容とクラス図を書いて
改善案を聞くもよし。
設計に関して困ったことを質問するもよし。
関数の具体的な実装内容やゲーム内容に関しては他スレに譲る。
大いに語れ。
0322名前は開発中のものです。
2007/04/21(土) 04:53:19ID:upqCn/9t俺もおおよそそんな感じ
0323名前は開発中のものです。
2007/04/21(土) 09:13:46ID:jPfR3hGz沖縄県での選挙ですが、どうか民主党だけは避けてください。県民の生命に関わる可能性があります。
民主党の最大の公約は一国二制度(※)ですが、一度「一国二制度 沖縄 三千万」等で検索をお願いします。
この際、民主党のHPで調べても良いです。以下の注釈↓と矛盾することは書いてないはずですから…
※一国二制度
簡単に言えば沖縄を中国と日本の共有物にし、そこに3000万人の中国人を入植させます。
(つまり沖縄人口の 96% を中国人にして、実質、沖縄を中国人の居住地とします。)
さらに「自主」の名の下、沖縄で有事が起きても自衛隊は干渉できません。
3000万人の中国人が、少数派となった130万人の日本人に何をしても、です。
そして反日教育を受けた中国人の反日感情の強さは、ほとんどの日本人の理解を超えるものです。
今回の選挙で民主党が勝った場合、「自主」「発展」を連呼しつつ段階的に進めていくことになります。
自主と言っても、自主を認めるのが「住人の96%が中国人となった」後だということに気をつけてください。
発展と言っても、新沖縄の少数派となった「少数民族日本人」の発展ではないことに気をつけてください。
0324317
2007/04/23(月) 17:44:03ID:jyQ0IgwDシーンに関してスタックは使ってないので、並列処理しているとき
それぞれのシーンが自分用の裏画面などを持ってないと都合が悪い
表示(演出)は別クラスにして任意シーンの裏画面を複数使って料理する
ぶっちゃけ、カメラを切り替えている感じ
0325名前は開発中のものです。
2007/04/24(火) 20:58:04ID:LmvfBEf6なーる。表示用クラスが裏画面(テクスチャだよね?)
を複数使って演出してるわけね。
ありがとう^^
0326名前は開発中のものです。
2007/04/30(月) 13:33:52ID:rkXlhSNvそれともマップに入ったときにファイルからロードするほうがいいでしょうか?
0327名前は開発中のものです。
2007/04/30(月) 13:38:16ID:Omqviadr0328名前は開発中のものです。
2007/04/30(月) 14:13:55ID:+32zYLn2重いのは画像や音声だったりするわけでそれがないので別に大丈夫かと
規模によっちゃそれすらもまるごといれてもかまわんけどな
1MBもあればFF4がまるごとはいるわけで
0329名前は開発中のものです。
2007/04/30(月) 14:36:40ID:rkXlhSNvFF4で1MBなら自分の程度なら全部読み込んでも大丈夫かも。
0330名前は開発中のものです。
2007/04/30(月) 16:15:04ID:1Z2FVuUnあっちこっちでグローバル変数使うような原人は知らん。
0331名前は開発中のものです。
2007/04/30(月) 17:45:14ID:QczQVIdr後からだんだん発展させていけばいいと思う。
ぐちゃぐちゃになったらリファクタリングで。
0332名前は開発中のものです。
2007/05/01(火) 07:32:01ID:n4UjW/KJRPGって結構複雑ですぐ混乱してくる。
そろそろUMLとか勉強しないときついなと思ってきた。
0333名前は開発中のものです。
2007/05/01(火) 10:50:48ID:TWHDSCbLおぬしの想像しているものとは用途が違うぞ
0334名前は開発中のものです。
2007/05/01(火) 11:11:50ID:RvA2WJ3FUMLなり何なり書いて一からやり直してもいいんじゃねぇの
0335名前は開発中のものです。
2007/05/01(火) 11:14:53ID:TWHDSCbLアクセサとしてpublicなメソッド用意してるだけだとあとでみなおすとききついから
フレームワークつくればよろしい
0336名前は開発中のものです。
2007/05/01(火) 14:19:12ID:QizfdMH20337名前は開発中のものです。
2007/05/02(水) 23:12:09ID:n6prPmTN一応ヘッダから関数の定義のスケルトンや、標準関数やライブラリの関数のusing宣言を
自動化する程度のツールは自作して使ってるけど
0338名前は開発中のものです。
2007/05/02(水) 23:15:54ID:waD0m0t1ただUML書いててもちっとも楽しくない。
0339名前は開発中のものです。
2007/05/02(水) 23:53:12ID:HOIFQT1uおやこんな所に俺がいるじゃないか
早く新人研修のJava教本を読む作業に戻るんだ・・・
0340名前は開発中のものです。
2007/05/03(木) 03:33:21ID:aROKnpN+0341名前は開発中のものです。
2007/05/03(木) 04:46:21ID:PxIyx3hyコードに落とす方がかったるい
0342名前は開発中のものです。
2007/05/03(木) 07:22:23ID:mjAAEilHコード打ってる時も、デバックしてる時はめんどい加減で止めたくなる。
0343名前は開発中のものです。
2007/05/03(木) 10:26:46ID:ykGFiN+W分かりきった定型的なコードを書いてるときは退屈で死にそうだけど。
0344名前は開発中のものです。
2007/05/03(木) 17:19:41ID:GHCrYaAw自分はキーボードかたかた叩いてちょっとずつ作っていく瞬間が楽しい
でも設計できないと先がなさそうorz
がんばってUML勉強しよう。
0345名前は開発中のものです。
2007/05/03(木) 17:36:22ID:mjAAEilHUMLはそういうものじゃないぞ。基本的にあれは知らなくても十分だし。
(あくまでも、設計の書き方・設計のための言語みたいなもん。
個人か固定少人数でやるなら、適当でもなんとかなるし。)
設計を と思ってるなら、普通にオブジェクト指向系の本がいい。
自分が買って読んだ本で、お勧めは
憂鬱なプログラマのためのオブジェクト指向開発講座―C++による実践的ソフトウェア構築入門
まぁ、あと定番ながら
オブジェクト指向プログラミング入門
デザインパターンとともに学ぶオブジェクト指向のこころ
立ち読みで数ページしかみてないけど、入門の方はC++ 以外の言語(Object-C、Java、Delphi?)まで含めた本。
どれもこれも、値段も高いし・ページ数もやたらとあるしで
趣味でゲームを作るだけならちょっとオーバーワークっぽくも思えるけど、
Programmerとしての教養に読んでみては?
0346名前は開発中のものです。
2007/05/03(木) 18:20:36ID:q0fI33vbゲームプログラマなら、遅くともインベーダゲームを例とした説明のところで
頓珍漢なことを言っているのに気づくべき。
0347名前は開発中のものです。
2007/05/03(木) 18:36:59ID:l4cqkKLaUMLの超簡単解説もあるし。
例題が業務システムなのがアレだが、
本質的な部分はC++も同じだから大丈夫かと。
0348名前は開発中のものです。
2007/05/03(木) 19:06:09ID:aROKnpN+どうやってコレを使ったら自分の助けになるのか
自分なりに理解するのが大切だと思いますよ
0349名前は開発中のものです。
2007/05/03(木) 21:21:39ID:ykGFiN+W書籍で理論や共通知識を学ぶのも良いけど、ある程度コーディングできるように
なったら、「ホンモノ」のコードを読んでみるのも良い勉強になるよ。
個人的には UNIX V6 のソースコード読んで勉強したクチなんだが、いまどきの
人に薦められるかというと、ちょっと違う気がする。今だと Java, C++ あたりで
良い教材無いかねぇ…
0350名前は開発中のものです。
2007/05/03(木) 21:26:04ID:t/pC1jsI0351名前は開発中のものです。
2007/05/03(木) 21:47:30ID:aROKnpN+クラス図、アクティビティ図、シーケンス図あたりが限度かねぇ
0352名前は開発中のものです。
2007/05/03(木) 21:53:36ID:ifdqR3nP0353名前は開発中のものです。
2007/05/03(木) 22:57:52ID:ykGFiN+W俺はアクティビティ図を抜いて、代わりにステートチャート図が追加って感じ。
0354名前は開発中のものです。
2007/05/04(金) 13:14:26ID:ljy2orUlこれ、全然おもしろくなかた。
わかりにくい。
オブジェクト指向分かってる後によんだのに、わかりにくかった。
「プログラマのための 憂鬱なオブジェクト指向開発講座」に直すべき。
0355名前は開発中のものです。
2007/05/04(金) 14:10:22ID:TiDrCtuuいや、あおりでなしに、その本読んだけど分からなくて、今も分からないままなもんで。教えてくらさい orz
0356名前は開発中のものです。
2007/05/04(金) 21:08:31ID:+e+/DrXO例えば2DのRPGマップをスクロールさせる様なばやいとか
0357名前は開発中のものです。
2007/05/04(金) 21:14:04ID:osoiCnRq普通にやれば言いと思うが・・・
どんな状況を言ってるんだ?
0358名前は開発中のものです。
2007/05/04(金) 21:44:45ID:7VEgWe3mマップをエリアに分割して、自分が今いるエリアの周囲をメモリに読み込んでおく。
移動して自分がいるエリアが変わったら、不要になったエリアの情報を破棄して
必要なエリアの情報を非同期読み込み。
これだけだが、何か疑問が?
0359356
2007/05/04(金) 23:07:32ID:+e+/DrXO作ってみるよ。
0360名前は開発中のものです。
2007/05/05(土) 00:05:52ID:WcHz0Tx6あー、俺は、Delphiを使っているうちに覚えてしまったたちでね・・・。
当時は、標準添付ライブラリのVCL使ったり、ソースとか読んだりして、オブジェクト指向を学んだな。
今なら、.NETのライブラリ使ったり、コンポーネント作って、覚えるようなもんだろうか。
習うより、慣れろって感じでスマソ。
あえて言うなら、実践的なオブジェクト指向ということで、
デザインパターンの言及しているwebページとか、本とかかな?
直接関係ないが、開発技法になっちゃうが、XP(エクストリームプログラミング)関連とかも、
OOP前提が多くて、実践的でためになる。
リファクタリング、ユニットテストなど。
あと、Javaでかかれた本とかページとかは、オブジェクト指向前提で参考になるよ。
0361名前は開発中のものです。
2007/05/05(土) 01:04:52ID:EPC7H7SP“ためになる” “参考になる”とか言いつつも具体的な書籍やHPも挙げないし、
言ってる事も理解へ向けてと言うよりも言葉で煙に巻く感じで(・A・)イクナイ!!
自分なら>>355には、 オブジェクト指向プログラミング入門 を推す。
内容にがやや教科書的/板書的過ぎるから普通の読み方じゃなく
章単位の読み方とか多少英語論文的な読み方が求められるけどページ数に合った力がつくと思う。
あと、ここでなんか批判されまくってるが、「憂鬱な」はそんな悪い本じゃないと思うぞ。
まぁちらほら賛成できない部分や論理的におかしい部分は見受けるが、それでもなかなかの良書。
もう一度、読み直してみるのもいいと思うが。
0362名前は開発中のものです。
2007/05/05(土) 02:25:29ID:WcHz0Tx6煙に巻くつもりなら、レスしなけりゃいい。
具体的なページを上げられないのは、当時のをブックマークしてないから。
第一、コード書いて、読んで、実地で学んだと言っているのに・・・。
ただ、「デザインパターン」とか「エクストリームプログラミング」とかキーワード上げてるんだからさ・・・
まあ、ググレカスと言いたいところなのだが・・・
■デザインパターン
サルでもわかる 逆引きデザインパターン 第1章 はじめてのデザインパターン はじめに
http://www.nulab.co.jp/designPatterns/designPatterns1/designPatterns1-1.html
Amazon.co.jp: オブジェクト指向における再利用のためのデザインパターン: 本: エリック ガンマ,ラルフ ジョンソン,リチャード ヘルム,ジョン ブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田 真一,吉田 和樹
http://amazon.co.jp/o/ASIN/4797311126/
流行になった本だが、実例少なく今となっては読みにくい。CDの中身がまとまっていてよい。
Amazon.co.jp: デザインパターンとともに学ぶオブジェクト指向のこころ: 本: アラン・シャロウェイ,ジェームズ・R・トロット,村上 雅章
http://amazon.co.jp/o/ASIN/4894716844/
Amazon.co.jp: 増補改訂版Java言語で学ぶデザインパターン入門: 本: 結城 浩
http://amazon.co.jp/o/ASIN/4797327030/
0363名前は開発中のものです。
2007/05/05(土) 02:26:17ID:WcHz0Tx6■リファクタリング
オブジェクト指向は直接関係ないけど、おすすめだから読んどけ。
Amazon.co.jp: リファクタリング―プログラムの体質改善テクニック: 本: マーチン ファウラー,Martin Fowler,児玉 公信,平澤 章,友野 晶夫,梅沢 真史
http://amazon.co.jp/o/ASIN/4894712288/
プロでこれ読んでない奴いたら、殴っていい
Amazon.co.jp: Java言語で学ぶリファクタリング入門: 本: 結城 浩
http://amazon.co.jp/o/ASIN/4797337990/
ちなみに、コメントないのは、俺が読んでないものなので注意(わかりやすそうなのを上げといた)
長いURL書き込めなくて苦労したぜ・・・
0364名前は開発中のものです。
2007/05/05(土) 02:33:04ID:WcHz0Tx6一応ゲーム制作技術板だから、ゲーム系のソースでも上げとこうか。
ABA Games
http://www.asahi-net.or.jp/~cs8k-cyu/
Titanion
http://www.asahi-net.or.jp/~cs8k-cyu/windows/ttn.html
とりあえず、ふつーに、OOPしとるんで読んで参考になること請け合い。
規模はでかくないが、ABA氏の一通り完成されたゲームばかりなので勧めやすい
あと、D言語やJavaばかりだから読みやすいよ。
0365名前は開発中のものです。
2007/05/05(土) 04:41:51ID:nOa25t75内容はたいしたことは無いが、OOPの作法みたいなものがわかる。
軽く読めるのでおすすめ。
ところでダックタイピング系の書物でおすすめない?
0366名前は開発中のものです。
2007/05/05(土) 09:36:59ID:WcHz0Tx6ダックタイピングって、Rubyとか、Pythonのアレですか?
C++とかで実装する方法とかってことですか?
そんな局所的な本なんてでてんのかなー。
0367名前は開発中のものです。
2007/05/05(土) 12:08:35ID:+5LnnL0c0368名前は開発中のものです。
2007/05/23(水) 19:36:40ID:yFXY+8Zs2Dゲームなどで使われる
オーダーリングテーブル(Ordering Table)は、すでに常識でしょうか。
たぶんローカル用語でしょうけど、大体用語がないので、これですませています。
おれは、弾幕ゲーム作ってるんだ!
いちいち、物体ごとに、Zソートしてたら遅くなる!そんな時に使用します。
z値ごとに、ArrayListをもって、バケットソート(バケツソート)するような感じです。
z値が広い場合は、z値を狭めるか(0〜100くらいの定数にしてもいい)、
z値を割って使用します。
図では、こんな感じ。
z値
0 →□→□
1
2 →□
3 →□→□ →□→□
4 →□→□
□は物体。
0369名前は開発中のものです。
2007/05/23(水) 19:39:22ID:yFXY+8Zs代替用語
0370名前は開発中のものです。
2007/05/23(水) 20:10:55ID:yFXY+8Zs登録するのを物体ではなく、メソッドポインタなどにすれば、より汎用性が高まると思います。
0371名前は開発中のものです。
2007/05/23(水) 20:13:35ID:tJZKFF0H0372名前は開発中のものです。
2007/05/23(水) 20:46:34ID:sQffGK0m0373名前は開発中のものです。
2007/05/23(水) 21:17:01ID:h3A9cPXz0374名前は開発中のものです。
2007/05/23(水) 21:37:02ID:5lNumVZr使いどころ違うしw
0375名前は開発中のものです。
2007/05/24(木) 00:12:03ID:sQQ2EGyG> 物体ごとに、Zソートしてたら遅くなる!
今ならZバッファ使えばいいじゃん。PlayStation じゃないんだし。
0376名前は開発中のものです。
2007/05/24(木) 00:19:50ID:4PByfCCv画像処理のことなのか?
まぁ、半透明使うならZソートしといたほうがいいけど
>>368はハッシュとかツリーとか勉強するといいかも
0377名前は開発中のものです。
2007/05/24(木) 14:14:16ID:MN3OTeQA3Dのシーンならそれでいいんですけど、
2D主体で、アルファ付きテクスチャ描画が標準、
アルファブレンドを使うのが当たり前、加算合成などが多めになると、
Zバッファが使えなくないですか?
俺、もしかしたら、基本的なところで、ミスってる?('A`)
>>373
毎フレーム、オブジェクトを数千個ソートするのもそんなには重くはないですけどね。
>>374
実は、昔から(DirectDrawの時代)から使ってるんですが、
使いどころ間違ってるのあk−−−−−マジ教えてくれ
>>376
そうです。半透明が多めなんです。
Hashとかツリーは普通に使います。OTの実装もHashと同じですし
0378名前は開発中のものです。
2007/05/24(木) 15:21:37ID:4PByfCCv0379名前は開発中のものです。
2007/05/24(木) 15:43:03ID:a3uG9+mx・z値が整数で適当な範囲に収まる場合
ならその方法がいいのかもね
でもゲームによってやり方を変えるのが一番賢いだろうね
0380名前は開発中のものです。
2007/05/24(木) 16:17:32ID:aFaY4/D0最初にネタふりって書いてあるやん
0381名前は開発中のものです。
2007/05/24(木) 16:34:16ID:uojugi7P入れ替わるものではないから、前フレームのソート結果を上手く利用すれば、
もっと軽くできると思う。
0382名前は開発中のものです。
2007/05/24(木) 16:58:41ID:FtXKITOW0383名前は開発中のものです。
2007/05/24(木) 20:02:03ID:K0O2WDIn残りの10%は?
0384名前は開発中のものです。
2007/05/24(木) 20:07:39ID:KUhBCX3E0385名前は開発中のものです。
2007/06/04(月) 17:52:58ID:wXEt1jZx0386名前は開発中のものです。
2007/06/12(火) 16:35:34ID:KXWIMOSu後から基数ソートやらに書き換えるつもりでSTLのsortでZソートしたけど
どこにも問題ないのでそのままリリースしたよ。めっちゃ富豪的
0387名前は開発中のものです。
2007/06/12(火) 20:19:56ID:mHZMnLTIPS2 でも、そんなもんでした。STLport にお任せ。
0388名前は開発中のものです。
2007/06/18(月) 14:54:09ID:oOcxT9uXタスクシステム(というかハンドラオブジェクト)を使う時の場合において適当な例を教えてください
0389名前は開発中のものです。
2007/06/18(月) 15:00:56ID:2wNoPL2vタスクシステムに限らず、メモリの解放を行ってもらうときとか、
進展情報を表示する時によく使うなあ。
とくに前者の場合は、他の開発環境で作ったDLL内でメモリを解放したいときとか。
0390名前は開発中のものです。
2007/06/18(月) 16:26:41ID:1gQkyo9Fオブザーバーパターンは便利だよ。
たとえば敵を倒したときにそいつのはいた弾をすべて消すとか、誘導弾のつけなおしとか
なれてくるとほとんどこれだけでイベントベースでコードが出来上がる。
0391名前は開発中のものです。
2007/06/18(月) 20:21:44ID:nIlBSYV8疎にしたいとき使います。
ほとんどこれだけでとか関係なし。必要なところへ必要なだけ使うべし。
0392名前は開発中のものです。
2007/06/19(火) 02:59:21ID:cFac+yZBC時代のコードを利用するとき。
C++使えるんならほとんどのコールバックが仮想関数で見た目上は消せるだろう。
つまり仮想関数をCで使いたいときにコールバックが出てくる。
0393名前は開発中のものです。
2007/06/19(火) 05:07:59ID:AmvqVn7Sあとは、スクリプト言語との連携とか。
0394名前は開発中のものです。
2007/06/22(金) 08:30:52ID:njuyTnq10395名前は開発中のものです。
2007/06/22(金) 15:30:47ID:G4eFb+VhXboxのアレって何ですか?
0396名前は開発中のものです。
2007/06/22(金) 17:18:36ID:vqNTOWGn0397名前は開発中のものです。
2007/06/22(金) 20:36:17ID:OntiNUWqサイコロが奇数と偶数が交互に出るとかw
0398名前は開発中のものです。
2007/06/22(金) 22:02:44ID:qN22ntrpボゴソートって知らなかった。
ttp://ja.wikipedia.org/wiki/%E3%83%9C%E3%82%B4%E3%82%BD%E3%83%BC%E3%83%88
これはひどいあるごりずむ
0399名前は開発中のものです。
2007/06/22(金) 22:21:08ID:VTeo1nmTこれ逆にコーディングの手間がかかるだろw
0400名前は開発中のものです。
2007/06/22(金) 22:22:42ID:+XVLd04M>平均的な計算時間はO(n×n!)で、非常に効率の悪いアルゴリズムとして知られている。
>安定ソートではない。
最後の一行のオチで吹いたw
0401名前は開発中のものです。
2007/06/22(金) 22:28:33ID:0YS4QSdj0402名前は開発中のものです。
2007/06/23(土) 00:06:58ID:WPiear320403名前は開発中のものです。
2007/06/24(日) 05:25:19ID:zQnoyhbzソートつーか、バラバラに並び変えるアルゴリズムかとw
0404名前は開発中のものです。
2007/06/24(日) 11:16:29ID:1MtSzEPe安定ソートの意味知ってるのかよ('ω`)
0405名前は開発中のものです。
2007/06/24(日) 11:33:03ID:NLW3QANP安定ソートの意味知ってるのかよ('ω`)
0406名前は開発中のものです。
2007/06/24(日) 11:35:30ID:rfvCjIOU知らないよ!(゚Д゚)
0407名前は開発中のものです。
2007/06/24(日) 11:54:44ID:nOj+/xcZ知らないよ!(゚Д゚)
0408名前は開発中のものです。
2007/06/25(月) 03:07:29ID:qVqBESx60409名前は開発中のものです。
2007/06/25(月) 09:30:06ID:mc9m8oVnこの記事のオチはInfinite monkey theoremだよ。ググレ、笑うから。
0410名前は開発中のものです。
2007/06/25(月) 10:06:14ID:U5o2CqSMhttp://www.ietf.org/rfc/rfc2795.txt
0411名前は開発中のものです。
2007/06/25(月) 20:59:14ID:NaYhg1aVスレ違い
0412名前は開発中のものです。
2007/06/25(月) 21:35:29ID:933SMbqm既存のゲームにおけるパターンの一端って事で
0413名前は開発中のものです。
2007/07/17(火) 22:54:23ID:Mh0Ht4Or基本的?なデータの扱いについて意見を聞きたいです
データに対応する操作クラス以外から値を書き換えることを禁止するためにこういうクラスを考えました
template <typename T> class IData {
public:
friend class Mutator<T>;
typedef T element_type;
typedef boost::shared_ptr< element_type > value_type;
protected:
value_type value;
};
template <typename T> class IMutator : public IData<T> {
typedef IData<T> data_type;
protected:
void assign(data_type& target) { value = target.value; }
void swap(data_type& target) { boost::swap(value, target.value); }
};
使う際はこいつを継承して
class CData : public IData<int> {};
class CMutator : public IMutator<int> {};
のようにすれば
CMutatorはIMutatorのassignやswapを使ってCDataのvalueの指すデータを生成から破壊まで自由に扱えるわけです
でもこのようにするとCDataの持つ情報が増えた時に
class CData : public IData<Param>, IData<Graphic>, IData<Sound>のように
継承しまくりになることとか、shared_ptrの機能によるコストが気になったりします
そこでもっと一般的なやり方を知りたいんですが何か良い方法ありませんかね?
0414名前は開発中のものです。
2007/07/17(火) 23:05:36ID:oI0Vf9iApublic:
boost::shared_ptr<T> value; //!< 漏れ以外勝手に書き換えんなよ!
};
0415名前は開発中のものです。
2007/07/17(火) 23:19:26ID:Mh0Ht4Orそんな事考えるのは無駄だよってことですか
言われてみればそういう気もしますが…(´・ω・`)
0416名前は開発中のものです。
2007/07/17(火) 23:29:43ID:9lPCzUGd役割が酷似した基底(インターフェース)同士を多重継承って嫌過ぎだろ。常考。
衝突避けるためにインターフェース設計の段階でお互い調整しなくちゃいかんし
衝突上等ならキャストだらけの汚ねぇコードになる。俺ならコンポジットにする
0417名前は開発中のものです。
2007/07/17(火) 23:32:47ID:ecw8MgBRアダプタパターンとか、ありもののパターンで十分間に合いそうな希ガス。
経験上、複雑な仕組みはロクなことがない。
Keep it simple stupidですよ。
苦労して得られる利益が少なくて割が合わないパターンでは?
0418名前は開発中のものです。
2007/07/18(水) 00:07:21ID:xDBgIMCCよく考えたらIDataはインターフェースじゃないっすね…
全く異なる型を同士でコンポジットにしてアクセスも上手く制限できる事って出来るんでしょうか
要求としては
・データと動作を分離する事と
・動作をデータに対してではなくゲーム上のオブジェクトに対して書けること
・書き込み専用のクラス以外からのアクセスを制限する事
です
操作されるデータの実体へのポインタを持つIDataと、それを扱うインターフェースIMutatorに分けたのは一番目のため
多重継承したCData経由でデータを扱うのは2番目を実現するため
データの実体へのポインタであるIDataのvalueメンバをprotectedにし
Mutatorをフレンドにしたのは三番目の為
以上によってゲーム内でのオブジェクトの振舞いは全てIMutator派生クラスのCDataに対しての操作として
書くことが出来て、リソースの確保等のシステム的な動作は外部に一任できる
という意図があったんですが、そんなに複雑ですかいね?
0419名前は開発中のものです。
2007/07/18(水) 00:28:49ID:JHo6PQLB・動作をデータに対してではなくゲーム上のオブジェクトに対して書けること
・書き込み専用のクラス以外からのアクセスを制限する事
つまりテンプレートで実装する意味はないよね?
0420名前は開発中のものです。
2007/07/18(水) 00:37:53ID:9FpPIZ4uないね
0421名前は開発中のものです。
2007/07/18(水) 00:57:12ID:IHWjkDA2IMutatorを継承すればどんなクラス以外からでもアクセスできる以上、
制限できてるとは言いがたい。
「IMutatorの継承を無闇にするな」と、文書で説明する?
ならば、414でいいでしょ。
■ このスレッドは過去ログ倉庫に格納されています