1

我正在制作一款游戏,其中将实现三款游戏。我从一个类中开始我的代码,现在我想将它移动到 MVC 格式中,但我遇到了错误。我开始在 GameView 类中编写所有代码,现在我想将一些代码从这个类移动到 SView 类。问题是我已经在 GameView 类中初始化了 JFrame,当我将代码移动到 SView 类时它找不到变量帧。因此,有人告诉我将其制成面板然后移动它,但这只会弄乱我的游戏。

4

2 回答 2

1

你必须以不同的方式组织事情。需要考虑的一些事项:

  • GameView你的主窗口吗?让它如此GameView extends JFrame
  • SView面板吗?让它如此SView extends Panel

另一件要考虑的事情:SView是您想要添加到您的某个面板GameView,但SView添加自身不是您的责任。相反,只需在这两个类 fe 之外的某个地方实例化和组装这些组件:

GameView gameView = new GameView();
gameView.add(new SView());

您也可以在其构造函数代码中GameView添加 a 。new SView()

无论如何,这里的要点是组件不应该关心将自己添加到其父级,而只需创建自己的内容/子级。

祝你好运。

于 2012-04-14T15:10:19.100 回答
1

一些建议:

  • 主 GUI 将使用 CardLayout,因此您可以轻松交换 JPanel。
  • 选择游戏菜单的主要功能是交换 JPanel,因此选择的游戏被可视化,然后初始化选择的游戏。
  • 单独处理每个游戏。为每个单独的游戏类设置一个 JPanel 来举办游戏。为每个游戏类提供一个用于测试的主要方法,该方法将创建一个 JFrame,创建一个游戏类实例,将实例的 JPanel 放入 JFrame,初始化游戏并显示它。
  • 游戏自行运行后,尝试将其添加到更大的 GUI,即可以显示多个游戏的 GUI。
  • 考虑让每个游戏类为通用功能实现一个通用接口。例如,您可以为接口提供每个游戏类将覆盖的 initialize() 方法。
  • 每个游戏类都需要基于 MVC,以便它有一个模型、一个与模型交互的控制类和一个在 JPanel 上显示模型状态的视图类,如上所述。
于 2012-04-14T16:02:37.267 回答