標籤:
題記
==============================================================================
本php設計模式專輯來源於部落格(jymoz.com),現在已經訪問不了了,這一系列文章是我找了很久才找到完整的,感謝作者jymoz的辛苦付出哦!
本文地址:http://www.cnblogs.com/davidhhuan/p/4248195.html
==============================================================================
星際裡面的戰鬥都是在地圖上進行的,只要我們可以編輯地圖,就可以創造一些新的戰役。可是,星際裡面的地圖繪製相關的代碼如果開放出來,估計大多數萬家都看不懂,更不要說自己編輯地圖了。
待解決的問題:在不瞭解地圖代碼的結構下,我們要讓玩家自己編輯地圖。
思路:對於玩家而言,他熟悉的是水晶礦,高地這些形狀,他和系統通過滑鼠互動。我們可以設計一個地圖編輯器讓玩家使用,而無需讓他研究繪製地圖的細節代碼。
(實際上暴雪公司就是這樣做的,很多玩家甚至暴雪內部人員都是用星際中的地圖編輯器製作地圖)
正面模式(Facade)樣本:
<?php //玩家的滑鼠對象,記錄滑鼠在編輯其中的狀態 class mouse { //滑鼠所處的X軸座標 public static $X; //滑鼠當前能繪製的對象,比如水晶礦,河流等 public static $object; //滑鼠所處的Y軸座標 public static $Y; } //地圖編輯器 class mapEdit { //繪製方法 public static function draw() { //根據滑鼠對象的狀態在地圖上繪製各種東西 //如果是水晶礦 if(mouse::$object == "ore") { //調用水晶礦類的繪製方法,這個類定義在下面,這是真正的繪製,但玩家不必學習他的細節 ore::draw(); } //如果是河流 elseif(mouse::$object == "river") { //調用河流類的繪製方法,這個類定義在下面,這是真正的繪製,但玩家不必學習他的細節 river::draw(); } } } //水晶礦類 class ore { //剩餘的礦,以及其他屬性,這裡略過 public $remain; //繪製水晶礦 public static function draw() { //實際的繪製水晶礦的底層細節代碼 } } //河流類 class river { //繪製河流 public static function draw() { //實際的繪製河流的底層細節代碼 } } //玩家在地圖編輯器上點擊繪製對象列表上的水晶礦對象 mouse::$object = "ore"; //玩家移動滑鼠 mouse::$X = 311; mouse::$Y = 126; //在地圖上點擊,表示繪製當前對象,也就是一個水晶礦 mapEdit::draw();?>
用途總結:正面模式讓使用者集中於他所要進行的工作,而不必知道全部細節,或者說提供了一個容易使用的工具,同時屏蔽了底層細節,不必讓使用者重新學習。
實現總結:需要一個類似上面地圖編輯器的代碼類,協助玩家方便的進行操作。
相關文章:
1. 星際爭霸之php物件導向(一)
2. 星際爭霸之php物件導向(二)
3. 星際爭霸之php設計模式--簡單原廠模式
4. 星際爭霸之php設計模式--Factory 方法模式
5. 星際爭霸之php設計模式--抽象原廠模式
6. 星際爭霸之php設計模式--建造器模式
7. 星際爭霸之php設計模式--中介者模式
8. 星際爭霸之php設計模式--享元模式
9. 星際爭霸之php設計模式--代理模式
10. 星際爭霸之php設計模式--原型模式
11. 星際爭霸之php設計模式--備忘模式
12. 星際爭霸之php設計模式--模板模式
13. 星際爭霸之php設計模式--正面模式
14. 星際爭霸之php設計模式--狀態模式
15. 星際爭霸之php設計模式--策略模式
16. 星際爭霸之php設計模式--組合模式
17. 星際爭霸之php設計模式--職責鏈模式
18. 星際爭霸之php設計模式--觀察者模式
19. 星際爭霸之php設計模式--迭代器模式
?20. 星際爭霸之php設計模式--適配器模式
13. 星際爭霸之php設計模式--正面模式