Cocos2d-X开发中国象棋《四》设计游戏场景
设计完開始界面后就要设计游戏界面了
为了理清设计思路先看一张游戏界面效果图
游戏界面设计思路:
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开发中国象棋《四》设计游戏场景的更多相关文章
- Cocos2d-X开发中国象棋《二》project文件概述
我在上一篇博客中介绍了象棋的功能.在接下来的博客中将向大家介绍使用Cocos2d-X怎样一步一步开发中国象棋 开发工具: Cocos2d-X2.2.3 VS2012 项目的文件夹: Classes:存 ...
- Cocos2d-X开发中国象棋《三》開始场景的实现
在前面两节(第一节.第二节)中介绍了中国象棋的功能和project文件.在这篇博客中将介绍中国象棋的開始场景的实现 在写代码前先理清一下实现開始场景的思路: 1.打开游戏后进入開始场景,场景上显示一个 ...
- Python开发中国象棋实战(附源码)
Pygame 做的中国象棋,一直以来喜欢下象棋,写了 python 就拿来做一个试试,水平有限,电脑走法水平低,需要在下次版本中更新电脑走法,希望源码能帮助大家更好的学习 python.总共分 ...
- Cocos2d-X开发中国象棋《八》走棋
在上一节中实现了新局,至此中国象棋的准备工作差点儿相同都完毕了,在接下来的博客中将介绍玩家的走棋和一些游戏属性的设置,今天先介绍走棋和走棋规则 老规则,先看走棋的效果图,然后依据效果图一步一步分析游戏 ...
- Cocos2d-X开发中国象棋《九》走棋规则
在上一节中实现了走棋,这篇博客将介绍中国象棋中的走棋规则 在写博客前先可能一下象棋的走棋规则: 1)将 将的坐标关系:横坐标相等,纵坐标相减绝对值等于1,或者纵坐标相等,横坐标相减绝对值等于1 将的特 ...
- 【Cocos2d-X游戏实战开发】捕鱼达人之游戏场景的创建(六)
本系列学习教程使用的是cocos2d-x-2.1.4(最新版为cocos2d-x-2.1.5) 博主发现前两个系列的学习教程被严重抄袭,在这里呼吁大家请尊重开发者的劳动成果, 转载的时候请务必注 ...
- cocos2d-x游戏开发系列教程-中国象棋05-开始游戏
前情回顾 通过CCMainMenu的init函数,已经把所有的按钮,棋子都摆放完毕了,但是这个时候,棋子是不能走动的,只有在开始游戏之后才能移动棋子. 点击
- C#中国象棋+游戏大厅 服务器 + 客户端源码
来源:www.ajerp.com/bbs C#中国象棋+游戏大厅 服务器 + 客户端源码 源码开源 C#版中国象棋(附游戏大厅) 基于前人大虾的修改版 主要用委托实现 服务器支持在线人数,大厅桌数的设 ...
- cocos2d-x游戏开发系列教程-中国象棋00-前言
象棋描述 在说代码之前,我们先让象棋效果登场,以方便大家对代码的理解 欢迎界面 中国象棋程序,运行起来的第一个界面是一个欢迎界面,该欢迎界面在停留一秒后进入游戏界面 游戏主界面 新局:所有棋子归位,状 ...
随机推荐
- Webstorm安装、破解、使用
Webstorm是专用于web开发的号称最好的的编辑器,界面美观大方,有黑.白和经典三大主题可选,使用起来整体感觉良好,破解也不是很麻烦. 一.安装 1.去官网下载正版安装包(建议所有软件都去官网下载 ...
- vue中去掉烦人的格式警告(eslint )
解决办法: 一,源头上解决,下次创建项目时就不要使用eslint连接项目代码 如上图所示,就是在这一步的时候选择no: 二,在build文件夹中找到webpack.base.conf.js文件 找到右 ...
- 【转】WinAPI: CreateFontIndirect - 根据字体结构建立逻辑字体
//声明: CreateFontIndirect( const p1: TLogFont {字体结构} ): HFONT; {返回新字体指针} //TLogFont 是 tagLOGFONTA 结构的 ...
- 源码学习-Object类
1.Object类是Java所有类的超类 2.查看Object的属性和方法,发现Object类没有属性,只有13个方法,其中7个本地方法. 3.接下来看具体的方法 3.1 Object() 默认的构造 ...
- 如何使用 Laravel Collections 类编写神级代码
本文首发于 如何使用 Laravel Collections 类编写神级代码,转载请注明出处. Laravel 提供了一些超赞的组件,在我看来,它是目前所有 Web 框架中提供组件支持最好的一个.它不 ...
- MySQL-----连表
连表: **拿到两张表的信息** select * from userinfo,department 弊端是数据会乱,出现重复,不建议这样. **使userinfo表的part_id列与departm ...
- Python实现图片切割
import os from PIL import Image def splitimage(src, rownum, colnum, dstpath): img = Image.open(src) ...
- python之字符串处理 2014-4-5
#字符串 p62 13:20pm-15:20 上一章讲的所有的序列化操作对于字符串同样适用 不过字符串不可变 所以无法使用分片赋值 1.字符串格式化 >>> format=" ...
- topcoder SRM 639 div2
见这里 http://ygdtc.sinaapp.com/?p=257
- poj3440--Coin Toss(几何上的概率)
Coin Toss Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 3946 Accepted: 1076 Descrip ...