2016-06-19 2 views
0

私は現在、JavaでテーブルRPGゲームを開発中です。私はゲームロジックと接続(ソケット/ RMI)を開発しました。これでゲームはCLIで動作します。私はJavaFXとsceneBuilderでGUIを実装したいと思います。私はすべての場面をデザインし、コントローラの作成を始めました。私の質問は:私はどのように私のゲームのロジックをGUIに渡すことができますか?JavaFXでゲームロジックに合格する?

答えて

0

質問は概念的なもので、概念的な答えです。

OOアプローチです。モデル(ゲームロジック)がビュー(CLI/GUI)から十分に離れている限り、それは大きな問題ではありません。ある種のGame/GameLogicクラスがあると仮定すると、そのインスタンスを関連するコントローラに渡すだけです。おそらく、1つのFXMLビューにつき1つのコントローラがあります。シーンをロードするときは、setControllerFactoryを使用してコントローラーの作成方法をFXMLLoaderに通知できます。念頭に置いて、この洞察を使用すると、以下のことを試みることができます。

MainGameController(Game game) { 
    this.game = game; // now your controller has an instance of your game logic 
} 

その後、あなたは(Applicationサブクラスになる可能性が高い)あなたのビューをロード場所:

FXMLLoader loader = ... 
Game game = ... 

loader.setControllerFactory(t -> new MainGameController(game)); 

あなたのゲームロジックをいくつかに分割された場合各自のビューを持つことができます。コントローラのインスタンシエーションと同じものを採用するだけです。

実用的アプローチ。舞台裏でかなりの量の配線をしたくないとします。その場合、シングルトンのパターンと同様に、ゲーム全体で単一のアクセスポイントを作成することができます。ゲームにゲームロジックの上に他のサービスがある場合、 AudioPlayer,AssetLoaderのように、このアプローチは実際にはもっと有益かもしれません。

class GameApplication { 

    static Game game; // + getters/setters 
    static AudioPlayer audioPlayer; 
    ... 
} 
あなた MainGameControllerで次に

(またはその他):

// called automatically by FXMLLoader 
public void initialize() { 
    this.game = GameApplication.getGame(); 
} 
関連する問題