Cocos2d-X中国象棋的发展《五岁以下儿童》摆棋
在博客上,以实现创建的游戏场景。而一些button,因为button落实到事件作出详细答复,需要使用一些功能摆棋。为此我特意button上的背面的具体实施,
在摆棋前先理清一下摆棋的思路:
1、创建一个Stone类处理棋子信息
2、建立一个表保存棋子信息
3、创建棋子
4、初始化棋子
5、摆棋子
摆棋的效果:
玩家持红棋
玩家持黑棋
创建一个Stone类用于处理棋子的信息。设置Stone类由CCSprite派生而来
//棋子类
class Stone : public CCSprite
{
public:Stone();//棋子的类型:将、士、相、车、马、炮、兵enum TYPE {JIANG,SHI,XIANG,CHE,MA,PAO,BING};//创建棋子//第一个參数:棋子的类型//第二个參数:棋子的颜色static Stone* create(int id, bool red);//初始化棋子bool init(int id, bool red);//摆棋子void reset(bool red);//保存梅个棋子的初始位置static struct InitPos{int _x;int _y;Stone::TYPE _type;}_initPos[16];CC_SYNTHESIZE(TYPE, _type, Type)CC_SYNTHESIZE(int, _x, X)CC_SYNTHESIZE(int, _y, Y)CC_SYNTHESIZE(int, _id, ID)CC_SYNTHESIZE(bool, _dead, Dead)CC_SYNTHESIZE(bool, _red, Red)/*//棋子的位置(坐标)int x;int y;int _id;//棋子的ID 0~31(一共同拥有32个棋子)bool dead;//推断棋子是否被吃了bool _red;//推断棋子的颜色*/
};
建立一个表保存棋子的信息
//创建一张表
Stone::InitPos Stone::_initPos[16] =
{//车的位置(0,0){0, 0, Stone::CHE},//马的位置(1,0){1, 0, Stone::MA},//相的位置(2,0){2, 0, Stone::XIANG},//士的位置(3,0){3, 0, Stone::SHI},//将的位置(4,0){4, 0, Stone::JIANG},//士的位置(5,0){5, 0, Stone::SHI},//相的位置(6,0){6, 0, Stone::XIANG},//马的位置(7,0){7, 0, Stone::MA},//车的位置(8,0){8, 0, Stone::CHE},//炮的位置(1,2){1, 2, Stone::PAO},//炮的位置(7,2){7, 2, Stone::PAO},//兵的位置(0,3){0, 3, Stone::BING},//兵的位置(2,3){2, 3, Stone::BING},//兵的位置(4,3){4, 3, Stone::BING},//兵的位置(6,3){6, 3, Stone::BING},//兵的位置(8,3){8, 3, Stone::BING},
};
创建棋子
//创建棋子
//第一个參数:棋子的类型
//第二个參数:棋子的颜色
Stone* Stone::create(int id, bool red)
{Stone* s = new Stone();s->init(id, red);s->autorelease();return s;
}
初始化棋子
/初始化棋子
//象棋的一次性初始化
bool Stone::init(int id, bool red)
{_id = id;//获得棋子的id//当棋子的id小于16时,棋子是红色的_red = _id < 16;//初始化红色的棋子if(_id < 16){_type = _initPos[_id]._type;}else//初始化黑色的棋子{//类型(车、马、炮)同样颜色不同的两个棋子的id相差16_type = _initPos[_id-16]._type;}const char* stonePic[14] = {"rshuai.png", //(红色)帅"rshi.png", //(红色)士"rxiang.png", //(红色)相"rche.png", //(红色)车"rma.png", //(红色)马"rpao.png", //(红色)炮"rbing.png", //(红色)兵"bjiang.png", //(黑色)将"bshi.png", //(黑色)士"bxiang.png", //(黑色)相"bche.png", //(黑色)车"bma.png", //(黑色)马"bpao.png", //(黑色)炮"bzu.png" //(黑色)卒};//计算图片的下标//假设棋子是红色的 idx = _type//假设棋子是黑色的 idx = 7 + _type//两个棋子的颜色的下标相差 7int idx = (_red ? 0 : 1) * 7 + _type;//创建精灵(创建棋子)CCSprite::initWithFile(stonePic[idx]);//压缩棋子setScale(.8f);//摆棋子(设置棋子的位置)reset(red);return true;
}
摆放棋子
//摆放棋子
//參数:用于推断游戏玩家选择进入游戏场景时是否
//点了红色的棋子
void Stone::reset(bool red)
{//刚摆棋子的时候棋子没被吃掉this->setDead(false);if(red)//当玩家点红色的棋子进入游戏场景时{//玩家的棋子的颜色为红色if(_id < 16)//摆放红色的棋子{//设置棋子的x坐标this->setX(_initPos[_id]._x);//设置棋子的y坐标this->setY(_initPos[_id]._y);}else//摆放黑色的棋子{this->setX(8 - _initPos[_id-16]._x);//两个类型同样颜色不同的棋子的y坐标相差9//如:红色的车和黑色的车的y坐标相差9this->setY(9 - _initPos[_id-16]._y);}}else//当玩家点黑色的棋子进入游戏场景时{//玩家的棋子的颜色是黑色if(_id < 16)//摆放黑色的棋子{this->setX(8 - _initPos[_id]._x);this->setY(9 - _initPos[_id]._y);}else//摆放红色的棋子{//两个类型同样颜色不同的棋子的id相差16//如:红色的车和黑色的车的id相差16this->setX(_initPos[_id-16]._x);this->setY(_initPos[_id-16]._y);}}
}
版权声明:本文博主原创文章。博客,未经同意不得转载。
Cocos2d-X中国象棋的发展《五岁以下儿童》摆棋相关推荐
- PE文件结构(五岁以下儿童)基地搬迁
PE文件结构(五岁以下儿童) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 基址重定位 链接器生成一个PE文件时,它会如果程序被装入时使用的默认ImageBase基地址(VC默认 ...
- python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹
python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...
- 5岁自学python编程-python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹...
python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...
- 斗争程序猿(四十一)——历史朝代大学(五岁以下儿童)——我的娱乐
文/温国兵 忙碌的大学生活总要有属于自己的娱乐方式.琴棋书画也好,游戏运动也罢. 上大学开通了人人网.新浪微博.腾讯微博.再到后来的微信.陌陌.来往.易信.米聊.Line.WhatsAPP,加上最開始 ...
- 阐述linux IPC(五岁以下儿童):system V共享内存
[版权声明:尊重原创.转载请保留源:blog.csdn.net/shallnet 要么 .../gentleliu,文章学习交流,不用于商业用途] system V共享内存和posix ...
- 开玩笑html5(五岁以下儿童)---绕地球月球,地球绕太阳运动(canvas实现,同样可以移动哦)...
请珍惜劳动小编成果,这篇文章是原来小编,转载请注明出处. 速度的參数与真实速度有点差距.大家能够自行调整 <!DOCTYPE html> <html> <head> ...
- NGUI 3.5课程(五岁以下儿童)button-图片切换
然后,我们去了一个样本,做一个button画面切换. 特征,像球员"开始"和"暂停". 写TestButton.cs脚本: using UnityEngine; ...
- 计算4000000000内的最大f(n)=n值---字符串的问题python实现(五岁以下儿童)
问题: 写一个函数,计算4 000 000 000 以内的最大的那个f(n)=n的值,函数f的功能是统计全部0到n之间全部含有数字1的数字和.比方:f(13)= 6,由于"1"在& ...
- 用html5画地球椭圆绕太阳,开玩笑html5(五岁以下儿童)---绕地球月球,地球绕太阳运动(canvas实现,同样可以移动哦)...
请珍惜劳动小编成果,这篇文章是原来小编,转载请注明出处. 速度的參数与真实速度有点差距.大家能够自行调整 地球绕着太阳转,月球绕着地球转 您的浏览器不支持canvas //获取画布 var canva ...
最新文章
- NVIDIA Turing Architecture架构设计(上)
- Unity OBB分包(基础APK+OBB) 与apk签名
- 新人与三年经验的交互设计师有多大的差距?
- python做请求转发_RequestDispatcher实现请求转发
- oracle怎么以时间排序,oracle指定数据排序在前面怎么处理
- xms和xmx为什么要相同_为什么开料机价格相差这么多?秘密在这里,你知道吗?...
- 对比鸿蒙,Google 的 Fuchsia 当前进度如何?
- 二位数组的示例 go语言
- codeforces 486 E. LIS of Sequence(dp)
- python 培训 邹博
- 测试工程师常见的算法面试题
- tif数据84坐标经纬度转Unity3D坐标
- Python如何使用Any和All?代码示例和解析
- 以下哪些是微型计算机,2017版计算机试题及答案
- eval()与train()(结合源码理解)
- 微信 进入公众号获取地理位置
- NBU OJ1211:一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。
- 美白宫高级顾问遭CWA黑客组织网络攻击
- 360P2建html网站,360 P2路由器密码用手机怎么设置?
- 基于java的校园二手网站的设计与实现