采用Cocos引擎cocos studio开发 平台为Android,开发语言为C++;
时间: 2020.4.29-5.14
- 游戏说明
这是一款具有策略性的游戏。背景是僵尸入侵你的家,你需要用具有攻击性的植物才能抵御僵尸的入侵。玩家需要从第一关开始,选择左上角卡片放置豌豆射手,用豌豆射手防御僵尸,游戏结束条件是僵尸被打死或者僵尸越过屋子。过关就会得到卡片,收集植物卡片,用植物打倒僵尸!
- 概要设计
游戏设计的框架主要有几部分构成:
游戏界面、动画设计、定时器设计、交互功能设计、菜单功能设计。
1游戏界面:
界面的大小、背景设置;
设置游戏卡片;
标题标签内容;
声音,背景音乐。
2动画设计:
僵尸移动;
豌豆射手动画;
豌豆飞行;
豌豆豆渣炸裂效果;
3定时器设计:
僵尸进场定时器;
豌豆发射定时器;
豌豆检测定时器;
4交互功能设计:
选卡的状态动作;
放置豌豆射手;
5菜单功能设计:
退出功能菜单exit;
下一关功能菜单next;
重新再来菜单resume;
- 详细设计
3.1. 开始场景构造
3.1.1标题标签
auto dict = Dictionary::createWithContentsOfFile("chnString.xml");
const char* title = ((String*)dict->objectForKey("Title"))->getCString();
auto chnTitle = Label::createWithTTF(title, "fonts/HBYY.TTF", 72);
chnTitle->setPosition(320, 500);
chnTitle->setColor(Color3B::RED);
addChild(chnTitle);
利用Dictionary类的createWithContentsOfFile方法来读入XML文件,objectForKey方法来引用关键字,objectForKey方法来引用关键字,获得Title关键字代码的内容并转换为字符串title,并用字符串title创建标签。这种方法显示中文稳定,不需要引入外部库,增删改操作也比较方便,后续也很多用到的地方不再重复描述
3.1.2按钮菜单
auto startLabelMenuItem = MenuItemLabel::create(start, this, menu_selector(HelloWorld::menu_start));
auto StartMenu = Menu::create(startImgMenuItem, startLabelMenuItem, exitImgMenuItem, exitLabelMenuItem, NULL);
调用MenuItemLabel的create方法创建标签菜单项,点击后能产生相应的响应,并添加菜单项至菜单。
3.1.3音乐
auto engine = CocosDenshion::SimpleAudioEngine::getInstance();
engine->preloadBackgroundMusic("musics/bgMusic.wav");
engine->preloadEffect("musics/start.wav");
engine->preloadEffect("musics/exit.wav");
engine->playBackgroundMusic("musics/bgMusic.wav", true);
需要播放音乐时,通过getInstance()来“召唤”引擎,preloadBackgroundMusic为预加载背景音乐,参数为音乐的路径,playBackgroundMusic,播放背景音乐,第二个参数为是否重复播放。由preloadEffect预载音效。
3.2. 游戏场景
3.2.1鼠标监听器响应
auto listener_mouse = EventListenerMouse::create();
listener_mouse->onMouseMove = [=](Event* event)
{
auto e = (EventMouse*)event;
if (IsCardSelected)
{
beanShooter->setOpacity(150);
beanShooter->setPosition(e->getCursorX(), e->getCursorY());
}
else
{