题记
==============================================================================
本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设计模式--工厂方法模式

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设计模式--适配器模式

转载于:https://www.cnblogs.com/davidhhuan/p/4248195.html

13. 星际争霸之php设计模式--正面模式相关推荐

  1. 12. 星际争霸之php设计模式--模板模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  2. 15. 星际争霸之php设计模式--策略模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  3. 4. 星际争霸之php设计模式--工厂方法模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  4. 7. 星际争霸之php设计模式--中介者模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  5. 星际争霸php,php设计模式之建造器模式分析【星际争霸游戏案例】

    本文实例讲述了php设计模式之建造器模式.分享给大家供大家参考,具体如下: 星际里面有不少的任务关,也可以自己编辑地图,画面上有各种地形,建筑和部队. 这存在一个问题,初始化画面的流程很乱. 待解决的 ...

  6. 星际争霸php,php设计模式之原型模式分析【星际争霸游戏案例】

    本文实例讲述了php设计模式之原型模式.分享给大家供大家参考,具体如下: 我们一般用new来新增对象,不过很多时候新增一个对象需要一些工作.而星际里面往往会新增某些类的大量的对象,比如新增很多机枪兵和 ...

  7. 2. 星际争霸之php面向对象(二)

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  8. DeepMind:星际争霸2:强化学习新挑战(翻译)

    DeepMind:StarCraftII:A New Challenge for Reinforcement Learning 星际争霸2:强化学习新挑战 原文下载链接:https://deepmin ...

  9. 设计模式 建造者模式_设计模式:建造者

    设计模式 建造者模式 有时需要在应用程序中创建一个复杂的对象. 一种解决方案是Factory模式,另一种是Builder设计模式. 在某些情况下,您甚至可以结合使用这两种模式. 但是在本文中,我想研究 ...

最新文章

  1. Flask-RESTful的简单使用
  2. 东南亚“最能喝”的国家:越南取消禁止在线销售烈性酒禁令
  3. Java的HttpURLConnection通过POST请求中文乱码
  4. 服务器即将维护完成,新一轮大服务器即将开启:3月26日维护8小时
  5. [詹兴致矩阵论习题参考解答]习题1.10
  6. pytorch 生成随机数Tensor的方法 torch.rand torch.randn torch.normal torch.linespace
  7. 使用Flink实现索引数据到Elasticsearch
  8. P-Called-Party-ID头域
  9. 怎样在计算机桌面上安装驱动器,怎么用韩博士驱动助理安装电脑驱动
  10. Mybatis源码分析(一) | 如何调试Mybatis源码
  11. 浅谈LANG_ISO 639-1世界语言列表检索
  12. 《2021企业数智化转型升级创新服务企业》榜重磅发布
  13. 亲测有效——C#制作图片Button
  14. Android APT不能自动生成文件
  15. 抖音如何推动音乐的流行?看完这篇文章你就明白了
  16. 关于QA QE QC 测试职位的区别
  17. TextOut 字符串输出
  18. docker环境下orientdb的数据库导入与导出
  19. 【机房合作】——数风流人物,还看今朝
  20. 湖北黄冈计算机考试,湖北黄冈2020年注会什么时候考试?是计算机考试吗?

热门文章

  1. Spring @Value转义冒号(:)的默认值
  2. IntelliJ IDEA类注释模板设置
  3. Android开发笔记(二)颜色的使用
  4. Javascript设计模式之——代理模式
  5. git使用之搭建git仓库
  6. kubernetes apiserver认证 1
  7. MySQL 5.6 for Windows 解压缩版配置安装(转)
  8. Alipay Direct Bankpay 支付宝网银支付 (For OpenCart 2.x)
  9. 表格无边框,有内框,在table嵌套时,防止出现重复边线
  10. 我的2006年,我的博客站