13. 星际争霸之php设计模式--正面模式
题记
==============================================================================
本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();
- ?>
用途总结:正面模式让使用者集中于他所要进行的工作,而不必知道全部细节,或者说提供了一个容易使用的工具,同时屏蔽了底层细节,不必让使用者重新学习。
实现总结:需要一个类似上面地图编辑器的代码类,帮助玩家方便的进行操作。
相关文章:
13. 星际争霸之php设计模式--正面模式的更多相关文章
- 19. 星际争霸之php设计模式--迭代器模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- 16. 星际争霸之php设计模式--组合模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- 15. 星际争霸之php设计模式--策略模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- 14. 星际争霸之php设计模式--状态模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- 12. 星际争霸之php设计模式--模板模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- 10. 星际争霸之php设计模式--原型模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- 9. 星际争霸之php设计模式--代理模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- 17. 星际争霸之php设计模式--职责链模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- 11. 星际争霸之php设计模式--备忘模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
随机推荐
- maven创建web工程,并导入到eclipse中
maven版本:3.1.0,eclipse版本:4.3 JDK:1.7 创建工程名是sa的maven工程 mvn archetype:create -DgroupId=com.bing-Dartifa ...
- [LintCode] Left Pad 左填充
You know what, left pad is javascript package and referenced by React: Github link One day his autho ...
- Linux_文件查看
文件查看 直接查看内容:cat , tac , nl 翻页查看:more , less 指定获取内容:head , tail 查看非纯文字文档:od 文件时间更新与新建:touch cat: 从首行开 ...
- ZK 使用Clients.response
参考: http://stackoverflow.com/questions/11416386/how-to-access-au-response-sent-from-server-side-at-c ...
- Java面试题大全(二)
41.是否可以继承String类? String类是final类故不可以继承. 42.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? switch(expr1 ...
- 火狐插件 Http请求利器 Httprequester
搜索并且下载Httprequester
- 关于UGUI Image Sliced模式的一个BUG。
Unity4.6.2f1 在Android/IOS平台下,Image选择Sliced模式,并且对Sprite设置好Border后,会发现并没有按照预计的 情况进行拉伸. 搜了一下是因为Sprite的G ...
- Adding supplementary tables and figures in LaTeX【转】
\renewcommand{\thetable}{S\arabic{table}} \renewcommand{\thefigure}{S\arabic{figure}} 这样就以Table S1, ...
- Codeforces Round #376 (Div. 2) C D F
在十五楼做的cf..一会一断...比赛的时候做出了ABCF 就没有时间了 之后没看题解写出了D..E是个神奇的博弈(递推或者dp?)看了题解也没有理解..先写了CDF.. C 有n个袜子 每个袜子都有 ...
- Session 知识点再整理(一)基本概念和原理
Session 的概念 Session 和 Cookie 一样,也是针对 HTTP 的局限性而提出的一种保持客户端和服务器端会话连接状态的机制. Session 被称为会话,指用户在进入网站到浏览器关 ...