#所用到的资源都是来源于网上,所有代码仅供学习交流!

##具体的语法介绍在代码中展示:
###首先是欢迎界面:

WelcomeLayer.cpp:


#include "WelcomeLayer.hpp"
#include "MenuLayer.hpp"bool WelcomeLayer::init()
{if (!Layer::init()) {return false;}Size visibleSize = Director::getInstance()->getVisibleSize();Vec2 origin = Director::getInstance()->getVisibleOrigin();//欢迎界面的背景图片Sprite *sp1 = Sprite::create("titlescreen.png");sp1->setPosition(Vec2(origin.x + visibleSize.width/2, origin.y + visibleSize.height/2));sp1->setScale(4.8);this->addChild(sp1);//上面个的标题图片Sprite *sp2 = Sprite::create("pvz_logo.png");sp2->setPosition(Vec2(origin.x + visibleSize.width/2 - sp2->getContentSize().height/2, origin.y + visibleSize.height - sp2->getContentSize().height*2));sp2->setScale(2.5);this->addChild(sp2);//图片的特效  特效:进行缩放同时闪烁ScaleTo *scale1 = ScaleTo::create(2, 3, 3);ScaleTo *scale2 = ScaleTo::create(2, -3, -3);ScaleTo *scale3 = ScaleTo::create(2, 3, 3);Blink *blink = Blink::create(2.0, 10);Spawn * spa = Spawn::create(scale1,scale2,scale3,blink, NULL);sp2->runAction(spa);
//    MoveBy * move1 = MoveBy::create(2.0,Vec2(origin.x + visibleSize.width/5, origin.y + visibleSize.height/5));
//    MoveBy * move2 = MoveBy::create(2.0,Vec2(-(origin.x + visibleSize.width/5), -(origin.y + visibleSize.height/5)));
//    Sequence *seq = Sequence::create(move1, move2,NULL);
//    sp2->runAction(seq);//滚动条的设计分为:最底层的土地,滚轮,以及草的效果,滚轮滚动的同时草要随着进行显示,采用的是进度条动作//滚轮滚动到最后要有消失效果,使用瞬时动作去完成//下方滚动条的土地图片Sprite *sp3 = Sprite::create("down.png");sp3->setPosition(Vec2(origin.x + visibleSize.width/2 - sp3->getContentSize().height/2, origin.y + sp3->getContentSize().height*2));//缩放ScaleTo *sca1 = ScaleTo::create(0, 3.5, 1.5);sp3->runAction(sca1);this->addChild(sp3);//设置草地的进度条效果ProgressTimer *timer = ProgressTimer::create(Sprite::create("grass.png"));timer->setPosition(Vec2(origin.x + visibleSize.width/2 - sp3->getContentSize().height, origin.y + sp3->getContentSize().height*3.2));//缩放ScaleTo *sca2 = ScaleTo::create(0, 3.5, 4);timer->runAction(sca2);timer->setMidpoint(Vec2(0, 0));//设置转动的中心点timer->setType(ProgressTimer::Type::BAR);//设置显示的类型timer->setBarChangeRate(Vec2(1, 0));//0一步到位  1正常速度this->addChild(timer);//动作ProgressTo *proTo = ProgressTo::create(2.0, 100); //时间间隔  百分比timer->runAction(proTo);//设置草地上面的滚轮Vec2 posi = timer->getPosition();Sprite *sp4 = Sprite::create("scrollgrass.png");sp4->setPosition(Vec2(posi.x - timer->getContentSize().width*1.8 ,posi.y + sp4->getContentSize().height/2));sp4->setScale(2);this->addChild(sp4);//滚轮移动MoveTo *moveTo = MoveTo::create(2, Vec2(posi.x + timer->getContentSize().width*1.7 ,posi.y));CallFuncN *funcN = CallFuncN::create(CC_CALLBACK_1(WelcomeLayer::callbackN, this));Sequence *sequ = Sequence::create(moveTo,funcN, NULL);sp4->runAction(sequ);//按钮  设计的效果是点击按钮,将进行到下一个界面MenuItemImage * menuImg = MenuItemImage::create("popcap.png", "popcap2.png",CC_CALLBACK_1(WelcomeLayer::menuCallback, this) );Menu *menu = Menu::create(menuImg, NULL);menuImg->setScale(2);menu->setPosition(Vec2(origin.x + visibleSize.width/2 + menuImg->getContentSize().width*6, origin.y + visibleSize.height/5 - menuImg->getContentSize().height/2));this->addChild(menu);return true;
}
//滚轮的函数
void WelcomeLayer::callbackN(Node * psender)
{psender->removeFromParent();
}//按钮函数
void WelcomeLayer::menuCallback(Ref * psender)
{auto * scene = MenuLayer::createScene();Director * d = Director::getInstance();//进入下一界面时的特效TransitionFade *trans = TransitionFade::create(2.0, scene, Color3B(200, 255, 200));d->replaceScene(trans);}
Scene * WelcomeLayer::createScene()
{auto scene = Scene::create();WelcomeLayer *layer = WelcomeLayer::create();scene->addChild(layer);return scene;
}

###在对应的.h函数中要进行声明,接下来是游戏的主界面,下面是代码:


#include "MenuLayer.hpp"bool MenuLayer::init()
{if (!Layer::init()) {return false;}Size visibleSize = Director::getInstance()->getVisibleSize();Vec2 origin = Director::getInstance()->getVisibleOrigin();//背景图片Sprite *sp1 = Sprite::create("main_background.png");sp1->setPosition(Vec2(origin.x + visibleSize.width/2, origin.y + visibleSize.height/2));sp1->setScale(2);this->addChild(sp1);//商店,图鉴,成就,关卡等具体方法没有实现,它对应的可以设置成不同的场景//商店图片 MenuItemImage * menuImg1 = MenuItemImage::create("shop1.png", "shop0.png",CC_CALLBACK_1(MenuLayer::shopCallback, this) );menuImg1->setScale(2);Menu *menu1 = Menu::create(menuImg1, NULL);menu1->setPosition(Vec2(origin.x + visibleSize.width/6, origin.y + visibleSize.height/4));this->addChild(menu1);//图鉴MenuItemImage * menuImg2 = MenuItemImage::create("SelectorScreen_AlmanacHighlight.png", "SelectorScreen_Almanac.png",CC_CALLBACK_1(MenuLayer::helpCallback, this) );menuImg2->setScale(2);Menu *menu2 = Menu::create(menuImg2, NULL);menu2->setPosition(Vec2(origin.x + visibleSize.width - menuImg2->getContentSize().width*5, origin.y + visibleSize.height/5.5));this->addChild(menu2);//成就MenuItemImage * menuImg3 = MenuItemImage::create("chengjiu.png", "chengjiu1.png",CC_CALLBACK_1(MenuLayer::achieveCallback, this) );menuImg3->setScale(2);Menu *menu3 = Menu::create(menuImg3, NULL);menu3->setPosition(Vec2(origin.x + visibleSize.width/2 - menuImg3->getContentSize().width*2 , origin.y + visibleSize.height/5));this->addChild(menu3);//关卡MenuItemImage * menuImg4 = MenuItemImage::create("select11.png", "select10.png",CC_CALLBACK_1(MenuLayer::levelCallback1, this) );menuImg4->setScale(4.1);Menu *menu4 = Menu::create(menuImg4, NULL);menu4->setPosition(Vec2(origin.x + visibleSize.width - menuImg4->getContentSize().width*3.6, origin.y + visibleSize.height - menuImg4->getContentSize().height*2));this->addChild(menu4);MenuItemImage * menuImg5 = MenuItemImage::create("select21.png", "select20.png",CC_CALLBACK_1(MenuLayer::levelCallback2, this) );menuImg5->setScale(4.3);Menu *menu5 = Menu::create(menuImg5, NULL);menu5->setPosition(Vec2(origin.x + visibleSize.width - menuImg5->getContentSize().width*3.7, origin.y + visibleSize.height - menuImg5->getContentSize().height*5.2));this->addChild(menu5);MenuItemImage * menuImg6 = MenuItemImage::create("select31.png", "select30.png",CC_CALLBACK_1(MenuLayer::levelCallback3, this) );menuImg6->setScale(4.3);Menu *menu6 = Menu::create(menuImg6, NULL);menu6->setPosition(Vec2(origin.x + visibleSize.width - menuImg6->getContentSize().width*3.9, origin.y + visibleSize.height/2 + menuImg6->getContentSize().height*0.8));this->addChild(menu6);MenuItemImage * menuImg7 = MenuItemImage::create("select41.png", "select40.png",CC_CALLBACK_1(MenuLayer::levelCallback4, this) );menuImg7->setScale(4.6);Menu *menu7 = Menu::create(menuImg7, NULL);menu7->setPosition(Vec2(origin.x + visibleSize.width - menuImg7->getContentSize().width*4.55, origin.y + visibleSize.height/2 - menuImg7->getContentSize().height*2));this->addChild(menu7);return true;
}
//商店方法
void MenuLayer::shopCallback(Ref * psender)
{}
//成就方法
void MenuLayer::achieveCallback(Ref * psender)
{}
//图鉴方法
void MenuLayer::helpCallback(Ref * psender)
{}
//关卡方法
void MenuLayer::levelCallback1(Ref * psender)
{}
void MenuLayer::levelCallback2(Ref * psender)
{}
void MenuLayer::levelCallback3(Ref * psender)
{}
void MenuLayer::levelCallback4(Ref * psender)
{}Scene * MenuLayer::createScene()
{auto scene = Scene::create();MenuLayer * layer = MenuLayer::create();scene->addChild(layer);return scene;
}

###以上是界面的主要代码。
##接下来,展示一下,以上代码所实现的主要效果

####首先是欢迎的主界面:

####加载进度条的执行过程

####加载结束后,点击按钮,进入下一个界面

####下一个界面

##等有空我会继续写一些,僵尸的具体动作实现过程

案例:植物大战僵尸的基础界面相关推荐

  1. Scratch少儿编程案例-植物大战僵尸-趣味角色版

    专栏分享 点击跳转=>Unity3D特效百例 点击跳转=>案例项目实战源码 点击跳转=>游戏脚本-辅助自动化 点击跳转=>Android控件全解手册 点击跳转=>Scra ...

  2. Scratch少儿编程案例-植物大战僵尸完整版

    专栏分享 点击跳转=>Unity3D特效百例 点击跳转=>案例项目实战源码 点击跳转=>游戏脚本-辅助自动化 点击跳转=>Android控件全解手册 点击跳转=>Scra ...

  3. Scratch少儿编程案例-植物大战僵尸复刻无敌版

    专栏分享 点击跳转=>Unity3D特效百例 点击跳转=>案例项目实战源码 点击跳转=>游戏脚本-辅助自动化 点击跳转=>Android控件全解手册 点击跳转=>Scra ...

  4. 植物大战僵尸一:多线程修改UI界面,游戏必备API

    本博文适合刚刚学完android基础准备做做项目实战一下的人看,在我的博文中,我会将这个游戏的开发过程讲得非常详细,所以非常容易理解,植物大战僵尸这个游戏我会出一系列的博文详细解释,所以有兴趣的人可以 ...

  5. C/C++ 学习日记3:制作带有界面的植物大战僵尸助手(基于MFC)

    2018年8月21日 > 那一天,是天下情人们的狂欢节.不行,我拒绝 最近在研究怎么弄出界面,以至于忘掉更新博客这件事情了,从接触MFC到Qt,Qt从安装到编译碰到了一些麻烦,最后还有一些地方的 ...

  6. C/C++植物大战僵尸之CE找基址+修改器制作(基础版)

    思路: 每个程序打开后他们的数据的内存地址都会改变,但他们的静态基址和偏移不会变 关于获取的是静态基址,所以就算是关闭了游戏,再开启动,地址也是不变的也可以修改 所以我们用CE找到他的静态地址和偏移地 ...

  7. 基于Java基础-面向对象实现植物大战僵尸简易版

    基于Java基础-面向对象实现植物大战僵尸简易版 前言 游戏设计 游戏对象 游戏内容 游戏优化 放置植物的优化 移除植物的优化 游戏可玩性的优化 添加游戏背景音乐 后续优化 源码分享 前言 从零开始学 ...

  8. Scratch案例—在Scratch上制作植物大战僵尸游戏

    "什么?玩植物大战僵尸还能学数学,是的你没听错.来和我们一起进步你的口算吧!记得文末点击阅读原文有福利哦" 01 - -效果展示- 02 - -脚本展示- -----舞台背景脚本- ...

  9. Python开发植物大战僵尸游戏(附github项目地址)

    今天给大家分享一个仿<植物大战僵尸>的小游戏开发案例. 开发思路 引入需要的模块,配置图片路径,设置界面宽高背景颜色,创建游戏主入口. #1引入需要的模块 import pygame im ...

最新文章

  1. easyui使用ajax获取json文件,easyui 加载本地json 文件的方法
  2. Java并发专题 带返回结果的批量任务执行 CompletionService ExecutorService.invokeAll
  3. 电脑出现kernelbase.dll错误的两种解决方法
  4. 升级后供电不足故障解决攻略
  5. C#LeetCode刷题之#590-N叉树的后序遍历(N-ary Tree Postorder Traversal)
  6. MVC3.0中使用JQuery.DataTable插件。
  7. linux 附加数据库文件,SQL Server 数据库分离与附加图文详解
  8. windows上telnet用法 测试端口号
  9. 应用编辑器保存的htnl代码怎么正常显示在页面上
  10. Android源代码中引用@hide类出现引用异常的问题error: cannot find symbol
  11. windows10桌面_windows10 美化桌面加强能力
  12. apache服务器查看网络爬虫记录的方法说明
  13. PHP除数取余数,php相除取余数的实现方法
  14. Linux CentOS7.0 使用root登录桌面
  15. 【谷粒商城】ElasticSearch、上架与检索
  16. Mac 如何强制使用 5G 频段 Wi-Fi
  17. 老国企如何焕发新势能?致远互联“协同五环”锻造老而弥坚
  18. C - 数字三角形问题
  19. 短视频剪辑,超简单的教程
  20. JS 实现抛物线运动

热门文章

  1. Android APN的设置问题 默认“已起用数据” 关闭
  2. 投票系统源码--微信投票系统开发功能介绍以及源码分享
  3. 玩电脑游戏为啥“上瘾”
  4. html做帧动画,AE免费教程:简单几步做出帧动画效果
  5. android 游戏开发中的声音
  6. 员工管理书籍推荐,做好员工管理看这些书就够了
  7. 从Windows过渡到Mac需要注意的那些事儿!
  8. 如何由电磁理论引出牛顿力学下的引力场方程
  9. 计算机机房消防应急预案,计算机机房应急预案
  10. 线性代数复习:两个矩阵的乘积