我正在用 Java 实现骑士之旅,目前我将所有内容都混入了一大堆代码中。
我有一个名为 MainFrame 的类,其中包含解决骑士之旅的代码以及菜单的方法等。
我想创建一个名为 KT(用于骑士之旅)的新类,它将包含算法的代码,但我在这样做时遇到了很多问题。
我不想在这里发布代码,因为我不想让我类的人抄袭什么的,所以我只是简单地解释一下。
在 KT 类中,我声明了变量、数组等。我有 printSolution、move、redo(回溯)等方法。
但是我不确定如何绑定(bind)按钮的代码(在 MainFrame 中声明)。例如,我在 print 方法中有一个循环,可以在 8x8 板上打印正确的解决方案。现在我被要求为按钮创建一个新方法,即使我在类 MainFrame 中有按钮。
我有一个 KT k = new KT();然后我启动 MainFrame。那是我做错的地方还是我太笨而无法弄清楚的事情真的很简单?
tl;dr 程序在我将所有内容都放在一个类中时运行良好,但我想制作两个类并使所有内容“看起来”都不错
最佳答案
首先,给您的 KnightTour 类一个真实的名称。就像,你知道的,KnightTour。如果您编写此代码是为了现金,那么下一个必须阅读您的代码的人会想揍那个把类称为 KT 之类的人。
考虑创建此类,以便您可以从 GUI Controller (如按钮和载有菜单的小程序)中使用它。但是,它也可以用于例如基于字符的应用程序,在该应用程序中,您可以在提示符下键入命令并让您的新类评估这些命令。
我建议这样做的原因是因为它会强制您创建您的 KnightTour 类,以便它纯粹是您应用程序的“业务逻辑”。我的意思是你的 KnightTour 类不应该知道任何关于按钮、菜单、GUI、文本界面或类似的东西。您需要根据必须完成的任务来考虑您的 KnightTour 类。
我真的不知道 KnightTour 是做什么的。所以我将抛出一些关于它可能需要支持什么样的功能的想法。我假设一切都发生在棋盘上?
- 获取给定棋盘位置 (x,y) 的状态(已占用、未占用)
- 在给定位置 (x,y) 上放置一个棋子(棋子枚举器)
- 验证棋子的放置(棋子枚举器,位置 x,y)
- 建议移动,返回一个带有棋子枚举器和位置的建议对象
- 重置看板以重新开始。
现在,当您按下一个显示“在 5,5 上放置一个棋子”的按钮时,您将在 GUI Controller 中处理该事件,然后调用“设置棋子”方法(上面的#2)来执行此操作工作。如果您有一个基于角色的应用程序,当您键入“将骑士放在 5,5”时,您将解析该文本,然后调用上面的 #2。关键是这两个用户界面都访问相同的 KnightTour 方法来完成相同的工作。
关于java - 将另一个类添加到我的 java applet 程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11337073/