Cocos2d-X开发中国象棋《四》设计游戏场景

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

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

游戏界面设计思路:

1、在窗口上放一张桌子

2、在桌子上放一个棋盘

3、在棋盘右边添加新局按钮,暂不实现具体的功能

4、在棋盘右边添加开始按钮,暂不实现具体的功能

5、在棋盘右边添加悔棋按钮,暂不实现具体的功能

6、在棋盘右边添加难度按钮,暂不实现具体的功能

7、在棋盘右边添加声音按钮,暂不实现具体的功能

8、在棋盘右边添加返回按钮,暂不实现具体的功能

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

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

特别说明:

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);

在桌子上添加按钮和标签

    //创建Menu
   CCMenu* menu = CCMenu::create();
   this->addChild(menu);

    //创建开始按钮
    CCMenuItem* itemStart = CCMenuItemImage::create("start.jpg", "start.jpg",
                                           this, menu_selector(SceneGame::Start));
    menu->addChild(itemStart);
    itemStart->setPositionX(190);
    itemStart->setPositionY(120);

    //创建新局按钮
    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);

   //创建悔棋按钮
    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);

    //创建暂停按钮
    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);

     //创建难度按钮
    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);

     //创建播放背景音乐按钮
    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);

     //创建停止播放背景音乐按钮
    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));

     //创建返回按钮
    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));



时间: 2024-10-10 21:12:05

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

Cocos2d-X开发中国象棋《六》游戏开始功能的实现

我在前面的博客Cocos2d-X开发中国象棋<四>设计游戏场景中介绍了在游戏场景上场景了一个开始按钮,并没有实现开始的功能 游戏开始功能的实现效果: 实现思路: 1.显示随机位置的棋子 2.将棋子移动到棋盘上的指定位置 具体实现方式: 首先在SceneGame类中定义一个initStone()函数用于初始化棋子 initStone()函数实现了3个功能 1.创建棋子 2.将棋子设置到随机位置 3.隐藏棋子 initStone()中的代码: //初始化32个棋子 void SceneGame::

Cocos2d-X开发中国象棋《一》

在介绍开发过程前先展示一下游戏 打开游戏后会进入一个欢迎界面 欢迎界面上有两颗棋子红色的帅和黑色的将,可以通过触摸两颗棋子进入游戏场景 当单击红棋子时,玩家持红旗 当单击黑棋时,玩家持黑棋 单击开始显示棋子 通过鼠标点击走棋 单击悔棋可以实现悔棋 单击新局后再单击开始可以实现重新下棋 单击下面的小喇叭可以实现声音的开关 吃掉对方的将后会显示游戏结果 单击游戏结果后重新开始游戏 移植到Android上的效果 开始界面 游戏界面1 游戏界面2 游戏结果界面 代码和资源下载:http://downlo

Cocos2d-x开发中国象棋《十一》在游戏中添加背景音乐

在上一节中实现了悔棋,在这节将介绍如何在游戏中添加背景音乐 看一下效果: 实现思路: 当单击后游戏中播放背景音乐,并且背景音乐切换按钮由变成 当单击后停止播放背景音乐,并且背景音乐切换按钮由变成 当游戏进入后台后停止播放背景音乐 当游戏恢复后继续播放背景音乐 实现代码: 在SceneGame类中定义一个成员函数Voice(CCObject*)用于实现背景音乐的切换,Voice(CCObject*)中的代码 //播放背景音乐 void SceneGame::Voice(CCObject*) { s

Cocos2d-X开发中国象棋《十二》游戏结果的显示与隐藏

在上一节中实现了游戏中实现播放背景音乐,这节将实现游戏结果的显示与隐藏 先看一下效果图 当玩家赢了后会显示玩家赢了的对话框 当点击对话框后会隐藏对话框和棋子 单击开始后会改变玩家棋子的颜色 当玩家输了后会显示玩家输了的对话框 游戏结果的实现思路: 1.当玩家赢了后,显示一个对话框,对话框中的内容为"恭喜你,你赢了" 2.当玩家输了后,显示一个对话框,对话框中的内容为"对不起,你输了" 3.当点击对话框后,会隐藏对话框,隐藏棋子 4.单击开始后,会发现改变了玩家棋子的

Cocos2d-X开发中国象棋《十》悔棋

在上一节中实现了走棋规则,这节中将实现悔棋 首先看一下悔棋的效果: 通过观察上图中的演示可知,当单击悔棋按钮后,移动了的棋子会回到原来的位置上, 实现方式: 首先在SceneGame类中定义一个成员变量CCArray* _steps,用于保存每步棋的棋子信息 //保存每步走的棋子 CCArray* _steps; 在SceneGame类中的成员函数init()中插入下面的代码用于创建一个数组用于保存每步棋的信息 //创建数组 _steps = CCArray::create(); _steps-

Cocos2d-X开发中国象棋《七》新局功能的实现

我在上一节中介绍了开始功能的实现,在这篇博客中将介绍新局功能的实现 首先看一下效果图 通过观察上图的实现效果可知新局的实现思路 1.隐藏选择框 2.隐藏32个棋子 3.初始化32个棋子 首先在SceneGame的init()中添加下面的代码用于创建选择框 //创建一个选择框 //当选中某个棋子的时候,选择框会套在选好的棋子上 _selectSprite = CCSprite::create("selected.png"); addChild(_selectSprite); //隐藏选择

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

来源:www.ajerp.com/bbs C#中国象棋+游戏大厅 服务器 + 客户端源码 源码开源 C#版中国象棋(附游戏大厅) 基于前人大虾的修改版 主要用委托实现 服务器支持在线人数,大厅桌数的设置 游戏互不干扰 这个象棋大厅程序完全可以当做是C#委托事件的教程,而且游戏大厅功能也很多,服务器还可设置人数和桌数,大厅客户端也实时更新相关数据. 源码下载地址:http://www.ajerp.com/bbs/forum.php?mod=viewthread&tid=29&extra=pa

Qt版本中国象棋开发(四)

内容:走法产生 中国象棋基础搜索AI, 极大值,极小值剪枝搜索, 静态估值函数 理论基础: (一)人机博弈走法产生: 先遍历某一方的所有棋子,再遍历整个棋盘,得到每个棋子的所有走棋情况(效率不高,可以改进) 1 void SingleGame::getAllPossibleMove(QVector<Step *> &steps) 2 { 3 int min, max; 4 if(this->_bRedTurn) 5 { 6 min = 0, max = 16; 7 } 8 els

中国象棋小游戏(实验三)

一.题目简介 中国象棋历史悠久,本实验的目的是设计一个中国象棋小游戏的java程序,实现中国象棋游戏的基本功能. 二.结对分工及过程 本人和赵岳刚同学分工协作,由一人搜集资料,另一人收集整理,在一人编写代码的同时,由另外一人负责观察代码写的有没有问题,大大提高了工作效率. 三.代码地址 https://github.com/CaesarLH/text3/blob/master/Chess.txt 四.测试情况 过程截图: 1.开始 2.棋子信息 3.棋子走法 4.定义胜利条件 5.其他具体规则