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

原文地址:https://www.cnblogs.com/tlnshuju/p/7007297.html