×

基于Cocos2d-X 3.17与cocostudio V3.10开发的单机麻将游戏

消耗积分:0 | 格式:zip | 大小:49.24 MB | 2022-06-23

吴湛

分享资料个

授权协议 未知
开发语言 C/C++
操作系统 跨平台
软件类型 开源软件
所属分类 游戏/娱乐单机游戏

软件简介

COCOS2D-X 单机麻将

项目介绍

基于最新版 Cocos2d-X 3.17 与 cocostudio V3.10 开发的单机麻将游戏,麻将算法为商业级麻将服务器端算法,整个项目代码精简、注释详细。

  • 如果你刚刚接触Cocos2d-X 这绝对是个不错的入门项目

  • 如果是你C++初学者或者其他语言转游戏开发,这项目没有复杂的语法绝对是一个不错的学习项目

  • 如果你是游戏开发从业者想转行棋牌行业,这项目的棋牌算法绝对能够给予你启发

 

 

 

软件架构

  • 游戏引擎基于最新版本 Cocos2d-X v3.17

  • 游戏UI设计使用 Cocostudio3.10

  • 游戏使用C++开发

  • 商业级麻将算法

安装教程

  1. 由于Cocos2d源码比较庞大,GIT上不包括Cocos2d-X 3.17源码,所以第一步需要下载并且安装cocos2d-x-3.17 安装好后使用命令行创建个新项目,将项目里的cocos2d文件夹拷到本项目下,
    pYYBAGKn5a2Ac5HmAADxrpigVAg855.png

  2. 下载安装好Cocostudio3.10,打开UI.ccs文件即可编辑和发布UI
    poYBAGKn5bCACse8AAVEw-lJQL8293.png

  3. MAC直接用Xcode 或者AppCode 直接打开 proj.ios_mac 即可运行
    poYBAGKn5bGAMfxzAAGl5NNgJRY96.jpeg

  4. AndroidStudio安装直接打开 proj.android 项目即可运行
    pYYBAGKn5bOAHblQAAIPZQAx_Lc07.jpeg

  5. Visual Studio 安装未验证

源码说明

UI项目说明

  • cocosstudio目录为UI目录

  • UI.ccs是UI项目配置文件

文件 说明
HelloLayer.csd 欢迎界面层
AlertLayer.csd 弹框层
GameLayer.csd 游戏层
SetLayer.csd 设置层
GameOverLayer.csd 游戏结算层
Gang0.csd 横向显示杠的节点
Peng0.csd 横向显示碰的节点
Gang1.csd 竖向显示杠的节点
Peng1.csd 竖向显示碰的节点
BtnPeng.csd 碰按钮节点
BtnGang.csd 杠按钮节点
BtnHu.csd 胡按钮节点
BtnGuo.csd 过按钮节点
EffectZm.csd 自摸特效
EffectPeng.csd 碰特效
EffectHu.csd 胡特效
EffectGang.csd 杠特效
SignAnim.csd 标记当前出牌动画
MainScene.csd 没用

源码说明

文件 说明
AppDelegate.h/AppDelegate.cpp Cocos2d游戏启动类
GameSceneManager.h/GameSceneManager.cpp 单例,封装创建提示层、设置Scene和Layer等
AlertLayer.h/AlertLayer.cpp 弹出层类
HelloWorldScene.h/HelloWorldScene.cpp 游戏Scene类
BaseUILayer.h/BaseUILayer.cpp Cocostudio界面基类,封装了部分按钮事件绑定功能
HelloLayer.h/HelloLayer.cpp 游戏初始欢迎界面类
GameLayer.h/GameLayer.cpp 游戏层界面类,用来控制游戏的显示
SetLayer.h/SetLayer.cpp 游戏设置层
GameConfig.h/GameConfig.cpp 加载与存储游戏设置信息
ViewControl.h/ViewControl.cpp 通过观察者模式,控制界面切换
ViewObject.h/ViewObject.cpp 封装界面切换指令与数据
UIHelper.h/UIHelper.cpp UI工具类,封装节点查找方法
Utility.h 工具类,封装字符串操作方法
IPlayer.h 游戏玩家基类
AIPlayer.h/AIPlayer.cpp 机器人玩家
RealPlayer.h/RealPlayer.cpp 真实玩法
GameEngine.h/GameEngine.cpp 麻将引擎,控制游戏逻辑流转
GameLogic.h/GameLogic.cpp 麻将算法类
GameCmd.h 麻将传递的对象定义
AIEngine.h/AIEngine.cpp 机器人引擎
FvMask.h 标记位操作工具
  • GameEngine.h中定义的IGameEngineEventListener接口,该接口用于玩家处理游戏事件,AIEngine实现了机器人的游戏事件处理接口,GameLayer中实现了真实玩家的游戏事件处理接口。

参与贡献

  1. Fork 本项目

  2. 新建 Feat_xxx 分支

  3. 提交代码

  4. 新建 Pull Request

https://gitee.com/xiyoufang/cocostudio-mahjong

 

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'基于Cocos2d-X 3.17与cocostudio V3.10开发的单机麻将游戏',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);