当前位置:首页 > PHP教程 > php面向对象 > 列表

php设计模式之正面模式实例分析【星际争霸游戏案例】

发布:smiling 来源: PHP粉丝网  添加日期:2022-02-22 11:14:37 浏览: 评论:0 

本文实例讲述了php设计模式之正面模式,分享给大家供大家参考,具体如下:

星际里面的战斗都是在地图上进行的,只要我们可以编辑地图,就可以创造一些新的战役,可是,星际里面的地图绘制相关的代码如果开放出来,估计大多数万家都看不懂,更不要说自己编辑地图了。

待解决的问题:在不了解地图代码的结构下,我们要让玩家自己编辑地图。

思路:对于玩家而言,他熟悉的是水晶矿,高地这些形状,他和系统通过鼠标交互。我们可以设计一个地图编辑器让玩家使用,而无需让他研究绘制地图的细节代码。

(实际上暴雪公司就是这样做的,很多玩家甚至暴雪内部人员都是用星际中的地图编辑器制作地图)

正面模式(Facade)示例:

  1. <?php 
  2.   //玩家的鼠标对象,记录鼠标在编辑其中的状态 
  3.   class mouse  
  4.   { 
  5.     //鼠标所处的X轴坐标 
  6.     public static $X
  7.  
  8.     //鼠标当前能绘制的对象,比如水晶矿,河流等 
  9.     public static $object
  10.  
  11.     //鼠标所处的Y轴坐标 
  12.     public static $Y
  13.   } 
  14.  
  15.   //地图编辑器 
  16.   class mapEdit  
  17.   { 
  18.     //绘制方法 
  19.     public static function draw() 
  20.     { 
  21.       //根据鼠标对象的状态在地图上绘制各种东西 
  22.  
  23.       //如果是水晶矿 
  24.       if(mouse::$object == "ore"
  25.       { 
  26.         //调用水晶矿类的绘制方法,这个类定义在下面,这是真正的绘制,但玩家不必学习他的细节 
  27.         ore::draw();         
  28.       } 
  29.       //如果是河流 
  30.       elseif(mouse::$object == "river"
  31.       { 
  32.         //调用河流类的绘制方法,这个类定义在下面,这是真正的绘制,但玩家不必学习他的细节 
  33.         river::draw(); 
  34.       } 
  35.     } 
  36.   } 
  37.  
  38.   //水晶矿类 
  39.   class ore  
  40.   { 
  41.     //剩余的矿,以及其他属性,这里略过 
  42.     public $remain
  43.  
  44.     //绘制水晶矿 
  45.     public static function draw() 
  46.     { 
  47.       //实际的绘制水晶矿的底层细节代码 
  48.     } 
  49.   } 
  50.  
  51.   //河流类 
  52.   class river  
  53.   { 
  54.     //绘制河流 
  55.     public static function draw() 
  56.     { 
  57.       //实际的绘制河流的底层细节代码 
  58.     } 
  59.   } 
  60.  
  61.   //玩家在地图编辑器上点击绘制对象列表上的水晶矿对象 
  62.   mouse::$object = "ore"
  63.  
  64.   //玩家移动鼠标 
  65.   mouse::$X = 311; 
  66.   mouse::$Y = 126; 
  67.  
  68.   //在地图上点击,表示绘制当前对象,也就是一个水晶矿 
  69.   mapEdit::draw(); 
  70.  
  71. ?> 

用途总结:正面模式让使用者集中于他所要进行的工作,而不必知道全部细节,或者说提供了一个容易使用的工具,同时屏蔽了底层细节,不必让使用者重新学习。

实现总结:需要一个类似上面地图编辑器的代码类,帮助玩家方便的进行操作。

Tags: php正面模式 php星际争霸

分享到: