cocos-js 麻将(一)
来源:互联网 发布:navicat破解版for mac 编辑:程序博客网 时间:2024/04/28 10:09
<1>麻将开发准备,分割模块;
{
1.手牌组件 {1.玩家自己手牌 2.其他人手牌}
2.出牌组件
3.吃、碰、杠牌组件
4.桌面初始牌组件
5.音效类
6.动画控制类
7.其他独立节点[吃碰杠操作,结算等];
}
预备文件:
1.src/common/GlbalFunc.js
先新建这个文件是在其中定义一些全局函数,方便以后操作进行,可随时在其中进行改动操作;
2.src/mj/LoadRes.js.js
资源管理文件,存放麻将所有资源的管理
3.src/mj/MjConst.js
定义一些常亮和枚举
1)灰图效果(主要用于查看选中牌在桌面出现有几张)
2)单张帧图的设置
3)单张散图的设置
4)设置牌值、类型、是否选中等等
接下来先把玩家自己的手牌组件完善。
{
1.手牌组件 {1.玩家自己手牌 2.其他人手牌}
2.出牌组件
3.吃、碰、杠牌组件
4.桌面初始牌组件
5.音效类
6.动画控制类
7.其他独立节点[吃碰杠操作,结算等];
}
预备文件:
1.src/common/GlbalFunc.js
先新建这个文件是在其中定义一些全局函数,方便以后操作进行,可随时在其中进行改动操作;
2.src/mj/LoadRes.js.js
资源管理文件,存放麻将所有资源的管理
3.src/mj/MjConst.js
定义一些常亮和枚举
GlbalFunc文件实现,暂时先使用位置大小的快捷获取文件和注册触摸函数
var gl = gl || {}//都当成有contentsize的处理吧SIZE = function(node){ if (node == null) return null; var size = node.getContentSize(); // if (size.width == 0 && size.height == 0){ // var size_ = node.getLayoutSize(); // return size_; // } else{ // return size; // } return size;}//获取坐标位置函数X = function(node) { if (node == null) return null; return node.getPositionX();}Y = function(node) { if (node == null) return null; return node.getPositionY();}W = function(node) { if (node == null) return null; return SIZE(node).width;}H = function(node) { if (node == null) return null; return SIZE(node).height;}gl.addNodeTouchEventListener = function(node, listener_){ var listener = cc.EventListenerTouchOneByOne.create(); listener.setSwallowTouches(true); var checkListener = function(touch, event){ if (listener_ && typeof(listener_) == "function"){ var location = touch.getLocation(); event.x = location.x; event.y = location.y; event.location = location; event.node = node; var ret = listener_(touch, event); return ret; } } listener.onTouchBegan = function (touch, event){ event.name = "began"; var ret = checkListener(touch, event); if (ret == null) ret = true; return ret; }; listener.onTouchMoved = function (touch, event){ event.name = "moved"; checkListener(touch, event); }; listener.onTouchEnded = function (touch, event){ event.name = "ended"; checkListener(touch, event); }; cc.eventManager.addListener(listener, node); return listener;}MjLoadRes文件实现,先将麻将的合图资源拿进来加载
/*加载麻将合图资源*/var MjRes = {};var MjPath = "res/mj/"MjRes.myPlist = {plist: MjPath + "my.plist", image: MjPath + "my.png"};MjRes.stPlist = {plist: MjPath + "st.plist", image: MjPath + "st.png"}; // topMjRes.ytPlist = {plist: MjPath + "yt.plist", image: MjPath + "yt.png"}; // rightMjRes.ztPlist = {plist: MjPath + "zt.plist", image: MjPath + "zt.png"}; // leftMjRes.xtPlist = {plist: MjPath + "xt.plist", image: MjPath + "xt.png"}; // bottomMjRes.operatorPlist = {plist: MjPath + "operator_ui.plist", image: MjPath + "operator_ui.png"}; // operator_uivar MjLoadRes = function(){var sPlists = [MjRes.myPlist, MjRes.stPlist, MjRes.ytPlist, MjRes.ztPlist, MjRes.xtPlist, MjRes.operatorPlist];for (var i = 0; i < sPlists.length; i++) {var Res = sPlists[i];cc.spriteFrameCache.addSpriteFrames(Res.plist, Res.image);}}//其他玩家手牌缓存资源名MjRes.OtherHandRes = [];MjRes.OtherHandRes[MJ.PlayerType.left] = "zl.png";MjRes.OtherHandRes[MJ.PlayerType.top] = "sl.png";MjRes.OtherHandRes[MJ.PlayerType.right] = "zl.png";MjLoadRes();
完成步骤之后开始界面的逻辑编写:
抽取组件中相同的部分,新建文件MjCard.js文件,在这个类中处理类单张麻将的构成和变化处理;
var MjCard = cc.Node.extend({
ctor: function()
{
this._super();
}
});
使用Node实现这个单张麻将的实现,考虑可能单张牌也是由多个部分整合而成,而组合成的各个节点间最好是保持独立的。
1.先大致考虑到这个类需要用到的属性和方法
2.牌值、类型(万条筒)、是否被选中、牌节点宽高、在手牌组件中的位置、纹理(界面相关)
var MjCard = cc.Node.extend({m_dValue: 0,//牌值m_dType: 0,//牌类型m_bSelect: false, //是否选中m_dItemWidth: 0, //牌宽m_dItemHeight: 0, //牌高m_dSortId: -1, //在手牌组件中的序号//uim_uiSprite: null, //纹理ctor: function(){this._super();}});3.实现可能需要用到的方法,在此之前还需在MjConst中去定义牌的牌值和类型配置;
var MJ = MJ || {}MJ.my_seat = 0; //本家位置 与下PlayerType对应MJ.GamePlayer = 4; //游戏人数MJ.MjType = {wan: 0,tiao: 1,tong: 2,feng: 3,hua: 4}MJ.PlayerType = {bottom: 0,right: 1,top: 2,left: 3}MJ.OperatorType = {chi: 0,peng: 1,mgang: 3,agang: 4,xgang: 5,hu: 6}// 0 牌背 1-9 万; 11-19 条; 21-29 筒; 31-37 风; 35-42 花//牌类型对应资源键值MJ.MyHandResEm = "xl%d.png";MJ.CardTypeEm = ["xt%d.png", "yt%d.png", "st%d.png", "zt%d.png"];4.实现方法
1)灰图效果(主要用于查看选中牌在桌面出现有几张)
2)单张帧图的设置
3)单张散图的设置
4)设置牌值、类型、是否选中等等
var MjCard = cc.Node.extend({m_dValue: 0,//牌值m_dType: 0,//牌类型m_bSelect: false, //是否选中m_dItemWidth: 0, //牌宽m_dItemHeight: 0, //牌高m_dSortId: -1, //在手牌组件中的序号//uim_uiSprite: null, //纹理ctor: function(){this._super();this.m_uiSprite = new cc.Sprite();this.addChild(this.m_uiSprite);},//展示灰牌(与手牌选中同值)setValueEqualColor: function(ret){if (ret){this.m_uiSprite.setColor(cc.color(108, 108, 108));} else {this.m_uiSprite.setColor(cc.color(255, 255, 255));}},//单张帧图setJSpriteFrame: function(sprite_frame){this.m_uiSprite.setSpriteFrame(sprite_frame);this.m_dItemWidth = W(this.m_uiSprite);this.m_dItemHeight = H(this.m_uiSprite);},//单张散图setJSpriteTexture: function(sprite_texture){this.m_uiSprite.setTexture(sprite_texture);this.m_dItemWidth = W(this.m_uiSprite);this.m_dItemHeight = H(this.m_uiSprite);},setCardValue: function(value){this.m_dValue = value;this.m_dType = Math.floor((value-1) / 9);}});如果统一命名规范可以不写get/set函数去调用属性,这样就暂时写完MjCard的内容,之后的东西再完善,
接下来先把玩家自己的手牌组件完善。
阅读全文
0 0
- cocos-js 麻将(一)
- cocos-js 麻将(二)
- cocos Creator js 房卡麻将/血战/H5四川麻将源码下载搭建
- 2017最新版H5四川房卡麻将源码,H5闲来麻将源码(基于Cocos-js引擎),含全套部署文档+代理系统+微信登陆
- Cocos-Js 准备(一)-基础语法
- cocos js 代码阅读笔记_170510(一)
- node.js——麻将算法(一)基本判胡
- cocos2dx 制作单机麻将(一)
- cocos2dx 制作单机麻将(一)
- hihocoder #1503 : 一人麻将
- 麻将算法(一)洗牌
- 麻将
- 麻将
- 麻将
- 麻将
- 麻将
- 麻将
- cocos js响应过程
- a元素在IE11与IE11以下浏览器中的不同渲染方式
- java.io.IOException: Server returned HTTP response code: 405 for URL:
- mysql规范
- zypper 添加本地源
- Idea 配置Maven
- cocos-js 麻将(一)
- java数据库连接问题
- 回溯法求马的遍历问题
- 一致性哈希
- java中接口的编程理解
- Spring-6.创建bean的三种方式
- vs2010 问题 >LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 饿了么:日订单量超900万的架构设计及演进之路
- Vue.js 实现省市联动