cocos2d-x 3.3 之卡牌设计 NO.1 点击选取卡牌
来源:互联网 发布:淘宝网甩棍多少钱一根 编辑:程序博客网 时间:2024/04/30 08:28
接下来要做的是一个卡牌游戏,难度会比黑白棋高一些。
要先实现的是点击选取卡牌。
一:
玩家手上的卡牌不仅只有一张,那么我们就必须考虑到玩家点击移动的是哪张牌,以下是我的实现方法:
1.首先在游戏类里定义一个卡牌vector :Vector<OpenCard *> openSprites;
2.
for(int i =1; i <= 5; ++i) {OpenCard* card = OpenCard::create("card_face.png", "card_back.png", i); this->addChild(card); openSprites.pushBack(card); }每次发五张牌(处于设计阶段所以创建的5张牌都是一样的,另外创建的时候会自动定位,不会重叠在屏幕上),将这5张牌加进容器中
3.在onTouchBegan里加如下两句
Point touchpoint=touch->getLocation();//获取鼠标点击位置 this->selectSpriteForTouch(touchpoint);//选取精灵函数4.以下是selectSpriteForTouch函数
int x,y;x=(int)touchpoint.x;y=(int)touchpoint.y;//忽略这2句的类型转换,这是个不好的习惯,将点击坐标转换为int后输出发现是一串奇怪的数字,至今还不知道为什么 for (OpenCard *sprite : openSprites)//在容器中遍历卡牌精灵 {if (sprite->card_isTouched(x,y) && sprite->isOpend==0)//如果点击的区域存在精灵&&这个精灵没有被翻开过 {CCLOG("open a card");isTouchCard=1;sprite->card_set_openCard();sprite->isOpend=1; Open_sel = sprite; break; }else if(sprite->card_isTouched(x,y) && sprite->isOpend==1)//这里是卡牌移动用的{isTouchMove=1;sprite->card_setsize_big(2);sprite->setZOrder(100);Open_sel=sprite;break;} }
bool OpenCard::card_isTouched(int x,int y){Point point;point=card_set_locate();int px,py;px=(int)point.x;py=(int)point.y;if(x>px-90 && x<px+90 && y>py-125 && y<py+125){return true;}return false;}
这里先不讨论翻转卡牌和移动卡牌。在容器中遍历一次精灵后若发现符合的精灵,那么这个精灵就被选中了(Open_sel = sprite;)Open_sel也是在游戏类中定义的一个卡牌指针,它指向选择的精灵,当然在onTouchEnded的时候要指向空,否则可能会出错或者出现自己不想要的现象。
这样就能选取卡牌了,下次说说怎么移动精灵
0 0
- cocos2d-x 3.3 之卡牌设计 NO.1 点击选取卡牌
- cocos2d-x 3.3 之卡牌设计 NO.2 卡牌翻转
- cocos2d-x 3.3 之卡牌设计 NO.3 卡牌移动
- cocos2d-x 3.3 之卡牌设计 NO.4 定时器的使用(清理内存)
- cocos2d-x 3.3 之卡牌设计 NO.6 Loading界面(异步加载图片,plist)
- cocos2d-x 3.3 之卡牌设计 NO.5 设置界面(透明层和屏蔽下层触控)
- cocos2d-x 3.3 之黑白棋设计 NO.1 初步设计
- cocos2d-x 3.3 之黑白棋设计 NO.2 搜索
- cocos2d-x 3.3 之黑白棋设计 NO.5 AI
- cocos2d-x 3.3 之黑白棋设计 NO.4 动画效果
- cocos2d-x 3.3 之黑白棋设计 NO.6 移植Android
- cocos2d-x 实现卡牌翻牌效果
- cocos2d-x之CCGUI设计与实现(1)序言
- cocos2d-x之CCGUI设计与实现(1)序言
- cocos2d-x之CCGUI设计与实现(1)序言
- cocos2d-x学习之3.3
- cocos2d-x 3.3之学习
- cocos2d-X CCsprite点击问题
- LeetCode : No11 Container With Most Water
- error C3861: “InitializeCriticalSectionAndSpinCount”: 找不到标识符
- swift知识点小记
- php中的this self parent
- DOS中SET命令的详细用法
- cocos2d-x 3.3 之卡牌设计 NO.1 点击选取卡牌
- 那些高阅读量文章的标题都是怎么取的?14种模板直接套用
- 编写python安装包
- jms
- 安卓图表框架AChartEngine
- Python学习笔记
- Web性能压力测试工具之ApacheBench(ab)详解
- Google浏览器Chrome安装失败,错误代码0xa0430721解决办法
- javasript学习(2)