篇之前,我要插个题外话,写给刚入门的朋友看看。也接触一段时间的游戏开发了(主要J2ME),虽然时间不是很长,但2年来总结出这么一个现象:发现挺多的游戏都是以一种“状态机”的形式来写的,个人感觉这样的形式并不是很好,一大堆的case…case…看起来很乱,代码可维护性不强。
所谓的“类MVC”模式是啥??? 思想所在: 1、将原本继承于View的“画布”单独抽离出来做成一个UIManager,UIManager只负责管理每一个UI,本身不包含绘图、逻辑处理等代码,它更像是一个容器,装有很多UI在里面,因此有了一种“层”的概念。 2、定义一个UI接口,并定义下图那些方法。让其实现类去重写绘图、逻辑处理、按键事件处理、触碰处理等等方法。这样不同的UI就有自己独有的实现方式,从而将其与“画布”分离。避免一大堆代码都写在“画布”上,必须通过case来判断游戏状态的传统方式。 3、接下来是将游戏中每种状态的UI都去实现UI接口,并重写相应方法。当游戏需要显示某个UI的时候,我们只需要将这个UI put进UIManager的容器中,由UIManager来处理这个UI相应的逻辑。这样大大省去了很多麻烦。 好处所在: 1、将游戏UI与“画布”抽离,方便UI的管理,脱离传统“状态机”机制。如果是团队开发,就可以按功能模块分工,减少相互之间的干扰。 2、UI与UI之间有了一种“层”的概念,切换将变得更加容易。比如RPG游戏中,打开了角色背包,这时要返回游戏。只需要将UIManager最上层的UI从ArrayList中remove即可,当需要再次显示,可以new一个出来put进UIManager。方便至极! 这里还要提到的就是,如果需要在这种模式上添加一些控件(EditText、Button等),就要做一些特殊处理。因为Android UI操作并不是线程安全的,并且这些操作必须在UI线程中执行。可以用Activity.runOnUiThread( Runnable )来处理,具体的这里不再阐述。 最后附上本人基于Android的处女作,求职作品喔…不过还没100%完成。 移植flash的游戏——《前线激光塔-第一次攻击》 6月12日修改 源码说明: 1、完成进度60%左右 2、正是因为这个Demo是状态机的写法,所以才写出此文。没兴趣做下去了,有兴趣的朋友拿去看看。 3、公布源码促进大家的共同进步,互相学习。 4、Android SDK 1.5 16楼修改BinFileInput.java类..增加解密耗时测试. 6月18日修改 由于之前一直忙于搞毕业的一些文件... 没有来的急上传这个游戏的资源... 现在一次性把所有资源都上传吧..前线激光塔资源(含PS文件) && 原图(未处理) 欢迎各界朋友踊跃拍砖 ![]() 今天6.21日..很是伤心、很是心痛..收到学校通知,说我由于选修课没选够,推迟一年毕业! 亏我花了大半年时间,做出这个作品交给学校.....除了伤心之外,我不知道我还能说些什么........... |
-
10.jpg (25.46 KB)
-
11.jpg (18.45 KB)
-
1.jpg (39.75 KB)
-
2.jpg (30.25 KB)
-
3.jpg (26.96 KB)
-
4.jpg (32.23 KB)
-
5.jpg (33.41 KB)
-
6.jpg (43.5 KB)
-
7.jpg (34.45 KB)
-
8.jpg (35.24 KB)
-
9.jpg (46.34 KB)
-
FrontLine.rar (2.77 MB)
源码
![](http://www.eoeandroid.com/images/attachicons/rar.gif)
-
FrontLine.apk (1001.36 KB)
安装包
![](http://www.eoeandroid.com/images/attachicons/binary.gif)
-
前线激光塔资源(含PS文件).rar (5.38 MB)
![](http://www.eoeandroid.com/images/attachicons/rar.gif)
-
原图(未处理).rar (4.56 MB)
![](http://www.eoeandroid.com/images/attachicons/rar.gif)