编写小游戏《贪头蛇》第一篇
来源:互联网 发布:linux进程调度命令 编辑:程序博客网 时间:2024/05/16 17:21
小游戏《贪头蛇》设计场景有: 主菜单、游戏主场景、游戏继续、游戏设置、游戏暂停、关于
游戏中的UI都是"东拼西凑'过来,其目的通过编写小游戏,体验游戏所需要的基本功能、动画、粒子效果
源码下载地址:http://download.csdn.net/detail/oyangyufu/7505487
进入游戏第一场景,显示该款游戏由哪家工作室或个人开发的
代码:
SnakeSceneManager类用来管理游戏所有场景的切换,包括创建新的场景,切换下一个场景,和关卡场景
OpenLayer类用来创建第一个场景
CCScene *SnakeSceneManager::createscene(){CCScene *Scene = CCScene::create();//进入游戏第1个图层OpenLayer *openlayer = OpenLayer::create();//工作室logoScene->addChild(openlayer);//加入该场景中return Scene;}
init()函数创建背景图片,实现浅入浅出场景效果
bool OpenLayer::init(){if (!CCLayer::init()){return true;}CCSize size = CCDirector::sharedDirector()->getVisibleSize();CCSprite *sprite1 = CCSprite::create("bn.png");//工作室图片sprite1->setAnchorPoint(ccp(0.5, 0.5));sprite1->setPosition(ccp(size.width/2, size.height/2));//先浅入场景再浅出CCActionInterval *act1 = CCFadeIn::create(1.5f);CCActionInterval *act2 = act1->reverse();//完成动作后切换到主菜单页面sprite1->runAction(CCSequence::create(act1, act2, CCCallFuncND::create(this, callfuncND_selector(OpenLayer::nextmenuscene),NULL), NULL));this->addChild(sprite1);return true;}切换下一个主菜单场景
void OpenLayer::nextmenuscene(CCNode* pNode, void* pVo){this->removeChild(pNode);ssm->MenuScene();}
void SnakeSceneManager::MenuScene(){CCScene *menu = CCScene::create();SnakeMenuScene *sms = SnakeMenuScene::create();//菜单图层menu->addChild(sms);CCDirector::sharedDirector()->replaceScene(CCTransitionFadeTR::create(1.5f, menu));}
主菜单场景
代码:
主菜单场景类SnakeMenuScene,头文件
class SnakeMenuScene:public cocos2d::CCLayer{public:virtual bool init();CREATE_FUNC(SnakeMenuScene);void newgame(CCObject* pObject);//新游戏按钮回调void continuegame(CCObject *pObject);//游戏继续按钮回调void aboutgame(CCObject *pObject);//游戏关于按钮回调void setgame(CCObject *pObject);//游戏关于按钮回调SnakeSceneManager *ssm1;};
init()函数,创建这些菜单按钮
if (!CCLayer::init()){return false;}CCSize size = CCDirector::sharedDirector()->getVisibleSize();//背景设置CCSprite *sp1 = CCSprite::create("snake_background.png");sp1->setAnchorPoint(ccp(0.0, 0.0));sp1->setPosition(ccp(0, 0));this->addChild(sp1);SimpleAudioEngine::sharedEngine()->playBackgroundMusic("background.mp3", true);//new game 按钮CCMenuItemImage *image1 = CCMenuItemImage::create("newgameA.png", "newgameB.png", this, menu_selector(SnakeMenuScene::newgame));//continue 按钮CCMenuItemImage *image2 = CCMenuItemImage::create("continueA.png", "continueB.png", this, menu_selector(SnakeMenuScene::continuegame));//设置按钮CCMenuItemImage *image4 = CCMenuItemImage::create("set.png", "set2.png", this, menu_selector(SnakeMenuScene::setgame));//about 按钮CCMenuItemImage *image3 = CCMenuItemImage::create("aboutA.png", "aboutB.png", this, menu_selector(SnakeMenuScene::aboutgame));CCMenu *menu = CCMenu::create(image1, image2, image3, image4, NULL);menu->setPosition(CCPointZero);this->addChild(menu);
菜单按钮出场动画,由上往下掉然后回落
CCNode *child=NULL;CCArray *pArray = menu->getChildren();for (int m=0; m<(pArray->count()); m++)//遍历菜单项{int h ;switch (m)//菜单项间隔{case 0:h=50; break;case 1:h=0; break;case 2:h=-100; break;case 3:h=-50; break;}child = (CCNode*)pArray->objectAtIndex(m);child->setScale(0.5f);child->setPosition(size.width/2, size.height+10);CCActionInterval *ac1 = CCMoveTo::create(0.2f, ccp(size.width/2, -40));//起始位置CCActionInterval *ac2 = CCMoveTo::create(0.2f, ccp(size.width/2, size.height/2+h));//弹回的位置CCActionInterval *ac3 = CCEaseBackInOut::create(ac2);CCDelayTime *delay = CCDelayTime::create(0.2f*(pArray->count()-m-1));//每个菜单项间隔时间child->runAction(CCSequence::create(delay, ac1, ac3, NULL));}
菜单按钮回调函数
void SnakeMenuScene::newgame(CCObject* pObject){CCLOG("newame...");ssm1->nextscene();}void SnakeMenuScene::continuegame(CCObject* pObject){CCLOG("continuegame...");}void SnakeMenuScene::aboutgame(CCObject* pObject){CCLOG("aboutgame...");ssm1->aboutlayer();}void SnakeMenuScene::setgame(CCObject* pObject){CCLOG("setgame...");ssm1->setlayer();}
0 0
- 编写小游戏《贪头蛇》第一篇
- vc小游戏的第一篇
- 编写小游戏《贪头蛇》第二篇
- 编写小游戏《贪头蛇》第三篇
- Android开发系列(十五):【Android小游戏成语连连看】第一篇
- 第一篇博客——记那未完成的JS“魔塔”小游戏
- 用Excel编写小游戏
- WINCE编写小游戏
- ABAP编写的小游戏
- HTML5编写的小游戏
- MFC编写小游戏
- HTML5编写的小游戏
- Pygame:编写一个小游戏
- 用Construct2编写小游戏
- 从零开始编写网游服务器-第一篇:服务器设计
- UCOSIII编写无人机飞控程序——第一篇
- 注册了好久,放上我的第一篇博客吧,写了一个作业小游戏:井字棋
- 使用python进行小游戏编写
- iOS开发- 文件共享(利用iTunes导入文件, 并且显示已有文件)
- 面向对象设计发展历史
- JavaScript去除日期中的“-”
- swift入门
- 冒泡排序
- 编写小游戏《贪头蛇》第一篇
- 类图和对象图
- The requested list key 'map' could not be resolved as a collection/array/map/enumeration/iterator ty
- 图片过大处理
- lua学习之类型与值
- android 初级入门 intent
- eclipse导出jar包,不能加载@RequestMapping等类似注解的问题
- OOA与OOD的关系
- thrift下C++服务器和客户端开发