Cocos2dx 3.0 过渡篇(二十四)死不了的贪食蛇(重力版)

这篇博客主要介绍了使用Cocos2dx 3.0开发的一款不死贪食蛇游戏,作者通过这个例子展示了与2.0版本的不同之处。虽然游戏没有处理蛇撞到尾巴结束的情况,但提供了触摸版的链接供玩家体验。文章末尾附带游戏截图,并请求读者点赞支持。
摘要由CSDN通过智能技术生成
近来cocos2dx的论坛刮起了一阵制作贪食蛇的潮流,我也打算来凑个热闹。不过主要目的还是因为在写3.0过渡篇的系列博客时讲的都是理论,缺少实践。这次就用贪食蛇的例子较为系统的介绍3.0与2.0的一些不同之处。(当然了,有的人肯定会说我是冲沈大海老师的书来了,这种事坚决不能忍!,我慎重说明:我的收货地址是...)
------------------
贪食蛇嘛,大家都懂的,就是那条又长又细、可伸缩自如外加弹性还OK的..蛇啦。

首先介绍下游戏制作流程:
1、游戏中有三个场景,分别是主菜单界面(HelloWorld),帮助界面(GameHelp),游戏界面(GameLayer)。
2、进入游戏场景要处理的事件有:
a、开启重力感应,在onAcceleration()回调函数里判断蛇应该往哪个方向移动;
b、用draw()方法来自定义图层显示内容,如界面中的格子,蛇头,身体,食物等;
c、通过update定时器来实时更新蛇的位置

3、请继续往下看.......

代码实现如下:
先看.h头文件:

#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__


#include "cocos2d.h"


USING_NS_CC;


//枚举类型DIR_DEF,分别标识贪食蛇的移动方向
typedef enum {
	UP=1,
	DOWN,
	LEFT,
	RIGHT
}DIR_DEF;


//蛇每个节点都有自己的移动方向,因此,在节点类SnakeNode的定义中包含了行、列和方向3个成员
class SnakeNode :public cocos2d::Ref
{
public:
	int row;//行
	int col;//列
	int dir;//方向
};


//游戏欢迎画面,这个大家很熟的
class HelloWorld : public cocos2d::Layer
{
public:
    static cocos2d::Scene* createScene();//获取欢迎画面的Scene
    virtual bool init();  
	virtual void onEnter();
	virtual void onExit();
    
    CREATE_FUNC(HelloWorld);
};


//游戏帮助画面
class GameHelp :public cocos2d::Layer
{
public :
	virtual bool init();
	virtual void onEnter();
	virtual void onExit();
	static cocos2d::Scene * createScene();//获取帮助画面
	CREATE_FUNC(GameHelp);
};


//游戏画面
class GameLayer :public cocos2d::Layer
{
public :
	static cocos2d::Scene * createScene();//获取游戏画面
	virtual bool init();
	virtual void onEnter();
	virtual void onExit();


	virtual void draw(Renderer *renderer, const kmMat4 &transform, bool transformUpdated) override;//实现当前Layer的定义


	void onAcceleration(Acceleration* acc, Event* ev
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值