我目前正在研究树搜索的模拟,我正在尝试设计一个 gui 来显示构建的搜索树。我正在使用观察者设计模式,但似乎遇到了问题,因为 gui 是不同的执行线程,所以搜索似乎在 gui 绘制以说明模拟之前完成。无论如何,搜索和显示搜索的 gui 是否可以同步,以便 gui 在绘制时反映搜索的状态。
问问题
867 次
1 回答
1
首先你应该注意到人类很慢:)我会说一步一步的方法更适合,所以你需要提供以下功能:
- 向前一步
- 后退一步
- 开始/停止执行
- 灵活的模拟速度
让我们以一些动画图像为例(source):
这个例子很简单,但是你可能会注意到你无法控制执行的事实有点烦人。无论如何,为了提供良好的可视化,您必须从处理循环设计开始。这似乎很简单:
- 更新树
- 渲染它
- 等待一段时间让用户注意到差异
对你来说,它看起来像一个简单的游戏循环吗?
我建议如下:
- 定义一个模型来保存一个树状态
- 使用命令模式实现更新模型(树)的逻辑
- 实现命令队列和命令执行器
- 让视图接收模型更新事件
因此,每次用户按下 Next 时,您都会创建一个命令(或多个命令)并将其提交给模型。执行完所有命令后,模型应该刷新视图。用户将有足够的时间来了解更改。自动化模式也是可能的(您将生成具有指定延迟的命令)
于 2012-11-11T01:28:09.770 回答