- 523 名前:ID:EEKBitmg mailto:sage [2009/03/04(水) 00:02:09 ID:vv/UkwCS]
- 厨房見参
総合ヘッダーさん(ID:NIkO1+LI)と引数さんは同じ人だと思うが、まぁそれはそれとして 総合ヘッダーさんはCodeZineの記事に出てくるようなタスクシステムのことを言ってるんだろ? CodeZineの記事を書いた人は俺と同い歳くらいの学生さんだと思う。叩くつもりはないが グチャグチャに絡み合ってる反面教師的なコードとしてはなかなか秀逸だなーと思う task.hに 自機、敵機、自機の弾、敵機の弾 狙い撃ち、爆発、自機の制御、敵の出現制御 ステージ制御、ライフバー管理、スコア管理、タイトル画面、ゲームオーバー画面 といったTaskEx派生クラス全ての宣言をまとめてぶちこんでいる で、例えば自機弾クラスのソースコードの中を見る。まず先頭でtask.hをインクルードしている 次に自機弾クラスの当たり判定メソッドの中を見る。こいつの中では int 敵数=GetCount(ENEMY); // 敵の数よこせ (循環リストを総舐め) for(int i=0;i<count;i++){ 敵クラス *task=(敵クラス*)GetTask(ENEMY , i ); //i番目の敵よこせ (ヒットするまで循環リストを舐める) … } という感じで 『"グローバルインスタンスホルダー"の検索結果 3 件中 1 - 3 件目』 に対して、『敵を全部くれ』と要求して、敵クラス型にキャスト(static_cast)している 循環リストを舐めまくりでびびった。HSPでこんなコード組んだら重くて普通に死ねる C/C++を使うメリットを遺憾なく発揮してると思った
|

|