用cocos2d 2.1制作一个过河小游戏(1): 总概

时间:2023-02-09 09:07:17

        今天老师布置了任务,要大家分小组设计“牧师与恶魔过河”的游戏并使用cocos2d框架实现。虽然之前自己一直有跟随兴趣学习iOS开发,但是先前所有的开发都只是基于简单应用的,很少涉及游戏方面的开发。这次作业主要还是熟悉一下cocos2d框架和API的使用。

        做这个游戏前前后后大概花了三天的时间,队伍里几个同学也各自负责不同的工作。而我主要是负责代码的撰写。几天下来有些小收获吧。对于长期开发cocos2d的高手来说这些都只是小case了,不过对于新手来说有些东西还是值得铭记与学习的。于是想把一下制作过程的心得和教训写下来。

        好了废话不多说,先来看一下最后整体的画面效果:

用cocos2d 2.1制作一个过河小游戏(1): 总概

(图片都是美工手绘的,挺给力的...)


游戏规则其实很简单:开始的时候右岸上有3个牧师和3魔鬼。河岸边有一艘船,船上一次只能坐2个人(牧师和魔鬼统称为人)。而且船上必须至少要有一个人船才能开动。在每个岸边,牧师的人数都必须大于或等于魔鬼的人数(如果船在其中的一边,那个那边的人数统计也包括船上的人),否则,牧师就会被魔鬼杀死。游戏任务就是要在3分钟内将3个牧师和3个魔鬼运送到对岸。


游戏的制作主要包括几个CCSprite类的设计与实现、逻辑层的实现和后期的音效添加。这次我先说一下几个CCSprite的设计思路吧。下面是用EA画出的类图:(因为老师是教UML的,交的作业也必须体现UML的设计,所以就得画图啦...其实我觉得游戏这么简单,不画关系也不是很大的样子)

用cocos2d 2.1制作一个过河小游戏(1): 总概

        从图中看出,基本思路就是:整个游戏只有一个CCScene,这个CCScene里面只有一个CCLayer,称为BaseLayer,之后所有的CCSprite都是添加在BaseLayer里面的。BaseLayer里包含了许多控制函数,用来对游戏的每个状态进行监控、操作、胜负判断等操作。

        游戏中有一条船,为boat, 有两个河岸,分别为rightBank和leftBank,分别用于记录右岸和左岸站着的精灵的情况。人物分为牧师(Priest)与魔鬼(Devil),各有三个,都继承自父类PersonSprite。整个架构其实是挺简单的。

        下一节主要讲一下各个CCSprite的实现思路。