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


Posted in PHP onMarch 24, 2020

本文实例讲述了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 相关文章推荐
第五节--克隆
Nov 16 PHP
PHP 开发工具
Dec 06 PHP
php 字符串函数收集
Mar 29 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
Jun 24 PHP
php入门学习知识点六 PHP文件的读写操作代码
Jul 14 PHP
检查php文件中是否含有bom的函数
May 31 PHP
简单的cookie计数器实现源码
Jun 07 PHP
php二维数组排序方法(array_multisort usort)
Dec 25 PHP
PHP判断上传文件类型的解决办法
Oct 20 PHP
PHP7中I/O模型内核剖析详解
Apr 14 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
Feb 21 PHP
PHP的重载使用魔术方法代码实例详解
Feb 26 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 #PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 #PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 #PHP
php设计模式之代理模式分析【星际争霸游戏案例】
Mar 23 #PHP
php设计模式之享元模式分析【星际争霸游戏案例】
Mar 23 #PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
Mar 23 #PHP
PDO实现学生管理系统
Mar 21 #PHP
You might like
PHP中str_replace函数使用小结
2008/10/11 PHP
ajax完美实现两个网页 分页功能的实例代码
2013/04/16 PHP
改写函数实现PHP二维/三维数组转字符串
2013/09/13 PHP
PHP获取数组最大值下标的方法
2015/05/12 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
2018/10/18 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
百度 popup.js 完美修正版非常的不错 脚本之家推荐
2009/04/17 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
javascript实现简单的on事件绑定
2016/08/23 Javascript
Vuejs第十三篇之组件——杂项
2016/09/09 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
JavaScript编写棋盘覆盖代码详解
2017/08/28 Javascript
Python实现基于HTTP文件传输实例
2014/11/08 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
2018/01/20 Python
python sklearn库实现简单逻辑回归的实例代码
2019/07/01 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
通过自学python能找到工作吗
2020/06/21 Python
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
掌上明珠Java程序员面试总结
2016/02/23 面试题
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
药学专业大学生个人的自我评价
2013/11/04 职场文书
汽车销售顾问求职自荐信
2014/01/01 职场文书
《要下雨了》教学反思
2014/02/17 职场文书
小学教学随笔感言
2014/02/26 职场文书
小学母亲节活动方案
2014/03/14 职场文书
2014年廉洁自律承诺书
2014/05/26 职场文书
人民调解协议书范本
2014/10/11 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
刘公岛导游词
2015/02/05 职场文书
停车场管理制度范本
2015/08/05 职场文书
Go语言编译原理之变量捕获
2022/08/05 Golang