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

cocos2d-x 入门游戏:许特尔图_2 of 4,第1张

概述 接上一节; 3. 开始场景的搭建与计划: 简单场景,3个难度菜单1个退出菜单;计划在功能完成后将文字变成中文显示(CCDictionary)           3*3 共9格   4*4 共16格   5*5 共25格   退出   关键知识点: A. 菜单,菜单项及回调函数 B. 传参 界面: CCMenuItem *simple = CCMenuItemFont::create("si 

接上一节;

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@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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1066765.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存