我正在开发一个用于教学图形的支持软件(算法,如旅行商问题,图形着色等等),我将允许用户执行算法"步骤通过步骤",以便用户可以控制算法的执行并有时间观察变化。
我想了解如何实施"一步一步执行"在爪哇... 如果有图书馆或任何人已经实施了类似的东西并且可以共享代码。
谢谢:)
他们无法访问de code或IDE,他们将成为我程序的前端用户
用户界面就是这样,在这里添加按钮到下一步,暂停等等:
答案 0 :(得分:1)
一个选项可能是使用Java Debug Interface (JDI)。 Oracle提供these examples。
然而,这不是我会做的。隐形Java源代码的一步可能与视觉更改无关。 (另外,我还没有使用过JDI,也不知道它会有多复杂。)
我会考虑向用户提供伪代码。在内部,我会保持一个并行的 abstract syntax tree,,这样每个节点代表(并且可以执行)一步。一个伪代码算法步骤可能对应于多个Java语句。 (如果您并行编写伪代码和AST,则不必编写解析器。)
你需要一个类来遍历树,执行节点。保持执行状态,包括运行,踩踏或暂停的状态。步行者需要观察状态并相应地表现。
walker需要在工作线程中运行,以便在执行算法时按下要运行,步进和暂停的UI按钮。