3 つのゲームを実装するゲームを作成しています。コードを単一のクラスで開始しましたが、MVC 形式に移動したいので、エラーが発生しています。すべてのコードを GameView クラスで記述することから始めました。このクラスのコードの一部を SView クラスに移動したいと考えています。問題は、GameView クラスで JFrame を初期化し、コードを SView クラスに移動したときに変数フレームが見つからないことです。それで、それをパネルにしてから移動するように言われましたが、それは私のゲームを台無しにするだけです.
2 に答える
1
いくつかの提案:
- メインGUIはCardLayoutを使用するため、JPanelsを簡単に交換できます。
- 選択ゲームメニューの主な機能はJPanelsを交換することです。そのため、選択したゲームが視覚化され、選択したゲームが初期化されます。
- 各ゲームに個別に取り組みます。個々のゲームクラスを、ゲームを開催するためのJPanelの作成に向けて調整します。各ゲームクラスに、JFrameを作成し、ゲームクラスインスタンスを作成し、インスタンスのJPanelをJFrameに配置し、ゲームを初期化して表示するテストのメインメソッドを提供します。
- ゲームが単独で動作するようになったら、複数のゲームを表示できる大きなGUIに追加してみてください。
- 各ゲームクラスに、共通の機能のための共通のインターフェースを実装させることを検討してください。たとえば、各ゲームクラスがオーバーライドするinitialize()メソッドをインターフェイスに与えることができます。
- 各ゲームクラスは、モデル、モデルと対話するためのコントロールクラス、および上記のようにJPanelでモデルの状態を表示するビュークラスを持つように、MVCベースである必要があります。
于 2012-04-14T16:02:37.267 に答える
1
物事を少し違った方法で整理する必要があります。考慮すべき事項:
GameView
メインウィンドウですか?そうしてくださいGameView extends JFrame
。SView
パネルですか?そうしてくださいSView extends Panel
。
考慮すべきもう 1 つのこと:SView
に追加したいパネルがありますが、それ自体を追加するGameView
責任はありません。代わりに、これらのコンポーネントをインスタンス化して、これらの両方のクラスの外部のどこかでアセンブルします。fe:SView
GameView gameView = new GameView();
gameView.add(new SView());
代わりに、コンストラクター コードにGameView
a を追加することもできます。new SView()
とにかく、ここでの主なポイントは、コンポーネントは自分自身を親に追加することではなく、独自のコンテンツ/子を作成することだけに関心を持つべきだということです。
幸運を。
于 2012-04-14T15:10:19.100 に答える