设计完開始界面后就要设计游戏界面了

为了理清设计思路先看一张游戏界面效果图

游戏界面设计思路:

1、在窗体上放一张桌子

2、在桌子上放一个棋盘

3、在棋盘右边加入新局button,暂不实现详细的功能

4、在棋盘右边加入開始button,暂不实现详细的功能

5、在棋盘右边加入悔棋button,暂不实现详细的功能

6、在棋盘右边加入难度button,暂不实现详细的功能

7、在棋盘右边加入声音button,暂不实现详细的功能

8、在棋盘右边加入返回button。暂不实现详细的功能

9、在桌子右边加入一个Voice标签

10、在桌子右边加入一个Return标签

11、在棋盘上放一个选择框,而且隐藏选择框

特别说明:

1、上面提到的功能都是在SceneGame.h/SceneGame.cpp中实现的

2、写这篇博客前对游戏进行了一些改进,所以在前面的博客中没有出现添加的功能

实如今窗体上放一张桌子:

     //创建桌子
CCSprite* desk = CCSprite::create("floor.jpg");
this->addChild(desk); //设置桌子的位置
desk->setPosition(ccp(winSize.width / 2, winSize.height / 2)); //压缩桌子
desk->setScaleX(winSize.width / desk->getContentSize().width);
desk->setScaleY(winSize.height / desk->getContentSize().height);

实如今桌子上放一个棋盘:

 //创建棋盘
CCSprite* plate = CCSprite::create("background.png");
this->addChild(plate); //设置描点为(0,0)
plate->setAnchorPoint(CCPointZero); //设置棋盘的位置
plate->setPosition(_plateOffset); //压缩棋盘:(窗体的高度 - 偏移的y坐标 * 2) / 图片的高度
plate->setScale((winSize.height -_plateOffset.y *2)/ plate->getContentSize().height);

在桌子上加入button和标签

    //创建Menu
CCMenu* menu = CCMenu::create();
this->addChild(menu); //创建開始button
CCMenuItem* itemStart = CCMenuItemImage::create("start.jpg", "start.jpg",
this, menu_selector(SceneGame::Start));
menu->addChild(itemStart);
itemStart->setPositionX(190);
itemStart->setPositionY(120); //创建新局button
CCMenuItem* itemNew = CCMenuItemImage::create("new.jpg", "new.jpg",
this, menu_selector(SceneGame::New));
menu->addChild(itemNew);
itemNew->setPositionX(itemStart->getPositionX());
itemNew->setPositionY(itemStart->getPositionY() + 60); //创建悔棋button
CCMenuItem* item = CCMenuItemImage::create("regret.jpg", "regret.jpg",
this, menu_selector(SceneGame::Back));
menu->addChild(item);
item->setPositionX(itemStart->getPositionX());
item->setPositionY(itemStart->getPositionY() - 60); //创建暂停button
CCMenuItem* itemPause = CCMenuItemImage::create("pause.jpg", "pause.jpg",
this, menu_selector(SceneGame::Pause));
menu->addChild(itemPause);
itemPause->setPositionX(itemStart->getPositionX());
itemPause->setPositionY(itemStart->getPositionY() - 60 - 60); //创建难度button
CCMenuItem* itemDifficulty = CCMenuItemImage::create("difficulty.jpg", "difficulty.jpg",
this, menu_selector(SceneGame::Difficulty));
menu->addChild(itemDifficulty);
itemDifficulty->setPositionX(itemStart->getPositionX());
itemDifficulty->setPositionY(itemStart->getPositionY() - 60 - 60 - 60); //创建播放背景音乐button
CCMenuItem* itemVoice = CCMenuItemImage::create("openVolice.png", "openVolice.png.png",
this, menu_selector(SceneGame::Voice));
menu->addChild(itemVoice);
itemVoice->setPositionX(itemStart->getPositionX());
itemVoice->setPositionY(itemStart->getPositionY() - 60 - 60 - 60 - 60); //创建停止播放背景音乐button
itemCloseVoice = CCMenuItemImage::create("closeVolice.png", "closeVolice.png",
this, menu_selector(SceneGame::Voice));
menu->addChild(itemCloseVoice);
itemCloseVoice->setPositionX(itemStart->getPositionX());
itemCloseVoice->setPositionY(itemStart->getPositionY() - 60 - 60 - 60 - 60);
itemCloseVoice->setVisible(false); //CCLog("x=%lf", itemStart->getPositionX());
//CCLog("y=%lf", itemStart->getPositionY() - 240); //创建一个标签,显示文本
CCLabelTTF* label = CCLabelTTF::create("Voice", "Arial", 25);
addChild(label); //设置文字的位置
label->setPosition(ccp(winSize.width/2 + 120, winSize.height/2 - 120)); //设置文字的颜色
label->setColor(ccc3(0, 0, 0)); //创建返回button
CCMenuItem* itemReturn = CCMenuItemImage::create("return.png", "return.png",
this, menu_selector(SceneGame::Return));
menu->addChild(itemReturn);
itemReturn->setPositionX(itemStart->getPositionX());
itemReturn->setPositionY(itemStart->getPositionY() - 60 - 60 - 60 - 60 - 60);
itemReturn->setScale(0.2f); //创建一个标签,显示文本
CCLabelTTF* label1 = CCLabelTTF::create("Return", "Arial", 25);
addChild(label1); //设置文字的位置
label1->setPosition(ccp(winSize.width/2 + 120, winSize.height/2 - 180)); //设置文字的颜色
label1->setColor(ccc3(0, 0, 0));

