php設計模式之正面模式例項分析【星際爭霸遊戲案例】
阿新 • • 發佈:2020-03-26
本文例項講述了php設計模式之正面模式。分享給大家供大家參考,具體如下:
星際裡面的戰鬥都是在地圖上進行的,只要我們可以編輯地圖,就可以創造一些新的戰役。可是,星際裡面的地圖繪製相關的程式碼如果開放出來,估計大多數萬家都看不懂,更不要說自己編輯地圖了。
待解決的問題:在不瞭解地圖程式碼的結構下,我們要讓玩家自己編輯地圖。
思路:對於玩家而言,他熟悉的是水晶礦,高地這些形狀,他和系統通過滑鼠互動。我們可以設計一個地圖編輯器讓玩家使用,而無需讓他研究繪製地圖的細節程式碼。
(實際上暴雪公司就是這樣做的,很多玩家甚至暴雪內部人員都是用星際中的地圖編輯器製作地圖)
正面模式(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(); ?>
用途總結:正面模式讓使用者集中於他所要進行的工作,而不必知道全部細節,或者說提供了一個容易使用的工具,同時遮蔽了底層細節,不必讓使用者重新學習。
實現總結:需要一個類似上面地圖編輯器的程式碼類,幫助玩家方便的進行操作。
更多關於PHP相關內容感興趣的讀者可檢視本站專題:《php面向物件程式設計入門教程》、《PHP陣列(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算子用法總結》、《php字串(string)用法總結》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧彙總》
希望本文所述對大家PHP程式設計有所幫助。