0

私の肩書が少し希望に満ちたものであることは承知しています。私の問題はこれです。Win32 グラフィックスを使用して C++ で小さなゲームをコーディングしようとしています。すべてのピースを上から下に描画して、適切に互いの前に配置したいと考えています。(例えば、私が木の前に立っている場合、最初に木を描き、次にプレイヤーを描くので、私は前にいます)

私の最初のアイデアは、動的配列型が必要だったのでベクトルを使用して、このような for ループを循環させることでした。

for(y = 0; y < playerYValue; y++){
    //Check every enemy/object to see if its yValue matches the looping y
    object.drawImage();
}

プレイヤーの前でも同じです。ただし、いくつかのテストを実行した後、ループの場合は 34 ミリ秒かかり、ループがない場合は 2 かかるため、これは非常に非効率的です:/

すべてのオブジェクトを順番に描画する方法を探しています。何か助けていただければ幸いです。すべて試してみる価値があります。これは、問題を解決するための独創的な方法が思い浮かばない領域の 1 つです。

詳細が必要な場合はお尋ねください:)

編集:コード内のコメントは、オブジェクトの yValue が y と等しいかどうかを毎回確認するためのベクトル反復のプレースホルダーです:)少しクリアしたいと思いました:)

4

1 に答える 1

2

おそらく、オブジェクトを y 値で並べ替えてからレンダリングする必要があります。現在、オブジェクトを描画するたびに各オブジェクトを検索している場合、これはより高速になるはずです。

そして、プレーヤーを特別にしないようにしてください。Player も「オブジェクト」である必要があります。その場合、一度後ろから前に並べ替えてから、後ろから前に描画します。

于 2013-08-08T11:02:48.313 に答える