关于游戏的素材都是在网上到处搜集到的,然后自己再用二流的ps技术修修改改的,所以有可能混在一起有点不搭调(没有办法啊,没有美工Orz。。

项目已经建立好了,然后我们需要把我们下载的素材放到Resources文件夹。(游戏完成以后,我会把素材包上传的。。主要现在没有找完)

设置屏幕大小:

在vs中打开创建的项目,打开AppDelagate.cpp文件

在AppDelegate::applicationDidFinishLaunching()中添加代码

if(!glview) {glview = GLViewImpl::create("Battle City"); //窗口标题glview->setFrameSize(1280, 720); // 在这里设置创建窗口的尺寸,手机上不用设置,因为手机有固定的屏幕 director->setOpenGLView(glview); }

在这个方法里面有director->setAnimationInterval(1.0 / 60);这行代码是作用是设置游戏的帧数,是游戏引擎调用OpenGL来绘制每一张图需要用到的时间,其中参数的意思为时间/画面数。这里我们不做修改

director->setDisplayStats(true);这一行代码它的作用在你游戏的左下角显示一些游戏的信息,比如说帧数,绘图等等数据,一般在我们调试的会将参数设置为true,但是完成发布之后一般设置为false

游戏开始背景:

打开HelloWorldScene.cpp文件。

在init方法里面我们可以看到

// add "HelloWorld" splash screen"
auto sprite = Sprite::create("HelloWorld.png");// position the sprite on the center of the screen
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); 

这个就是创建背景,和设置背景位置坐标的代码了(Cocos2d坐标系和OpenGL坐标系一样,原点为屏幕左下角,x向右,y向上。)

这里使用了精灵这一概念,下面是关于cocos2d的精灵的中文wiki

Cocos2d中的精灵和其他游戏引擎中的精灵相似,它可以移动,旋转,缩放,执行动画,并接受其他转换。Cocos2dx的Sprite由Texure,frame和animation组成,由openes负责渲染。主要的类关系如下: 简单过程可描述为:使用Texture2D加载图片,可以用Texture2D生成对应的SpriteFrame(精灵帧),将SpriteFrame添加到Animation生成动画数据,用Animation生成Animate(就是最终的动画动作),最后用Sprite执行这个动作。

把原来的代码删除掉并添加

// 开始背景
auto startBackground = Sprite::create("ui/start_background.png");
// 设置精灵相对于屏幕的位置(绝对坐标系)
startBackground->setPosition(Vec2(visibleSize.width/2 + origin.x, 0)); // 设置锚点 startBackground->setAnchorPoint(Vec2(0.5, 0)); // 设置精灵的Tag,之后可以通过标签找到这个精灵,并对这个精灵进行操作 startBackground->setTag(START_BACKGROUD); // 将背景精灵添加到层中。其中第二个参数0是设置可见优先权,数值越小优先权越小,如果有其他的精灵的优先权比他大时,他会被遮挡住 this->addChild(startBackground, 0); 

并在helloworldscene.h中添加const int START_BACKGROUD = 101;

添加游戏菜单:

在HelloWorldScene.h中的helloworld类中声明两个公有回调方法,功能是点击菜单时触发。

void menuCloseCallback(cocos2d::Ref* pSender);
void menuStartCallback(cocos2d::Ref* pSender);

在HelloWorldScene.cpp中添加函数实现方法,close方法就用原来的 (具体功能暂时不写)

// 开始游戏,暂时不写具体内容
void HelloWorld::menuStartCallback(Ref* pSender)
{}

现在可以在init方法中添加菜单了

// 开始菜单, 第一二个参数分别是未点击和点击时显示的图片
auto startItem = MenuItemImage::create("ui/game_start.png","ui/game_start.png",CC_CALLBACK_1(HelloWorld::menuStartCallback, this)); startItem->setPosition(Vec2(origin.x + visibleSize.width/4, origin.y + visibleSize.height/3 * 2)); auto closeItem = MenuItemImage::create("ui/game_exit.png", "ui/game_exit.png", CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); closeItem->setPosition(Vec2(origin.x + visibleSize.width/4, origin.y + visibleSize.height/3 * 2 - startItem->getContentSize().height - 20)); // 将菜单项添加到精灵里面 auto menu = Menu::create(closeItem, startItem, NULL); // 将菜单加入当前层 menu->setPosition(Vec2::ZERO); this->addChild(menu, 1);

运行试一下

好了,游戏的开始界面大致做好了。。现在看有点单调,以后再添加其他功能吧。。

原文链接: http://www.bugcoding.com/entry/8

转载于:https://www.cnblogs.com/NGNL/p/4438462.html

【Cocos2D-x 3.5实战】坦克大战(2)游戏开始界面相关推荐

  1. 【JAVA程序设计】基于JAVA的坦克大战小游戏--入门级小游戏

    基于JAVA的坦克大战小游戏--入门级小游戏 零.项目获取 一.项目简介 二.开发环境 三.游戏玩法 四.运行截图 零.项目获取 获取方式(点击下载):是云猿实战 项目经过多人测试运行,可以确保100 ...

  2. JAVA 实现《坦克大战》游戏|CSDN创作打卡

    前言 小时候大家都玩过坦克大战吧,熟悉的旋律和丰富的关卡陪伴了我们一整个寒暑假,还记得传说中的经典坦克大战 吗?那些怀旧的记忆,伴随着我们一起走过来的经典坦克大战,刚开始那战战兢兢,屡屡被敌人坦克击毁 ...

  3. Unity双人坦克大战竞速游戏,超简单教学

    好久没更新了,最近在研究unity,这个游戏已经做了好久了一直没发出来,我现在想开发一款猛鬼深林游戏,目前已经开发到新建文件夹了 话不多说,开始我们今天的主题,双人坦克大战竞速游戏 首先创建一个地形, ...

  4. Java实现的经典坦克大战小游戏

    Java实现的经典坦克大战小游戏 先看一下游戏结构: 有点多,没有耐心的可以不用看,这里先给出链接吧! 云链接:经典坦克大战 提取码:s9ai 这里就不介绍功能了,贴了一张游戏运行的截图,具体的功能自 ...

  5. canvas+js实现简单的坦克大战小游戏

    使用canvas和js实现经典的坦克大战并不难,坦克和炮弹的绘制可以使用canvas的里API画出,而坦克的移动和炮弹的发射可以依赖于键盘事件和定时器来实现. 在这里我要实现的坦克大战是双人模式,有木 ...

  6. 《HTML5经典坦克大战》游戏(代码)

    前几天粗略地学了HTML5,然后就用它写了一个<经典坦克大战>游戏. 现在想分享一下我写的代码,写得不好请大家多多指教. 给大家推荐一个网站,这个网站是为大学生而做,为方便学习编程的同学而 ...

  7. 使用《红孩儿工具箱》开发基于Cocos2d-x的《坦克大战》游戏

    大家好,我是红孩儿.上一节我们学习了使用<红孩儿工具箱>开发<打地鼠>游戏.这一节我们继续学习使用<红孩儿工具箱>来开发<坦克大战>游戏. <坦克 ...

  8. html实现经典坦克大战小游戏

    文章目录 1.设计来源 1.1 游戏主界面 1.2 游戏界面 2.效果和源码 2.1 动态效果 2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/w ...

  9. C++实用编程——坦克大战小游戏

    C++实用编程--坦克大战小游戏 Warning: 转载类 原文地址:*HTML https://yq.aliyun.com/articles/683666 改变速度的玩意坏了 我们直接看代码吧,适于 ...

  10. 【180930】坦克大战小游戏源码

    坦克大战小游戏源码程序实现了小霸王游戏机上坦克大战的功能,主要功能是开火.移动.3种不同的敌方坦克.用户自制地图等,缺点是有些小细节还处理的不好,感觉画面不够好,还没实现自动的下一关功能(主要是嫌做默 ...

最新文章

  1. h5 调起相机_H5+js调用相机 - osc_e61ersei的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. Java 6.编写类
  3. H5案例分享:移动端滑屏 touch事件
  4. 高质量程序设计指南c++/c语言(17)--函数
  5. P1101 单词方阵(DFS)
  6. 如何用 Linq 进行多重 Orderby ?
  7. Ansible AdHoc playbook API + 动态生成Inventory +结果关注
  8. “简易四则运算生成程序——第一次改进后的单元测试”链接
  9. Linux学习总结(51)——25个Linux服务器安全小贴士
  10. java异常中的Error和Exception的区别是什么?
  11. 微型计算机控制技术第三版第四章课后答案,微型计算机控制技术第4章习题答案.doc...
  12. C语言中调用数组元素的三种方法:下标法、数组名法、指针法
  13. Cloud 80% 客制化键盘分享,模块拼色设计
  14. Linux下使用wget安装JDK
  15. 什么是类。什么是对象
  16. Spark 安装与配置 (Spark HA 集群部署)
  17. 软件需求分析和需求文档解读
  18. 字符的编码表示——ASCII码、国标码、Unicode码
  19. 计算机教学助手,教学助手
  20. bqstudio软件操作指南

热门文章

  1. 每天一个俯卧撑的健身法 - 微习惯实践
  2. R语言模拟疫情传播-gganimate包
  3. Consider defining a bean of type `xxx` in your configuration问题解决
  4. c#MVC文件(图片,word,excel,zip等)批量上传
  5. 通俗易懂理解几何光学(二)共轴球面系统与理想光学系统
  6. 计算机里的word怎么重装,word能卸载重装吗 word卸载重装
  7. 计算机与昆虫关系的论文,趣味昆虫学论文 昆虫与人类的关系
  8. 稳压二极管和TVS二极管的区别
  9. 鸿蒙系统什么时候用于pc,浅谈鸿蒙系统与三大主流PC系统(Windows、MacOS、Linux)...
  10. 论文笔记 NAACL findings 2022|Zero-Shot Event Detection Based on Ordered Contrastive Learning and Prompt-