[過去ログ] DXライブラリ 総合スレッド その6 (990レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
585(1): 名前は開発中のものです。 [sage] 2010/06/09(水) 10:23:51 ID:UtwkxiER(1/7) AAS
std::vector<Unit*> enemy;
enemy.push_back(new EnemyA() );
enemy.push_back(new EnemyB() );
enemy.push_back(new EnemyC() );
for(int i=0; i < enemy.size(); i++)
{
enemy[i].Move();
enemy[i].Draw();
}
とか、そういう。(上記だとリークしやすいから自作リスト作ってるけど)
初心者ならこういう設計でまず作ってみれば?
588(1): 名前は開発中のものです。 [sage] 2010/06/09(水) 10:47:02 ID:UtwkxiER(2/7) AAS
>>586
vectorが遅いとかどこの組み込み(ry
コピーのオーバーヘッド防ぐ為のポインタの動的配列なんだがぬ。まあ、あくまで擬似コードだけど。
一応解説しておくと、EnemyA,B,CはUnitクラスから派生したサブクラスで動作から何からが違う。
そういうのを一括で扱えるポリモーフィズムとかが便利なんだよ。
まあ実際、ある程度の規模作らないと実感出来ないだろうけども。
590(2): 名前は開発中のものです。 [sage] 2010/06/09(水) 11:19:01 ID:UtwkxiER(3/7) AAS
なんか自己解決しちゃったからアレだけど擬似コード
http://www1.axfc.net/uploader/Sc/so/122025
VC++使ってるならコンパイル通るんじゃね・・・
ちなみに、固有IDで識別してswitchとかifで動作を分けるって実装はアリだけど、
可読性とバグり場所の割り出しが比較的大変になるからあんまオススメはしない。
602: 名前は開発中のものです。 [sage] 2010/06/09(水) 17:46:14 ID:UtwkxiER(4/7) AAS
クラス間はマネージャクラス作って処理させるなぁ
604(1): 名前は開発中のものです。 [sage] 2010/06/09(水) 18:05:14 ID:UtwkxiER(5/7) AAS
>>592
idを指定して生成したいって言うなら、ファクトリクラス作って、
そこにid入れたら該当のが帰ってくるようにすればいいんじゃね
こんなん。
http://codepad.org/jFUfjGCL
違う意味だったらすまんね。
607: 名前は開発中のものです。 [sage] 2010/06/09(水) 18:14:06 ID:UtwkxiER(6/7) AAS
そういう設計なら、フラグチェック時にvectorとかから除外するのが普通じゃねえの。
俺は自前でユニット管理用リストクラス作ったけど。
609: 名前は開発中のものです。 [sage] 2010/06/09(水) 19:18:14 ID:UtwkxiER(7/7) AAS
>>605
暫くコード書いてなかったからリハビリのつもりで書いた程度のもんだけど、
http://www1.axfc.net/uploader/Sc/so/122080
こんな方式とか。
ループ回すのがロスだと感じるなら一本化してもいいんじゃね。
たぶんリークしてないけど、チェックはしてないからメモリリーク起こってたらすまんね。
shared_ptrの関係でTR1使ってるから、VC++2010じゃないなら追加パック入れる必要あるかもね。
リーク上等で、生ポインタに書き換えても動くとおもうよ。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.040s