在android上用c写这个游戏,主要有下面几个方面:
市场:
随着智能时代的脚步越来越近,低端市场的国产手机将要退出历史的舞台,而国产手机主要市场是低端市场。现在低端市场中已经出现了android的身影,价格竟然低到500以下,未来价格降继续下降,那么它将占据大片的低端市场。而android在低配置下运行像水果忍者等游戏将出现卡的现象,还有华丽的3d游戏也需要,为此,用c\c++开发游戏是非常必要的。
技术:
1,在android平台上,先什么都自己动手实现游戏,包括几个方面,图形(点,直线,园等),字(可以更炫的),图像(自定义格式),游戏框架(状态机)。
2,实现之后再去学习cocos2d-x,这样才能更好的理解里面是怎么实现的,用起来更得心应手。
3,初次接触android,了解开发环境,了解系统应用的启动,退出,挂起,恢复,了解系统的控件等。
4,接触一下滚屏空中类游戏怎么开发,同时对比别人用java写的是怎样的。
下面总结一下在开发这个游戏的过程。
1,在ndk自带的例子native-plasma上学习关于系统的一下事件及屏幕缓存,engine_handle_cmd处理系统的启动,退出,低电量等等系统事件
函数engine_handle_input处理触屏及按键的事件。
2,游戏框架,接收系统发过来的消息,多个界面的转换。用枚举来表示每个游戏界面,在大的范围控制这个时候应该执行哪些代码。
mge_init初始化,mge_exit退出,mge_run一直运行的,mge_entry_wnd进界面的
3,第一,二步完成后,还是空空,屏幕上什么都没显示。
1)显示字符串,因为很多小游戏里的文字是很少的,所以可以把字模直接放到程序里,当然这里不利于维护,然后根据字模信息一点点的画出来
2)显示图像,这个时候就需要解码器了,于是实现一个gif的解码器(参考别人以及标准格式文档),只支持正常格式的,不能交错哦,否则会花屏。
4,前面都弄好了就可以开始写游戏了,开始几个界面都是动画界面,2d游戏里,动画是一张一张的图在规定的时间间隔画出来的,这个时间间隔最好让美术人员告知。
时间的控制有两种方法:
一种是定时器;另一种是读取毫秒数,相减即可
5,游戏里面的设计:飞机,敌机,滚屏,子弹,爆炸等等都是单独处理,它们之前的通信最好用消息来,这里就没这样设计,有它们自己的处理函数,分别为init,update,draw,destroy,有些没有destroy。单独实现这些中的任何一个都是容易的,每个容易的实现加载一起就会觉得复杂些了。最后效果如下图
6,这里面有很多细节都没做好,现在觉得没必要加,只是练习而已
书中的java代码及自己的c代码如下
地址:http://download.csdn.net/detail/lansong4/4408903