在棋盘上放一个选择框

 //创建一个选择框
//当选中某个棋子的时候,选择框会套在选好的棋子上
_selectSprite = CCSprite::create("selected.png");
addChild(_selectSprite); //隐藏选择框
_selectSprite->setVisible(false); //设置选择框的优先级
_selectSprite->setZOrder(1000); //压缩选择框
_selectSprite->setScale(.8f);

Cocos2d-X开发中国象棋《四》设计游戏场景的更多相关文章

  1. Cocos2d-X开发中国象棋《二》project文件概述

    我在上一篇博客中介绍了象棋的功能.在接下来的博客中将向大家介绍使用Cocos2d-X怎样一步一步开发中国象棋 开发工具: Cocos2d-X2.2.3 VS2012 项目的文件夹: Classes:存 ...

  2. Cocos2d-X开发中国象棋《三》開始场景的实现

    在前面两节(第一节.第二节)中介绍了中国象棋的功能和project文件.在这篇博客中将介绍中国象棋的開始场景的实现 在写代码前先理清一下实现開始场景的思路: 1.打开游戏后进入開始场景,场景上显示一个 ...

  3. Python开发中国象棋实战(附源码)

        Pygame 做的中国象棋,一直以来喜欢下象棋,写了 python 就拿来做一个试试,水平有限,电脑走法水平低,需要在下次版本中更新电脑走法,希望源码能帮助大家更好的学习 python.总共分 ...

  4. Cocos2d-X开发中国象棋《八》走棋

    在上一节中实现了新局,至此中国象棋的准备工作差点儿相同都完毕了,在接下来的博客中将介绍玩家的走棋和一些游戏属性的设置,今天先介绍走棋和走棋规则 老规则,先看走棋的效果图,然后依据效果图一步一步分析游戏 ...

  5. Cocos2d-X开发中国象棋《九》走棋规则

    在上一节中实现了走棋,这篇博客将介绍中国象棋中的走棋规则 在写博客前先可能一下象棋的走棋规则: 1)将 将的坐标关系:横坐标相等,纵坐标相减绝对值等于1,或者纵坐标相等,横坐标相减绝对值等于1 将的特 ...

  6. 【Cocos2d-X游戏实战开发】捕鱼达人之游戏场景的创建(六)

    本系列学习教程使用的是cocos2d-x-2.1.4(最新版为cocos2d-x-2.1.5)    博主发现前两个系列的学习教程被严重抄袭,在这里呼吁大家请尊重开发者的劳动成果, 转载的时候请务必注 ...

  7. cocos2d-x游戏开发系列教程-中国象棋05-开始游戏

    前情回顾 通过CCMainMenu的init函数,已经把所有的按钮,棋子都摆放完毕了,但是这个时候,棋子是不能走动的,只有在开始游戏之后才能移动棋子. 点击

  8. C#中国象棋+游戏大厅 服务器 + 客户端源码

    来源:www.ajerp.com/bbs C#中国象棋+游戏大厅 服务器 + 客户端源码 源码开源 C#版中国象棋(附游戏大厅) 基于前人大虾的修改版 主要用委托实现 服务器支持在线人数,大厅桌数的设 ...

  9. cocos2d-x游戏开发系列教程-中国象棋00-前言

    象棋描述 在说代码之前,我们先让象棋效果登场,以方便大家对代码的理解 欢迎界面 中国象棋程序,运行起来的第一个界面是一个欢迎界面,该欢迎界面在停留一秒后进入游戏界面 游戏主界面 新局:所有棋子归位,状 ...

