0

これがやや漠然としたトピック/質問であることを事前にお詫び申し上げます。

一般的なボード ゲームのアクティビティ クラスをコーディングしているとします。このクラスには Game.java という名前を付けることができ (一般的には十分です)、Activity を拡張し、いくつかのボタンとテキスト ビュー、および (さらに重要なことに) SurfaceView を拡張する Board.java と呼ばれるカスタム ビュー クラス (または静的なネストされたクラス) を維持します。

Android アプリケーションの性質上、すべての描画は基本的に SurfaceView クラス内で行う必要があります。問題は、このボード ゲームのパーツ (ヒーローやモンスターなど) が相対リストに格納されている場合、それらのリストをどこに格納することをベスト プラクティスで指示するかということです。つまり、これらのリストは、技術的には進行中のゲームのより包括的な全体像であるため、Game クラスによって維持されるべきであると考えられます。ただし、静的なネストされたクラス (または別のトップレベル クラス) の Board は、この場合、これらのリストにアクセスできないため、描画の目的では、両方のクラスで同時に維持されない限り、各ピースの状態が何であるかはわかりません。 、これは非常に面倒です。Board でこのリストを管理することも、ほぼ同じくらい面倒です。

これをきれいに実装する方法について、全体的なコンセンサスや意見はありますか? 私自身の個人的な考えは、何よりも記憶と正気のために、Board で維持することに傾いていますが、明らかな不足がある場合、それは非常に役立ちます。

4

1 に答える 1

0

私はこれを少し実験して、カスタムSurfaceViewクラスにのカスタム実装が含まれているときに成功しましたThread。このスレッドには、すべての物理演算と描画の処理に加えて、描画されるオブジェクトを表す内部クラスがあり、キャンバスに表示されているすべてのアイテムのこれらのオブジェクトのリストを維持します。

Googleには、SDKをダウンロードする際のサンプルが含まれており、キャンバスへの描画を扱うサンプルがいくつかあります。LunarLanderサンプルは、この動作を実装する方法の非常に良い出発点であることがわかりました。SDKマネージャーを使用してサンプルをダウンロードすると、でサンプルを見つけることができますandroid-sdk/samples。お役に立てれば。

于 2012-09-11T14:33:54.030 に答える