我目前正在用Java开发一个表格RPG游戏。我开发了游戏逻辑和连接(套接字/ RMI)。现在该游戏可以与CLI一起工作。我想用JavaFX和sceneBuilder实现GUI。我设计了所有场景并开始编写控制器。我的问题是:我如何将我的游戏逻辑传递给GUI?在JavaFX中传递游戏逻辑?
0
A
回答
0
这个问题是相当概念化的,因此是概念上的答案。
OO方法。只要模型(游戏逻辑)与视图(CLI/GUI)很好地分开,它就不是什么大问题。假设你有某种类的类,你需要的只是将它的实例传递给相关的控制器。你大概每个FXML视图都有一个控制器。在加载场景时,可以使用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));
如果你的游戏逻辑被分成几个部件和每个都可以有自己的视图,只需采用与您的控制器相同的实例。
务实的方法。假设你不想在幕后进行大量的布线。在这种情况下,你可以在整个游戏中创建一个单一的访问点,本质上类似于Singleton模式。如果您的游戏在游戏逻辑之上还有其他服务,例如AudioPlayer
,AssetLoader
,这种方法实际上可能更有益。
class GameApplication {
static Game game; // + getters/setters
static AudioPlayer audioPlayer;
...
}
然后在您MainGameController
(或任何其他):
// called automatically by FXMLLoader
public void initialize() {
this.game = GameApplication.getGame();
}
相关问题
- 1. SpriteKit游戏逻辑
- 2. 填字游戏的逻辑
- 3. 游戏主循环逻辑
- 4. spawer的游戏逻辑
- 5. 游戏的超时逻辑
- 6. 游戏:球反弹逻辑
- 7. 游戏跳转逻辑
- 8. 宾果游戏逻辑
- 9. Node.js的游戏逻辑
- 10. ActionScript 3中的游戏逻辑和游戏循环
- 11. Unity中的游戏逻辑编程
- 12. python中的宾果游戏逻辑
- 13. XML文件中的游戏逻辑
- 14. “票务游戏”棋盘游戏逻辑灰色路线
- 15. Java数组游戏 - 游戏逻辑概念
- 16. 生命游戏的逻辑错误(C++)
- 17. Libgdx scene2d 3D游戏与2D逻辑?
- 18. 视觉C++逻辑游戏帮助,请
- 19. 设计游戏随机化逻辑
- 20. Nim的游戏逻辑错误
- 21. C++ NIM游戏逻辑错误
- 22. 基本游戏逻辑/ ai设计
- 23. Javascript:3次尝试游戏逻辑
- 24. 颜色游戏逻辑有问题
- 25. Android SQLite和游戏模式逻辑
- 26. Unity MonoBehaviour对象vs游戏逻辑
- 27. 逻辑错误游戏程序
- 28. 游戏逻辑数学开头
- 29. 制作棋子游戏的逻辑?
- 30. 井字游戏逻辑不起作用