0

我目前正在研究树搜索的模拟,我正在尝试设计一个 gui 来显示构建的搜索树。我正在使用观察者设计模式,但似乎遇到了问题,因为 gui 是不同的执行线程,所以搜索似乎在 gui 绘制以说明模拟之前完成。无论如何,搜索和显示搜索的 gui 是否可以同步,以便 gui 在绘制时反映搜索的状态。

4

1 回答 1

1

首先你应该注意到人类很慢:)我会说一步一步的方法更适合,所以你需要提供以下功能:

  1. 向前一步
  2. 后退一步
  3. 开始/停止执行
  4. 灵活的模拟速度

让我们以一些动画图像为例(source):

在此处输入图像描述

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

  1. 更新树
  2. 渲染它
  3. 等待一段时间让用户注意到差异

对你来说,它看起来像一个简单的游戏循环吗?

在此处输入图像描述

另请在此处查看一些详细信息

我建议如下:

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

在此处输入图像描述

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

于 2012-11-11T01:28:09.770 回答