Cocos2dx 3.0 过渡篇(二十五)死不了的贪食蛇(触摸版)

来源:未知 责任编辑:责任编辑 发表时间:2014-04-20 03:36 点击:
上一篇写的贪食蛇的重力感应控制版,这一篇就讲下触摸控制版吧。额,也不知道写了那个贪食蛇教程到底有没有获得沈老师的书,如果没有的话,看我不拿西瓜刀砍掉 偶尔E往事 的那啥!

触摸版与重力版的代码大部分都一样,不一样的地方就是要将打开重力感应换成创建一个触摸监听
。过程如下:

1、在GameLayer的init()中创建一个触摸监听事件
//初始化游戏层
bool GameLayer::init()
{
	if ( !Layer::init() )
	{
		return false;
	}

	auto labhelp = LabelTTF::create("this is game","宋体",15);
	labhelp->setPosition(Point(0,340));
	this->addChild(labhelp);

	auto labback = LabelTTF::create("MainMenu","宋体",15);
	auto miback = MenuItemLabel::create(labback,[](Ref* sender)
	{
		Director::getInstance()->replaceScene(HelloWorld::createScene());
	});
	miback->setPosition(Point(360,200));


	//接受触摸事件
	auto listener = EventListenerTouchOneByOne::create();
	listener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan, this);//指定触摸的回调函数    
	listener->onTouchMoved = CC_CALLBACK_2(HelloWorld::onTouchMoved, this);  
	listener->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded, this);
	_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);//将listener放入事件委托中  

	//初始化蛇头坐标和食物的坐标
	sHead = new SnakeNode();
	sHead->row = rand()%10;
	sHead->col = rand()%10;


	//初始化食物的坐标
	sFood = new SnakeNode();
	sFood->row = rand()%10;
	sFood->col = rand()%10;

	//执行定时任务
	this->schedule(schedule_selector(GameLayer::logic01),0.5);
	return true;
}

2、在touchBegan()中检测触摸的位置,
bool GameLayer::onTouchBegan(Touch* touch, Event  *event)
{
	auto p = touch->getLocation();//获取当前的触点


	int nowrow;	//当前用户触摸的行
	nowrow = ((int)p.y)/32;
	int nowcol;	//当前用户触摸的列
	nowcol = ((int)p.x)/32;


	//如果触点的Y坐标相对于蛇头的Y坐标 大于 触点的X坐标相对于蛇头的X坐标,那么是上下移动,否则左右移动
	if( abs(nowrow - sHead->row) > abs(nowcol - sHead->col)) //上下移动
	{
		if(nowrow > sHead->row)
		{
			sHead->dir = DIR_DEF::UP;
		}
		else
		{
			sHead->dir=DIR_DEF::DOWN;
		}


	}
	else    //左右移动
	{
		if(nowcol > sHead->col)
		{
			sHead->dir=DIR_DEF::RIGHT;
		}
		else
		{
			sHead->dir=DIR_DEF::LEFT;
		}
	}
	CCLOG("rand %d",rand());
	CCLOG("you touchbegan%f,%f",p.x,p.y);


	return true;
}

3、第三点只是凑字数的。感觉写这么点东西对不起大家。所以祝大伙身体健康,万事如意,马年吉祥,合家欢乐, 幸福安康,大吉大利,早生贵子。早日成双,摆脱右手...啊呸,脱离单身!

尊重原创,转载请注明来源:http://blog.csdn.net/start530/article/details/23784985

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • cocos2d-x学习笔记(19)--label 、label atlas
    • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
    • Cocos2d-x学习(一):HelloWorld
    • cocos2dx在xcode下开发,编译到android上(2)
    • cocos2d 设置屏幕默认方向
    • Cocos2d-x 2.0 之 Actions “三板斧” 之一
    • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
    • cocos2d-x学习笔记(18)--游戏打包(windows平台)
    • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1