2012-11-10 96 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

所以,每次用戶按下接下來,您將創建一個命令(或多個命令),並將其提交到模型。執行完所有命令後,模型應該刷新視圖。用戶將有足夠的時間來了解變​​化。自動模式也是可能的(您將生成具有指定延遲的命令)