android游戏开发的框架设计

篇之前,我要插个题外话,写给刚入门的朋友看看。也接触一段时间的游戏开发了(主要J2ME),虽然时间不是很长,但2年来总结出这么一个现象:发现挺多的游戏都是以一种“状态机”的形式来写的,个人感觉这样的形式并不是很好,一大堆的case…case…看起来很乱,代码可维护性不强。
  1. switch (state) {
  2.        case 1:
  3.        brake;
  4.        case 2:
  5.        brake;
  6.           ....
  7. }
复制代码
因此我提出一种“类MVC”模式,用于解决这一问题,也是本贴的目的所在。在此借本论坛与大伙一同讨论,共同进步!注:我的方式并非最恰当的,欢迎各位朋友提出建议


所谓的“类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)

 

10.jpg

11.jpg (18.45 KB)

 

11.jpg

1.jpg (39.75 KB)

 

1.jpg

2.jpg (30.25 KB)

 

2.jpg

3.jpg (26.96 KB)

 

3.jpg

4.jpg (32.23 KB)

 

4.jpg

5.jpg (33.41 KB)

 

5.jpg

6.jpg (43.5 KB)

 

6.jpg

7.jpg (34.45 KB)

 

7.jpg

8.jpg (35.24 KB)

 

8.jpg

9.jpg (46.34 KB)

 

9.jpg

FrontLine.rar (2.77 MB)

 

 

源码

FrontLine.apk (1001.36 KB)

 

 

安装包

前线激光塔资源(含PS文件).rar (5.38 MB)

 

 

原图(未处理).rar (4.56 MB)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值