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 相关文章推荐
分页显示Oracle数据库记录的类之二
Oct 09 PHP
PHP学习之字符串比较和查找
Apr 17 PHP
PHP人民币金额数字转中文大写的函数代码
Feb 27 PHP
基于PHP异步执行的常用方式详解
Jun 03 PHP
Youku 视频绝对地址获取的方法详解
Jun 26 PHP
PHP计算指定日期所在周的开始和结束日期的方法
Mar 24 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
Jan 03 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
May 09 PHP
PHP使用mysqli操作MySQL数据库的简单方法
Feb 04 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
Mar 10 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
May 05 PHP
laravel入门知识点整理
Sep 15 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远程采集图片详细教程
2014/07/01 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
Joomla数据库操作之JFactory::getDBO用法
2016/05/05 PHP
php中钩子(hook)的原理与简单应用demo示例
2019/09/03 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
JavaScript监测ActiveX控件是否已经安装过的代码
2008/09/02 Javascript
jQuery 1.3 和 Validation 验证插件1.5.1
2009/07/09 Javascript
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
JQuery工具函数汇总
2015/06/15 Javascript
ionic2自定义cordova插件开发以及使用(Android)
2017/06/19 Javascript
vue做网页开场视频的实例代码
2017/10/20 Javascript
微信小程序录音与播放录音功能
2017/12/25 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
Vue隐藏显示、只读实例代码
2018/07/18 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
JS实现轮播图效果
2020/01/11 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
Python网络爬虫与信息提取(实例讲解)
2017/08/29 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
Python打印输出数组中全部元素
2018/03/13 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
详解Python yaml模块
2020/09/23 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
惠普加拿大在线商店:HP加拿大
2017/09/15 全球购物
Footshop罗马尼亚:最好的运动鞋选择
2019/09/10 全球购物
大学生怎样进行自我评价
2013/12/07 职场文书
社团活动策划书范文
2014/01/09 职场文书
大型晚会策划方案
2014/02/06 职场文书
公司经理聘任书
2014/03/29 职场文书
社团活动总结
2014/04/28 职场文书
2014年医院党建工作总结
2014/12/20 职场文书
房屋质量投诉书
2015/07/02 职场文书
《雪地里的小画家》教学反思
2016/02/16 职场文书