2012-11-10 136 views
0

我目前正在进行树搜索的模拟,我正试图设计一个gui来显示搜索树。我使用Observer设计模式,但似乎遇到了问题,因为gui是一个不同的执行线程,搜索似乎在gui描绘模拟之前完成。无论如何, 搜索和显示搜索随着它的发展可以同步,以便反映搜索的状态,当它画。模拟的GUI渲染

+1

请发送您的代码 – Aubin

+2

'SwingUtilities.invokeAndWait' – MadProgrammer

回答

1

首先,你应该注意到人类是慢:)我想说的步步逼近更适合的,所以你需要提供以下功能:

  1. 一步
  2. 退步
  3. 启动/停止执行
  4. 灵活的仿真速度

让我们用一些动画形象为例E(source):

enter image description here

这个例子很简单,但你可能会注意到这个事实,你无法控制的执行是有点讨厌。无论如何,为了提供良好的可视化,您必须从处理循环设计开始。这似乎是很简单的:

  1. 更新树
  2. 使其
  3. 等待一段时间,让用户发现其中的差别

它看起来像一个简单的游戏环路您?

enter image description here

请也看到一些细节here

我建议如下:

  1. 定义了一个模型来保持树的状态
  2. 实现逻辑更新模型(树)使用Command pattern
  3. 执行命令队列和命令执行程序
  4. 让视图接收模式更新的事件

enter image description here

所以,每次用户按下接下来,您将创建一个命令(或多个命令),并将其提交到模型。执行完所有命令后,模型应该刷新视图。用户将有足够的时间来了解变​​化。自动模式也是可能的(您将生成具有指定延迟的命令)