这几天一直都在作一个捕鱼游戏Demo,大概花掉了我快一个礼拜的时间。游戏主体是使用的cocos2d-x高级开发教程里面提供的小部分框架基本功能。而后本身加入全部的UI元素和玩法。变成了一个体验不错的捕鱼游戏。现把这几天遇到的全部状况总结以下:python
1.捕捉到鱼时发现,鱼的移动动做没有移除,可是实际却进行了鱼对象的移除操做:面试
解决:首先考虑是否是本身没有移除,存储鱼的数组会不会过小,而致使鱼对象混乱的状况。 数组加大无效果。考虑是否是因为引用计数的缘由,被其余对象引用,因此致使移除不了,经过进行打引用计很多天志发现,并不是此状况,由于只有部分鱼不能移除继续游动的动画,而全部的引用计数却都相等。在“这不科学”的理论下,最终想到了多是本身进行鱼动画播放的时候,有重叠。因此原本已经移除掉了鱼对象,可是因为重叠会致使鱼对象并无被移除的假象。坑的我调试了一个下午。这是最大的bug.数组
2.因为给鱼存放的数组CCArray没有对已经移除屏幕的鱼对象进行清理,致使数组线性增大,后来修改,保证数组维持在5到30之间。也即屏幕中维持相对应的鱼的数量。缓存
3.移植到安卓平台,登录进去发现闪退,后来发现是因为我没有在进度条下进行动画缓存加载,而是直接写在进度条执行完切换场景的时候。直接就给跪了。app
4.安卓登录进去发现刚开始只有部分有声音,有些后来才有,知道是本身没有对声音预加载彻底。框架
5.遇到了随机数不随机的状况,发现我使用随机数的时候,不论是CCRAND_0_1,rand,srand 只要时间点大概相差一秒之内,每次随机出来的都是固定的一个数。网上找资料发现有一个函数能够不禁时间限制,可是却只能用在ipone开发里面吧。 函数
6.音效和音乐的bug,虽然本身设置了音乐和音效不可播放,可是只要我使用playbackgroundmusic,effect就又会重启音乐和音效。因此在每个须要play的地方都提早判断当前是否设置为能够播放状态。动画
7.使用UserDefault.xml文件的时候,第一次是默认什么也没有的,而第二次运行的话都把第一次的数据保存了,因此这里须要进行一次分支判断,当前是否为第一次使用。能够在数据里面设置一个key,只有能读到key则证实不是第一次了。不然没读到默认返回FALSE。网站
8.鱼和网的刚体是很是容易碰撞的,可是抓鱼却不必定每次都能抓到,并且还有根据鱼的大小和网的大小来计算抓鱼几率,因此这里想到一种办法,将鱼由小到大由0.5趋近于0,网由小到大从0趋近于0.5而后再二者相加获得抓鱼几率,可是发现也仍是比较容易抓,因此再进行一次随 机数判断,就能够经过这个随机数来设置抓鱼的难易程度了。google
9当鱼被抓到的时候要执行各类动画:鱼被抓住时的动画,出现金币并移动到炮台位置的合并动画这里要用到CCSpawn,显示加多少金币的动画。
10.切记当设置参数到 CCUserDefault时,必定要记得调用flush,否则数据不会保存,最好每次set完就进行保存。游戏退出时确定须要保存好,这里是个大坑。
11.最后是移植到安卓的天坑,首先本身使用书上的cocos2d-x的模板,就只能用相对于的版本,发现时2.0.3的,都是两年前发布的版本了,网上都搜半天,最后在一个相似的官方网站搜到了,却发现下载不了。是网址上有google字样么,我大天朝。木有办法,看移植到2.1.4可行不,发现各类改,木有办法,放弃。那就向下找,发现下载了一个cocos2d-1.0.1-x-0.13.0-beta版本,结果也是报错,感受会不成功,仍是放弃。最后只能下载2.0.3版本,木得办法,可是奇迹发生了。我把网址放到QQ上发给同窗时,却发现能够在会话框里面显示下载。企鹅真是个人恩人啊。终于把2.0.3版本下载,发现编译成安卓,还要使用cygwin,幸亏我以前有编译过,ndk,sdk,adt都妥妥的配置好了,而三次我用3.0版本的编译,只须要使用python文件,轻松搞定,而此次须要各类改参数和配置。最终花了一天时间,终于生成了.o文件,可是但我编译到安卓上生成apk以后妥妥的给我闪退了。orz 由于以前使用的捕鱼框架自带的一些文件,发现不少都缺失了。致使了这个问题。后面直接使用2.0.3版本的已编译好了的HelloCpp进行更改,添加Classes和Resource文件。最后生成apk文件,这里又有一个坑,但我生成好时,我就想在ADT里面编译查看,发现老是报:Not Such file or directory (2) 。觉得是本身代码的问题,各类看,后来发现直接把apk拷贝到真机,竟然能运行。啊,又一大坑。
好了,到这里捕鱼项目就弄好了,虽然各类曲折,可是能编译到安卓上并运行,仍是很happy的,毕竟是2.0.3版本的,早知道就写的时候把框架搬到3.0+的版本上,移植就快多了。详细的移植教程我就不写了, 网上已经有不少教程了。好比这个:cocos2dx环境配置及打包apk
源码的话,过段时间再贴上来吧。Demo是但愿面试的时候可以用上,(*^__^*) 嘻嘻…… 最后贴上个人 游戏界面吧~
UI都是本身网上找的,我不会告诉你能够解压别人发布的apk文件获取一些UI的 :)