专注于WEB技术的IT博客

1009月

分类:设计模式

浏览2829

星际里面我们可以下载别人制作的地图,或者自己做地图玩。 我们在选择玩哪张地图的时候,可以看到游戏列出当前地图包里面的地图或地图包的名字。 虽然地图和地图包是通过文件和文件夹区分的,但是我们开发的时候,总希望能使用对象来进行抽象。 那么对于地图和地图包这两个相关的对象,我们能不能简化他们之间的区别呢?

2707月

分类:设计模式

浏览2971

我们在玩星际任务版或者单机与电脑对战的时候,有时候会突然要离开游戏,或者在出兵前面,需要存储一下游戏。 那么我们通过什么办法来保存目前的信息呢?而且在任何时候,可以恢复保存的游戏呢? 待解决的问题:保存游戏的一切信息,如果恢复的时候完全还原。 思路:建立一个专门保存信息的类,让他来处理这些事情,就像一本备忘录。

0807月

分类:设计模式

浏览2358

星际的很多兵种,都有至少一项特殊技能。而且有些兵种的技能是相同的,比如虫族部队都会恢复血。 如果按照一般的思路,把技能的操作和控制作为方法,放在每个兵种的定义类来实现,代码会重复,也不容易修改。 那我们就会考虑用继承的办法,比如我们可以设计一个虫族的基类,里面有受伤后血恢复的方法。

1106月

分类:设计模式

浏览2025

其实从实质来讲,任何升级一般只要知道某种建筑是否存在就行了,因此我们不必让他们多对多联系,设置一个中介者就行了。 这就好像我们不管买什么东西,到超市就可以了,而厂家也只要和超市联系,不必和我们每个消费者直接接触。 待解决的问题:不要让各个建筑互相联系,减少复杂程度。

1804月

分类:设计模式

浏览2290

如果按照一般的思路,每次我们对一个小兵进行操作的时候,比如一辆坦克,我们都要用if判断他的状态,这样代码中会有很多的if,else或者swith。 不过我们可以发现,我们需要的是他在某个状态下的行为,如果把这些行为按照状态封装起来,就可以减少大量的判断。

1204月

分类:设计模式

浏览2118

那么过多的固定细节(用数组存放)以及依赖细节(对数组循环),将使得代码的关联性变得很高。 待解决的问题:把循环处理的事务变的抽象。 思路:关键是对农民的循环,用数组处理只是一种方式,我们考虑抽象的数组,而不是具体的数组。

1104月

分类:设计模式

浏览2374

待解决的问题:我们能否减少new的使用,同时避免需要新增对象的时候,了解对象的类名。 思路:php5提供了克隆方法,我们可以新增一个对象,然后每次需要新增和她同类的对象,克隆他就可以了。

0804月

分类:设计模式

浏览2086

星际的战斗达到后面,地图里面的部队很多,如果我们把每个兵的图像动画和属性值作为一个对象的话,系统的内存里会消耗极大。 我们在玩的时候会发现,因为星际里面的种族只有三个,其实兵种只有几十个。 虽然每个独立的士兵剩余的血不同,但是同一兵种的图像动画是一样的,即使不同的玩家,只是不同的颜色。比如每个人族的机枪兵。

3103月

分类:设计模式

浏览2122

星际里面有不少的任务关,也可以自己编辑地图,画面上有各种地形,建筑和部队。 这存在一个问题,初始化画面的流程很乱。 待解决的问题:完成初始化画面的工作,同时尽量减少各种绘制细节的耦合。 思路:既然星际的画面由几个部分组成:地图(就是地形和矿产),建筑,部队。那么我们把他们看成是零件,组装起来就是最后的产品(整个画面)。

2903月

分类:设计模式

浏览2249

星际争霸如果是多人对战模式,就会遇到一个问题:如何降低网络延时和负担。 为了确保数据的一致性,我们应该将每个玩家的发生变化的数据不停的传送到开地图的主机进行保存,一旦任何某个玩家的客户机读取数据,就必须向主机请求数据。