2009-12-15 71 views
0

我在Python中使用MVC模式實現模塊化AI測試引擎。在桌面應用程序中使用MVC實現GUI菜單

到目前爲止一切正常:AI,鼠標,鍵盤都是控制器,模型是物理引擎,視圖是呈現所有事物的pygame實例。我有一個事件處理程序來處理大多數通信。

現在,我想實現一個菜單系統(設想一個遊戲菜單,您可以選擇加載,保存,退出等)。但是我被封鎖了,我無法弄清楚我該如何實施它。問題是我認爲它應該是部分控制器和部分視圖,但我不確定。

任何想法? 謝謝

回答

1

首先,有幾點談論MVC的時候,人們常常忘記:

  1. 無圖案是一個教條。如果最好的解決方案不是MVC,那可能意味着MVC不適合這個問題。

    • MVC,對於GUI應用程序的OOD風格從MVC,Web應用程序的分層體系結構非常不同。在這種情況下,你需要第一個,關於第二個的文檔和文章可能不是很好的建議。

    • 在'GUI-MVC'中,Model-View-Controller三元組針對每個應用程序模塊;沒有「模型層」,「視圖層」和「控制器層」。

現在,您的具體情況

你可以看到菜單系統作爲額外的模塊,獨立於現有的引擎。這個模塊可以(如果你覺得方便)擁有自己的MVC結構。該模型可以是命令的列表(或樹),視圖是可見的菜單,控制器可以是獲取菜單事件並執行命令的調度器。或者,整個菜單可以只是一個GUI控件;許多現有的控制器之一。像任何GUI控件一樣,它有一個可見的部分。如果您的基礎庫足夠簡單,則用於安裝和管理菜單的代碼可能過於簡單,不值得使用複雜的內部結構。

+0

我喜歡將菜單系統作爲額外模塊的想法。我太受Web應用程序視圖的影響。但即使如此,我已經注意到需要擁有自己的模型 - 視圖 - 控制器結構的模塊。 我將整個應用程序分爲MVC的主要原因是我可以獨立於模型和控制器層而取代未來的視圖。正如你在1中所說的,我不應該試圖強制應用程序進入模式。 謝謝你的回答。 – Ezequiel

相關問題