Cocos2d-X开发中国象棋《四》设计游戏场景
2024-08-30 18:51:41
设计完開始界面后就要设计游戏界面了
为了理清设计思路先看一张游戏界面效果图
游戏界面设计思路:
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);
最新文章
- Java-->;实现断点续传(下载)
- matrix_world_final_2011
- Swift-2-基本操作符
- STL源码分析读书笔记--第二章--空间配置器(allocator)
- WP开发笔记——页面传参
- httpsClient实例
- setTimeOut传参数(转)
- Keil中LIB库的作用、生成与调用
- MarkDown/reST 文档发布流水线
- hosts etc css-js
- profile和bash
- haproxy1.7编译安装配置
- Andriod 安全之Windows下CTS自动化测试环境的搭建
- Github:修改Github仓库中项目语言类型
- 在pycharm中查看内建函数源码
- Python基础之语句2
- mysql _触发器
- 三十九、Linux 线程——线程的同步和互斥
- Log4Net配置日志
- POJ 2247 Humble Numbers
热门文章
- SQLSTATE[23000]报错
- 新引入thinkphp报错“应用目录[./Application/]不可写,目录无法自动生成! 请手动生成项目目录~”
- 神经网络(NN)+反向传播算法(Backpropagation/BP)+交叉熵+softmax原理分析
- 运用 node + express + http-proxy-middleware 实现前端代理跨域的 详细实例哦
- 2 SQL 查询基础
- 零基础入门学习Python(9)--了不起的分支和循环3
- 怎样提高DB2存储过程性能
- [java基础原理] BigDecimal
- idea+Maven+SSM框架增删改查
- IntelliJ IDEA配置本地Tomcat方法---亲测有效