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

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

游戏界面设计思路:

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. Java Servlet 非英文乱码

    response.setHeader("Content-Type", "text/json; charset=UTF-8"); request.setChara ...

  2. webstorm下开发微信小程序

  3. String与常量池(JDK1.8)

    ---- 基础知识 String是final类, 并且其方法都被final修饰 String通过char数组来保存字符串 对String对象的任何操作都不会影响到原来的String对象, 所有的改变都 ...

  4. C语言学习3

    实现输入错误后重新输入 通过输入指定的行数和列数打印出二维数组对应的任一行任一列的值: #include <stdio.h> void main() { ][] = {{, , , },{ ...

  5. UVA 230 Borrowers (STL 行读入的处理 重载小于号)

    题意: 输入若干书籍和作者名字,然后先按作者名字升序排列,再按标题升序排列,然后会有3种指令,BORROW,RETURN, SHELVE. BORROW 和 RETURN 都会带有一个书名在后面,如: ...

  6. Python使用selenium实现网页用户名 密码 验证码自动登录功能

    一.安装selenium 二.下载谷歌浏览器驱动 1.去http://chromedriver.storage.googleapis.com/index.html下载chromedriver.exe( ...

  7. python virtualenv 管理工具 - virtualenvwrapper

    我们使用python virtualenv构建不同的python环境,python3 也加入了virtualenv 模块. virtualenvwrapper 提供了更便捷的 virtualenv环境 ...

  8. Leetcode 211.添加与搜索单词

    添加与搜索单词 设计一个支持以下两种操作的数据结构: void addWord(word) bool search(word) search(word) 可以搜索文字或正则表达式字符串,字符串只包含字 ...

  9. <<编程之美>> -- 队列中取最大值操作的问题

    不得不说编程之美是一本好书,虽然很多题目在做acm中的过程中遇到过,不过还是有很多值得思考的地方 这是今天在编程之美上看到的一个问题,对于栈转化成队列的一个思考 平时都太过依赖c++内函数库中的栈和队 ...

  10. [TyvjP1050] 最长公共子序列(DP)

    传送门 f[i][j] 表示第 1 个串匹配到第 i 位,第 2 个串匹配到第 j 位的答案. f[i][j] = max(f[i - 1][j], f[i][j - 1])    (a[i] != ...