編寫小遊戲《貪頭蛇》第一篇

小遊戲《貪頭蛇》設計場景有: 主菜單、遊戲主場景、遊戲繼續、遊戲設置、遊戲暫停、關於

遊戲中的UI都是"東拼西湊'過來,其目的通過編寫小遊戲,體驗遊戲所需要的基本功能、動畫、粒子效果

源碼下載地址:http://download.csdn.net/detail/oyangyufu/7505487

進入遊戲第一場景,顯示該款遊戲由哪家工作室或個人開發的


代碼:

SnakeSceneManager類用來管理遊戲所有場景的切換,包括創建新的場景,切換下一個場景,和關卡場景

OpenLayer類用來創建第一個場景

CCScene *SnakeSceneManager::createscene()
{
	CCScene *Scene = CCScene::create();
	//進入遊戲第1個圖層
	OpenLayer *openlayer = OpenLayer::create();//工作室logo
	Scene->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();
}






發佈了103 篇原創文章 · 獲贊 10 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章