随机推荐

  1. fastclick.js插件使用

    引入插件步骤 ①在HTML页面中添加  <script type='application/javascript' src='/path/to/fastclick.js'></scr ...

  2. [Python3网络爬虫开发实战] 3.3-正则表达式

    本节中,我们看一下正则表达式的相关用法.正则表达式是处理字符串的强大工具,它有自己特定的语法结构,有了它,实现字符串的检索.替换.匹配验证都不在话下. 当然,对于爬虫来说,有了它,从HTML里提取想要 ...

  3. 程序包javax.servlet.http不存在

    在maven test项目时,出现错误: java:[7,26] 程序包javax.servlet.http不存在 原因:pom.xml中未引入javax.servlert-api相关的包 <d ...

  4. Codeforce 741B Arpa's weak amphitheater and Mehrdad's valuable Hoses(并查集&分组背包)

    题意: 给定n个价值为b 花费为w的物品, 然后某些物品是属于同一个组的, 给定一个花费限制V, 求在小于等于V的情况下取得到的价值最大为多少,能对于同一个组的物品,要么全取,要么只取一个. 分析: ...

  5. java ssm框架 mapper文件里的#符号和$符号的区别

    Java SSM框架里面,Mapper.xml文件 (一)#符号生成的sql语句是作为传参的 <!-- 获得数据列表(包括课程相关信息) --> <select id="G ...

  6. 面试高峰期,如何应对面试官的jvm刁难,特写一篇jvm面经(第一部)

    已经进入三月份,正所谓金三银四,正是一年最好的招聘期,想必我的公号粉丝们一定有不少想要跳槽的吧,哈哈,/**偷偷告诉你们其实小编也准备跳槽*/(我要加个注释,被老板知道可就完蛋了),说到面试,想必大家 ...

  7. JS数组添加元素的三种方式

    1.push() 结尾添加 数组.push(元素) 参数 描述 newelement1 必需.要添加到数组的第一个元素. newelement2 可选.要添加到数组的第二个元素. newelement ...

  8. Android OkHttp(1)

     Android OkHttp(1) OkHttp是一个流行的第三方开源网络请求框架,在目前的一些APP开发中比较流行.Android平台开源的网络请求框架不少,比如常见的Volley, Asyn ...

  9. Linux下汇编语言学习笔记14 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  10. Form表单的action和onSubmit示例介绍

    action是form的属性,onSubmit为事件,要说执行的先后顺序,个人理解是onSubmit在先. 第一:action是form的属性,html5已经将其定义为必需的属性值,onSubmit为 ...