ページ 11

双方向リストについて

Posted: 2009年5月25日(月) 12:38
by suwacchi
現在、visual C++ 環境でシューティングゲームを製作しています。

少しわけがありまして、ゲーム中にどこでつかっても構わないから、双方向リストを使う必要があります。
自機のショットや移動、敵のボスのショットや移動などは完成していて、拙いながらも一応ゲームとして動いている状態です。

そこで、いわゆる雑魚敵で双方向リストを使おうと思っているのですが、可能でしょうか?
目的が双方向リストを使うことなので、無駄があっても構いません。

よろしくお願いします。

Re:双方向リストについて

Posted: 2009年5月25日(月) 16:20
by non
双方向リストにすることは可能かといわれれば、可能でしょう。
龍神録プログラムならenemy_orderやenemyなどの配列を双方向リストにすればいいわけですから。
何の役にたつの?っていうのが一番問題ですけど。

Re:双方向リストについて

Posted: 2009年5月25日(月) 19:16
by 山崎
こんばんは。

実際、私は今作っているアクションRPGで双方向リストを使っています。
フィールドにいる木や障害物、敵キャラ、プレイヤーキャラなどのオブジェクトを
双方向リストにして管理しています。
高さ、横幅、奥行きがある3次元的なアクションにしているので、
より奥側にあるオブジェクトから描画する必要があります。
そのため、オブジェクトが手前や奥に動く度に双方向リストをソートし、
常にリストが最も奥にあるものから順番に並ぶようにしています。
あとは、リストの先頭から描画していけば、オブジェクトが重なって描画されても
ちゃんと奥のものは後ろに、手前にあるものは手前に表示されます。

もちろんこれは双方向リストじゃなくても、リストを奥にあるものから順番にソートしておくことはできます。
しかし双方向リストにすれば、オブジェクトが奥に動いたか手前に動いたかを覚えていれば
そのオブジェクトからリストの前方へ向かってソートすればいいとか、
後方へ向かってソートすればいいとかがわかるので、
ソートの時間が短縮されるのではと考えました。

もしかしたら、というか多分この程度の機能なら既にSTLコンテナで実現できると思うのですが、
一応プログラミングの経験を積むため、あえて常にソートされている双方向リストを自分で作りました。

私も双方向リストを使うことが効率のいい方法かはわからないのですが、
とりあえず、今のところ私は双方向リストを愛用しております。