#include "HelloWorldScene.h"
using namespace cocos2d;
CCScene* HelloWorld::scene()
{
CCScene * scene = NULL;
do
{
// 'scene' is an autorelease object
scene = CCScene::create();
CC_BREAK_IF(! scene);
// 'layer' is an autorelease object
HelloWorld *layer = HelloWorld::create();
CC_BREAK_IF(! layer);
// add layer as a child to scene
scene->addChild(layer);
} while (0);
// return the scene
return scene;
}
// on "init" you need to initialize your instance
bool HelloWorld::init()
{
bool bRet = false;
do
{
//////////////////////////////////////////////////////////////////////////
// super init first
//////////////////////////////////////////////////////////////////////////
CC_BREAK_IF(! CCLayer::init());
//////////////////////////////////////////////////////////////////////////
// add your codes below...
//////////////////////////////////////////////////////////////////////////
// 1. Add a menu item with "X" image, which is clicked to quit the program.
///添加3项菜单 进入游戏 游戏帮助 退出游戏
CCLabelTTF * labelstart=CCLabelTTF::create("startGame","宋体",24);
CCLabelTTF * labelhelp=CCLabelTTF::create("GameHelp","宋体",24);
CCLabelTTF * labelexit=CCLabelTTF::create("exitGame","宋体",24);
//定义菜单条目
CCMenuItemLabel *mi01=CCMenuItemLabel::create(labelstart,this,
menu_selector(HelloWorld::menuCloseCallback));
mi01->setTag(1);
mi01->setPosition(ccp(100,200));
CCMenuItemLabel *mi02=CCMenuItemLabel::create(labelhelp,this,
menu_selector(HelloWorld::menuCloseCallback));
mi02->setTag(2);
mi02->setPosition(ccp(100,150));
CCMenuItemLabel *mi03=CCMenuItemLabel::create(labelexit,this,
menu_selector(HelloWorld::menuCloseCallback));
mi03->setTag(3);
mi03->setPosition(ccp(100,50));
// Create a "close" menu item with close icon, it's an auto release object.
CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
this,
menu_selector(HelloWorld::menuCloseCallback));
CC_BREAK_IF(! pCloseItem);
pCloseItem->setTag(4);
// Place the menu item bottom-right conner.
pCloseItem->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20));
// Create a menu with the "close" menu item, it's an auto release object.
CCMenu* pMenu = CCMenu::create(mi01,mi02,mi03,pCloseItem, NULL);
pMenu->setPosition(CCPointZero);
CC_BREAK_IF(! pMenu);
// Add the menu to HelloWorld layer as a child layer.
this->addChild(pMenu, 1);
// 2. Add a label shows "Hello World".
// Create a label and initialize with string "Hello World".
CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Arial", 24);
CC_BREAK_IF(! pLabel);
// Get window size and place the label upper.
CCSize size = CCDirector::sharedDirector()->getWinSize();
pLabel->setPosition(ccp(size.width / 2, size.height - 50));
// Add the label to HelloWorld layer as a child layer.
this->addChild(pLabel, 1);
// 3. Add add a splash screen, show the cocos2d splash image.
CCSprite* pSprite = CCSprite::create("HelloWorld.png");
CC_BREAK_IF(! pSprite);
// Place the sprite on the center of the screen
pSprite->setPosition(ccp(size.width/2, size.height/2));
// Add the sprite to HelloWorld layer as a child layer.
this->addChild(pSprite, 0);
bRet = true;
} while (0);
return bRet;
}
void HelloWorld::menuCloseCallback(CCObject* pSender)
{
switch(((CCNode*)pSender)->getTag())
{case 1:// 进入游戏
CCLog("go to game");
CCDirector::sharedDirector()->replaceScene(GameLayer::scene());
break;
case 2://进入帮助
CCLog("go to help");
CCDirector::sharedDirector()->replaceScene(GameHelp::scene());
break;
case 3:
case 4:
CCDirector::sharedDirector()->end();
};
}
bool GameHelp::init(){
if(!CCLayer::init())
{return false;}
CCLabelTTF * labhelp=CCLabelTTF::create("please click screen to game","宋体",15);
labhelp->setPosition(ccp(0,280));
this->addChild(labhelp);
CCLabelTTF * labback=CCLabelTTF::create("MainMenu","宋体",15);
CCMenuItemLabel * miback=CCMenuItemLabel::create(labback,this,
menu_selector(GameHelp::menuBackToMain));
miback->setPosition(ccp(0,0));
CCMenu * pm=CCMenu::create(miback,NULL);
this->addChild(pm);
return true;
}
cocos2d::CCScene * GameHelp::scene(){
CCScene * scene=CCScene::create();
CCLayer * hl=GameHelp::create();
scene->addChild(hl);
return scene;
}//获取帮助画面
void GameHelp::menuBackToMain(CCObject *pSender)//返回主菜单
{
CCDirector::sharedDirector()->replaceScene(HelloWorld::scene());
}
bool GameLayer::init(){
if(!CCLayer::init())
{return false;}
CCLabelTTF * labhelp=CCLabelTTF::create("this is game","宋体",15);
labhelp->setPosition(ccp(0,340));
this->addChild(labhelp);
CCLabelTTF * labback=CCLabelTTF::create("MainMenu","宋体",15);
CCMenuItemLabel * miback=CCMenuItemLabel::create(labback,this,
menu_selector(GameLayer::menuBackToMain));
miback->setPosition(ccp(360,200));
//CCMenu * pm=CCMenu::create(miback,NULL);
//pm->setPosition(ccp(0,0));
//this->addChild(pm);
/////
chead=::CCTextureCache::sharedTextureCache()->addImage("head.png");
///接受触摸事件
this->setTouchEnabled(true);
//this->setAccelerometerEnabled(true);
//this->setKeypadEnabled(true);
//初始化蛇头坐标和食物的坐标
sHead=new SnakeNode();
sHead->row=rand()%10;
sHead->col=rand()%10;
//初始化食物的坐标
sFood=new SnakeNode();
sFood->row=rand()%10;
sFood->col=rand()%10;
//初始化蛇的身体
this->allBody=cocos2d::CCArray::create();
this->allBody->retain();
//执行定时任务
this->schedule(schedule_selector(GameLayer::logic01),0.5);
return true;
}
cocos2d::CCScene * GameLayer::scene(){
CCScene * scene=CCScene::create();
CCLayer * hl=GameLayer::create();
scene->addChild(hl);
return scene;
}//获取帮助画面
void GameLayer::menuBackToMain(CCObject *pSender)//返回主菜单
{
CCDirector::sharedDirector()->replaceScene(
HelloWorld::scene());
}
void HelloWorld::onEnter(){
CCLayer::onEnter();
CCLog("HelloWorld onEnter");
}
void HelloWorld::onExit(){
CCLog("HelloWorld onExit");
}
void GameHelp::onEnter(){
CCLayer::onEnter();
CCLog("GameHelp onEnter");
}
void GameHelp::onExit(){
CCLog("GameHelp onExit");
}
void GameLayer::onEnter(){
CCLayer::onEnter();
CCLog("GameLayer onEnter");
}
void GameLayer::onExit(){
CCLog("GameLayer onExit");
}
void GameLayer::draw(){
///绘制形状
::glLineWidth(2);//设定画线的宽度
for(int i=0;i<11;i++)
{
::ccDrawLine(ccp(0,i*32),ccp(320,i*32));//绘制11条横线
::ccDrawLine(ccp(i*32,0),ccp(i*32,320));//绘制11条竖线
}
// RGBA
//::ccDrawColor4B(ccc4(255,0,0,255));//设定画线的颜色
//绘制蛇头
::ccDrawSolidRect(ccp(sHead->col*32+2,sHead->row*32+2),ccp(sHead->col*32+32,sHead->row*32+32),ccc4FFromccc3B(ccc3(255,0,0)));
//绘制食物
::ccDrawSolidRect(ccp(sFood->col*32+2,sFood->row*32+2),ccp(sFood->col*32+32,sFood->row*32+32),ccc4FFromccc3B(ccc3(0,0,255)));
//绘制身体
for(int i=0;i<allBody->count();i++)
{SnakeNode * node=(SnakeNode *)allBody->objectAtIndex(i);
::ccDrawSolidRect(ccp(node->col*32+2,node->row*32+2),
ccp(node->col*32+32,node->row*32+32),ccc4FFromccc3B(ccc3(0,0,255)));
}
CCRect r(340,0,57,57);
chead->drawInRect(r);
CCLayer::draw();
}
void GameLayer::registerWithTouchDispatcher()
{
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,1,true);
}
bool GameLayer::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){
//CCLayer::ccTouchBegan(pTouch,pEvent);
CCPoint p=pTouch->getLocation();
int nowrow;//当前用户触摸的行
nowrow=((int)p.y)/32;
int nowcol;////当前用户触摸的列
nowcol=((int)p.x)/32;
if(::abs(nowrow-sHead
没有合适的资源?快使用搜索试试~ 我知道了~
cocos2d-x贪食蛇游戏-沈大海cocos2d-x
共43个文件
tlog:14个
png:4个
h:4个
4星 · 超过85%的资源 需积分: 9 109 下载量 159 浏览量
2012-11-26
12:26:46
上传
评论 2
收藏 578KB RAR 举报
温馨提示
实现了游戏欢迎,帮助,游戏界面的场景跳转 图层的计划任务 按键处理 游戏逻辑 CCArray集合使用
资源推荐
资源详情
资源评论
收起资源包目录
test02_scene_win03.rar (43个子文件)
test02_scene_win
Resources
CloseSelected.png 5KB
CloseNormal.png 6KB
head.png 9KB
HelloWorld.png 142KB
proj.win32
test02_scene_win.rc 2KB
res
test02_scene_win.ico 47KB
test02_scene_win.win32.vcxproj.filters 2KB
test02_scene_win.win32.vcxproj.user 763B
Debug.win32
vc100.idb 1.33MB
test02_scene_win.win32.exe.intermediate.manifest 381B
CL.write.1.tlog 3KB
CL.read.1.tlog 127KB
mt.read.1.tlog 590B
rc.write.1.tlog 898B
test02_scene_win.win32.exe.embed.manifest.res 472B
rc.read.1.tlog 3KB
AppDelegate.obj 91KB
test02_scene_win.win32_manifest.rc 246B
test02_scene_win.win32.exe.embed.manifest 406B
mt.command.1.tlog 570B
test02_scene_win.win32.Build.CppClean.log 3KB
cl.command.1.tlog 6KB
link-cvtres.read.1.tlog 2B
test02_scene_win.res 47KB
test02_scene_win.win32.lastbuildstate 70B
main.obj 72KB
link.write.1.tlog 2KB
test02_scene_win.win32.log 6KB
link-cvtres.write.1.tlog 2B
link.command.1.tlog 3KB
rc.command.1.tlog 2KB
link.read.1.tlog 5KB
mt.write.1.tlog 522B
HelloWorldScene.obj 175KB
vc100.pdb 644KB
resource.h 512B
main.cpp 863B
main.h 270B
test02_scene_win.win32.vcxproj 8KB
Classes
AppDelegate.cpp 1KB
HelloWorldScene.h 2KB
AppDelegate.h 960B
HelloWorldScene.cpp 10KB
共 43 条
- 1
sdhjob
- 粉丝: 1339
- 资源: 18
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页