cocos2d-x 入门游戏:许特尔图_2 of 4

前端之家收集整理的这篇文章主要介绍了cocos2d-x 入门游戏:许特尔图_2 of 4前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


接上一节;

3.开始场景的搭建与计划:

简单场景,3个难度菜单1退出菜单;计划在功能完成后将文字变成中文显示CCDictionary

3*39

4*416

5*525

退出

关键知识点:

A.菜单菜单项及回调函数

B.传参

界面:

CCMenuItem*simple=CCMenuItemFont::create("simple");

*normal="normal"*hard="hard"

*quit="quit"

CCMenu*menu=::create(simple,normal,hard,quit,NULL

addChild(menu);menu->alignItemsVerticallyWithPadding(10);

先把界面显示出来~

回调函数.h中声明回调函数voidsimpleCallBack(CCObject*);normalCallBack(hardCallBack(

quitCallBack(

在.cpp中先打桩(QT:ALT+Enter-->在.cpp中添加定义)

GameStart::simpleCallBack(*){CCLogsimple;}::normalCallBack(MenuItem设置回调函数

simple->setTarget(this,255); font-size:9.5pt">menu_selector(::simpleCallBack));normal->setTarget(::normalCallBack));hard->setTarget(::hardCallBack));quit->setTarget(::quitCallBack));

注意一点:menu_selector(F2/VSF12)看到参数是(CCObject*),在QT中可以不带参,但在VS中必须带参!

传参:

.h中:

enumDEGREETHREE=3,FOURFIVE};在.cpp中:CCScene*scene=LayerGame::scene(THREECCDirector::sharedDirector()->replaceScene(scene);FOUR

至此,LayerGame还没有建立,下一节继续。

4.主场景及卡片类

计时

数字卡片大小:

setContentSize(CCSizeMake(60,70));setAnchorPoint(ccp(0,0));

联系:

1.主场景接收开始场景的传参(难度),因而不能用CREATE_FUN()宏,要自己写Create

*::create(intrank)

2.数字卡片要接受主场景(init())中的传参(数字1~x),继承自CCSprite,也要自己写Create函数CardItemidx)

主场景:

.h中:

classLayerGame:publicCCLayer

{

:staticCCScene*scene(intrank);*create(boolinit(

voidaddCard(

CCArray*allCards;

.cpp

CCScene*::scene(rank)*scene=::create();*layer=::create();scene->addChild(layer);returnscene;}

*::create(*pRet=new;if(pRet&&pRet->init())pRet->autorelease();}elsedeletepRet;pRet=NULL::init(

::init();

addCard(

数字卡片在addCard()调用

::addCard()allCards=CCArray::create();allCards->retain();for(i=0;i<;i++)j=0;j<;j++)CardItem*item=::create(/*vec[i*rank+j+1]*/5);item->setPosition((baseX+60*i,baseY+70*j));addChild(item);allCards->addObject(item);}

数字卡片类:

CardItemCCSpriteidx);CCLabelTTF*ttf;CC_SYNTHESIZE(,_index,Idx)};

idx。。。//设置大小setContentSize(CCSizeMake(60,255); font-size:9pt">setAnchorPoint(ccp(0,0));setIdx();//保存分给的序号CCString*str=::createWithFormat("%d"ttf=::create(str->getCString(),"couriernew"addChild(ttf);

数字的随机产生:

使用vector--增强性数组,每次随机出的数是下标,下标--就不会重复

#include<iostream><vector><stdlib.h><time.h>usingnamespacestd;getAvailPoints(rank);vector<>vec;

::getAvailPoints(srand(time());//种子i=0;i<=*vec.push_back(i);//初始化mysize=;i=1;i<=mysize+1-i;i++)idx=rand()%(mysize-i)+1;value=vec[idx];vec[idx]=vec[mysize+1-i];vec[mysize+1-i]=value;}

基准坐标获得:

floatk=()/2.0;baseX=winSize.width/2-k*60;//对应不同格子数,找到其基准点的X坐标baseY=.height/2-k*70;

至此,数字就随机摆在界面上了。

原文链接:/cocos2dx/342016.html

猜你在找的Cocos2d-x相关文章