星际争霸之php正面模式
Jun 07, 2016 pm 05:23 PM
draw
mouse
nbsp
public
static
星际里面的战斗都是在地图上进行的,只要我们可以编辑地图,就可以创造一些新的战役。可是,星际里面的地图绘制相关的代码如果开放出来,估计大多数万家都看不懂,更不要说自己编辑地图了。
待解决的问题:在不了解地图代码的结构下,我们要让玩家自己编辑地图。
思路:对于玩家而言,他熟悉的是水晶矿,高地这些形状,他和系统通过鼠标交互。我们可以设计一个地图编辑器让玩家使用,而无需让他研究绘制地图的细节代码。(实际上暴雪公司就是这样做的,很多玩家甚至暴雪内部人员都是用星际中的地图编辑器制作地图)
正面模式(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(); ?>
登录后复制
用途总结:正面模式让使用者集中于他所要进行的工作,而不必知道全部细节,或者说提供了一个容易使用的工具,同时屏蔽了底层细节,不必让使用者重新学习。
实现总结:需要一个类似上面地图编辑器的代码类,帮助玩家方便的进行操作。
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

OOBELANGUAGE错误Windows 11 / 10修复中出现问题的问题
