0

私はJavaでかなりのサイズの病院シミュレーションゲームを開発しています。今、私の痛みの方法は少し大きく見え始めており、それをいくつかのセクションに分割する方法が必要です...私には考えがありますが、これが最善の方法かどうかはわかりません。まず、草をペイントし、次に病院の建物、次に建物、次に人、そして建物のプレビューを作成します。芝生や病院の建物は変わらないので、一度塗るだけです。建物自体はそれほど頻繁には変更されず、新しい建物が建設された場合にのみ変更されます。

私は考えていました、ブール値を使用して、どのセクションを再描画する必要があるかを判断しますか?理想的には、ペイントメソッドを分割し、必要に応じてそれぞれを呼び出すことができるようにするのが好きですが、物理的に分割する方法がわかりません。

私はまだJavaにまったく慣れておらず、外出先で学んでいます。

前もって感謝します。

レル

4

3 に答える 3

3

もう1つのアイデアは、画面に描画する必要のあるすべてのアイテムのスーパークラスまたはインターフェイスを作成することです。このクラスScreenObjectをcvallしましょう。次に、ScreenObjectクラスでdraw(Graphics2d g)メソッドを指定できます。次に、描画する必要のある各オブジェクトはdraw()メソッドを実装し、描画自体のみを考慮します。この描画メソッドを実行するかどうかを決定する変数を作成することも検討できます。

画面をペイントするメインクラスでは、ArrayList内のすべてのScreenObjectへの参照を持つことができ、paint()メソッドは、各オブジェクトでこの呼び出しを行うdraw()を単純に繰り返します。

于 2009-05-23T14:59:03.713 に答える
1

あなたの説明から、あなたのシーンはタイルに分割されていると思います。ブール値の配列を保持することは、次の更新でどのタイルを再描画する必要があるかを追跡するための良い方法です。LinkedListは、状況によってはパフォーマンスが少し向上する場合があります。(私は、再描画するタイルがたくさんあり、各ネイバーをチェックする必要がある、このルートに行く必要がないかもしれない、Game of Lifeシミュレーションを考えています。)

あなたのコードを見ずに、私はあなたのペイントメソッドを分割することについて非常に具体的なアドバイスを与えることはできません。スプライトアニメーションでは、各スプライトオブジェクトには通常、メインのグラフィックスオブジェクト(またはおそらくバッファ)をパラメータとして受け取る独自の描画メソッドがあります。スプライトはそれ自体の画像と場所を知っている必要があるため、メイン画像に自分自身を描画できます。次に、paintメソッドは、再描画が必要なスプライトのリストをループして、それらの描画メソッドを呼び出すことができます。

詳細については、Javaでのキラーゲームプログラミングを参照してください。

于 2009-05-23T13:28:29.590 に答える
0

私はプログラミングの専門家ではありませんが、ペイントメソッドを分割するために、Graphicsオブジェクトを取得してペイントから呼び出す新しいメソッドを常に作成しました。これは、コードを整理するのに常に役立ちましたが、あなたが取り組んでいるように聞こえるような大きなプロジェクトなので、あなたの状況ではうまくいかないかもしれません。

于 2009-05-23T13:35:01.120 に答える