接上一节;
3.开始场景的搭建与计划:
简单场景,3个难度菜单1个退出菜单;计划在功能完成后将文字变成中文显示(CCDictionary)
|
3*3共9格
4*4共16格
5*5共25格
退出 |
|
关键知识点:
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(*){cclog(“simple”);}::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/VS中F12)看到参数是(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@H_502_929@。。。//设置大小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; |
至此,数字就随机摆在界面上了。
总结以上是内存溢出为你收集整理的cocos2d-x 入门游戏:许特尔图_2 of 4全部内容,希望文章能够帮你解决cocos2d-x 入门游戏:许特尔图_2 of 4所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)