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

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

游戏界面设计思路:

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. fast rcnn,faster rcnn使用cudann加速问题

    之前在fast rcnn,faster rcnn编译过程中USE_CUDNN := 1这一项一直是注释掉的(即不使用cudnn加速),编译会报错: 之所以会这样,是因为fast rcnn,faster ...

  2. 网络爬虫之框架(Scrapy)

    Scrapy爬虫框架 爬虫框架是实现爬虫功能的一个软件结构和功能组件集合. 爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫. Scrapy爬虫框架结构:

  3. 如何手写一款KOA的中间件来实现断点续传

    本文实现的断点续传只是我对断点续传的一个理解.其中有很多不完善的地方,仅仅是记录了一个我对断点续传一个实现过程.大家应该也会发现我用的都是一些H5的api,老得浏览器不会支持,以及我并未将跨域考虑入内 ...

  4. php实现短信验证

    PHP实现短信验证的整体思路: 一.申请短信api ->申请网址https://s1.chanyoo.cn/login?url=%2f 二.编写核心代码(thinkPHP5) 示例: <? ...

  5. IDEA修改背景图片和主题代码风格

    使用IDEA有一段时间了,之前为了写代码没时间折腾这玩意,以前使用Eclipse的时候一次性折腾好了,现在把之前Eclipse的配置再配到IDEA里面来,下面是效果图.Eclipse的设置见:点击这里 ...

  6. 常见的awk内建变量

    FS: 输入字段分隔符变量 语法: $ awk -F 'FS' 'commands' inputfilename 或者 $ awk 'BEGIN{FS="FS";}' OFS: 输 ...

  7. DFS求连通块(漫水填充法)

    G - DFS(floodfill),推荐 Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I6 ...

  8. 原生js获取复选框的值

    ​​ obj = document.getElementsByName("dk_tj"); var longtxt = ""; for (k in obj) { ...

  9. Master of Subgraph

    Problem E. Master of SubgraphYou are given a tree with n nodes. The weight of the i-th node is wi. G ...

  10. fd最大值和限制

    fd的数量决定了fd的最大值 在Linux下,系统全部能够打开的fd总数为: /proc/sys/fs/file-max,取决于内存 The file-max file /proc/sys/fs/fi ...