【捕鱼达人】游戏实战开发之帮助&胜利场景
大家好,我是Lampard!!!
今天迎来捕鱼达人系列的第二篇博客更新,希望大家多多支持。
今天要实现的是帮助场景和胜利场景:
(一)帮助场景的实现:
帮助场景的构成是一个帮助场景的背景图,一个内容的显示框以及一个返回到主菜单场景的菜单项,以及背景音乐的播放
在显示框中你可以使用LabelTTF用无签名的UTF-8来打中文上去。
但是个人感觉直接把图利用P图软件P一下会更方便,所以就没有使用Label,大家感兴趣的可以自己试验一下。
下面上代码:
(1)首先还是创建一个场景,和一个层,并把层添加到空场景中。
Scene* HelpLayer::createScene()
{
Scene* scene = Scene::create();
HelpLayer* helpLayer = HelpLayer::create();
scene->addChild(helpLayer);
return scene;
}
(2)第二步就是填充这个层,内容包括背景图,菜单项以及帮助显示框。
bool HelpLayer::init()
{
if (!Layer::init())
{
return false;
}
auto bgSprite = Sprite::create("HelpLayerBg.png"); // 背景图
bgSprite->setScale(2);
bgSprite->setPosition(vsable.width / 2, vsable.height / 2);
this->addChild(bgSprite);
auto HelpLogo = Sprite::create("HelpLogo.jpg"); // 显示框(含文字)
HelpLogo->setPosition(vsable.width / 2, vsable.height / 2);
HelpLogo->setScale(0.9);
this->addChild(HelpLogo);
auto BackItem = MenuItemSprite::create( // 菜单项
Sprite::create("BackItem1.png"),
Sprite::create("BackItem2.png"),
[&](Ref * ref) {
Scene *s = StartLayer::createScene();
TransitionSplitCols *trans = TransitionSplitCols::create(2, s);
Director::getInstance()->replaceScene(trans);
}
);
BackItem->setPosition(1200, 650);
BackItem->setScale(1.5);
auto menu = Menu::create(BackItem, NULL);
menu->setPosition(Point::ZERO);
this->addChild(menu);
playMusic();
return true;
}
(3)最后就是实现音乐播放的函数,再三提醒,因为要使用到cocos的因为播放控件,
所以头文件要加上#include "cocostudio/CocoStudio.h",名称空间要加上using namespace CocosDenshion;
void HelpLayer::playMusic() {
SimpleAudioEngine::getInstance()->playBackgroundMusic("StartLayerBGM.mp3", true);
}
至此我们的帮助场景已经实现。
(二)接下来是我们的胜利场景
捕鱼达人的游戏逻辑是在但单位时间内,捕捉尽可能多的鱼。所以我们用到全局变量Count来表示。只需要引用LabelTTF,并把Count强转为字符串类型,设置大小颜色就可以在界面上展示。至于其他内容和帮助界面差不多,无非就是背景图,背景音乐,菜单项和展示框。
fishLabel = Label::create();
fishLabel->setTextColor(Color4B::ORANGE); // 颜色
fishLabel->setSystemFontSize(160); // 大小
fishLabel->setPosition(805, 410); // 位置
std::string str = StringUtils::format("%d", Count); // 强转
fishLabel->setString(str);
this->addChild(fishLabel);
游戏的源代码在:
捕鱼达人源代码下载 大家可以参详参详!