0

C# を使用して Breakout Game をシミュレートするプログラムを作成しています。

ゲーム用のレンガ、パドル、ボールを作成する方法についてさまざまなテクニックを学んできましたが、Visual Studio でそれらすべてを 1 つの画像ボックスに追加する方法がわかりません。

私が直面している主な問題は、たとえばボールを移動するために、次のコード セクションを使用して「キャンバス」を paper.Clear(Color.White);クリアする必要があることです。 (たとえば、ボールについて)画像ボックス内で夜明けになり、これが私の問題の始まりです。

Breakout ゲーム (私が練習したもの) 内の各コンポーネントは、すべてpaper.Clear(Color.White);コードを使用します。これは、たとえば、パドルを動かしたり、レンガを表示したり、ボールをバウンドさせたりしたい場合、プログラムは一度に 1 つの機能を実行することを決定するだけであることを意味します。資産の 1 つから削除するpaper.Clear(Color.White);と、プログラムは思いどおりに機能しなくなります。

これらすべてのコンポーネントを完全に見逃すことなく、ゲーム内で同時に実行する方法はありますか?

4

1 に答える 1

0

最も単純な方法では、アプローチを変更して、おそらくタイマーなどで「レイアウト」または「ペイント」を一元的に制御し、単一の「クリア」操作を実行してから、すべてのコンポーネントを再描画する必要があります。言い換えれば、各コンポーネントがキャンバスをクリアするのではなく、独自のレンダリングにのみ関心を持つ必要があります。

上記は最も簡単な方法です。それを超えて、あるフレームから別のフレームに変更されたものだけを再描画するというアプローチをとることができます. これにより、特にゲーム キャンバスが大きい場合や多くのコンポーネントがある場合に、パフォーマンスが大幅に最適化されます。ただし、完全に異なる、ある意味ではより複雑な設計が必要です。前のフレームから「動き」またはその他の変更が加えられた四角形/四角形を特定し、それらの四角形のみをクリアし、それらの四角形内に全体的または部分的にあるコンポーネントに再描画を依頼する必要があります。

于 2014-11-13T16:50:06.310 に答える