开源H5棋牌 cocos creator微信棋牌小游戏 幼麟棋牌客户端分析笔记

此文紧接上文的服务端分析来进行客户端的分析

LoadingLogic.js  (与初始化场景绑定 初始化各个组件 获取版本信息 加载资源)

       1.onload:显示 splash 界面

                初始化各个组件

       2.start:checkVersion

              -varURL = "http://127.0.0.1:9000";(http.js中配置的原始值)

              -sendRequest("/get_serverinfo")

 

       返回值: 包含版本信息 大厅连接地址 app网页地址

           var ret = {

                 version:config.VERSION,

                 hall:hallAddr,

                 appweb:config.APP_WEB,

           }

           cc.vv.SI = ret;(设置服务器信息)

      

       3.startPreloading加载资源

       4.onLoadComplete资源加载完毕后 loadScene("login");

 

Login.js   (与登陆场景绑定响应相关登陆按键消息)

1.     onload:

cc.vv.http.url = cc.vv.http.master_url;( cc.vv.http.master_url为初始化了的静态变量)

2.     start:

  本地存储的账号密码不为空则 cc.vv.userMgr.onAuth(ret);

 

3.     点击 游客登陆

cc.vv.userMgr.guestAuth();

       如果URL参数中不包含账号信息则随机生成账号

cc.vv.http.sendRequest("/guest");

       回调onAuth

       如果登陆成功

            //设置获取版本信息时返回的服务器地址

            cc.vv.http.url = "http://" + cc.vv.SI.hall;

            login();

                            -sendRequest("/login");

                                   -登陆成功则loadScene("hall");

Hall.js(绑定大厅场景 获取和更新相关用户信息 响应创建、加入游戏按键事件)

       1.onload:

              如果oldRoomID 不为空 则作为房间号进入此房间

        if( cc.vv.userMgr.oldRoomId!= null){

            cc.vv.userMgr.enterRoom(roomId);

        }

 

       2.Update:

              存在房间数据则自动进入到房间

        if(cc.vv &&cc.vv.userMgr.roomData != null){

           cc.vv.userMgr.enterRoom(cc.vv.userMgr.roomData);

           cc.vv.userMgr.roomData = null;

        }

 

       3.界面中绑定了CreateRoom.js 和 JoinGameInput.js组件

              CreateRoom.js(处理创建房间面板相关消息事件)

                     -cc.vv.http.sendRequest("/create_private_room");

                     创建房间成功

       cc.vv.userMgr.enterRoom(roomId);

                                   //返回数据ret中包含游戏房间服务器地址和端口信息

              -cc.vv.http.sendRequest("/enter_private_room",data,onEnter);

                              -cc.vv.gameNetMgr.connectGameServer(ret);

 

              -JoinGameInput.js(处理加入房间面板相关消息事件)

cc.vv.userMgr.enterRoom(roomId);

                            //返回数据ret中包含游戏房间服务器地址和端口信息

       -cc.vv.http.sendRequest("/enter_private_room",data,onEnter);

                   -cc.vv.gameNetMgr.connectGameServer(ret);

 

   connectGameServer:function(data){

       //连接游戏房间之前设置好游戏房间地址和端口信息

       cc.vv.net.ip = data.ip +":" + data.port;

              //emit“login” 事件 到服务端

              cc.vv.net.send("login",sd);

}

 

客户端监听两个登陆结果事件

cc.vv.net.addHandler("login_result ");(登陆返回结果)

 

       //监听房间服务器返回登陆成功的消息

       cc.vv.net.addHandler("login_finished",function(data){

            console.log("eventlogin_finished");

            cc.director.loadScene("mjgame");

       });

 

MJGame.js     监听服务端关于游戏的消息事件

onLoad:初始化各类游戏需要的组件

       -onGameBeign()根据数据 同步客户端画面 用于恢复游戏场景 断线重连

 

客户端网络地址变化

1.    http.js中配置的原始值 获取游戏版本信息

var URL = "http://127.0.0.1:9000";

       -sendRequest("/get_serverinfo")

 

     返回值: 包含版本信息 大厅连接地址 app网页地址

         var ret = {

               version:config.VERSION,

               hall:hallAddr,

               appweb:config.APP_WEB,

         }

         cc.vv.SI = ret;(返回值包含大厅服务器地址信息)

 

2.   //设置获取版本信息时返回的服务器地址为websocket 连接地址

   cc.vv.http.url = "http://" +cc.vv.SI.hall;

              -sendRequest("/login");

                     登陆成功则loadScene("hall");

 

3. 返回数据ret中包含游戏房间服务器地址和端口信息

cc.vv.userMgr.enterRoom(roomId);

cc.vv.http.sendRequest("/enter_private_room",data,onEnter);

       返回数据

          var ret = {

             roomid:roomId,

             ip:enterInfo.ip,

             port:enterInfo.port,

             token:enterInfo.token,

             time:Date.now()

           };

 

    cc.vv.gameNetMgr.connectGameServer:function(data){

        //设置 socket-io 连接地址信息

        cc.vv.net.ip = data.ip + ":" + data.port;

              cc.vv.net.connect();

    }

 

服务端 客户端网络通讯方式

Client to Server

1.websocket发送http请求

cc.vv.net.send(event,data);

eg:

cc.vv.net.send("emoji",event.target.name);

   2.socket-io

          this.sio.emit(event,data);

 

  Server to Client

socket-io 发送事件

       socket.emit(event,data);


客户端点击游客登陆

   onBtnQuickStartClicked:function(){

       cc.vv.userMgr.guestAuth();

},

guestAuth:function(){

    //如果没有保存的账号 则随机生成一个游客账户

    if(account == null){

        account = Date.now();

       cc.sys.localStorage.setItem("account",account);

    }

    cc.vv.http.sendRequest("/guest",{account:account},this.onAuth);

}

onAuth:function(ret){

    var self = cc.vv.userMgr;

    self.account = ret.account;

    self.sign = ret.sign;

 

    //返回版本信息时 返回的服务器地址

    cc.vv.http.url = "http://" +cc.vv.SI.hall;

    self.login();

}  

    login:function(){

        var self = this;

        var onLogin = function(ret){

            //account不存在 则创建一个用户

            if(!ret.userid){

               cc.director.loadScene("createrole");

            }

            else{

                      cc.director.loadScene("hall");

            }

        };

        cc.vv.wc.show("正在登录游戏");

        cc.vv.http.sendRequest("/login",{account:this.account,sign:this.sign},onLogin);

}

 

服务端对登陆请求的处理

app.get('/login',function(req,res){

       // 查询数据库中的表 t_users是否存在数据

       db.get_user_data(account,function(data){

              if(data == null){

                     console.log("如果不存在用户数据则让客户端创建一个用户");

                     http.send(res,0,"ok");

                     return;

              }

}
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
幼麟棋牌社区版,是幼麟棋牌开源版本,用于提供给大家学习游戏服务器编程和客户端编程。 在此之前,幼麟棋牌早已开源Cocos社区,造成了不小的影响力。 已有不下百个团队或者个人在使用本套代码开发作品。 使用幼麟棋牌框架开发出来的产品更是无法统计,抛开幼麟科技官方的数十款不算,第三方已上线产品不下百款。 幼麟棋牌框架被业内众多爱好者评为 业界清流。 它打破了早期的C++为主的棋牌格局。开创了新一代的纯Javascript脚本模式。 同时也是目前唯一能够一次开发,同时发布iOS,Android,H5三端的棋牌框架。由于其纯脚本特性,在发布iOS和Android时,天然支持热更新功能。 有了幼麟棋牌的动静,业内也有部分团队开始以棋牌平台为主打,建立开源社区,希望在开源社区找到新的盈利模式。 幼麟棋牌社区版包含功能如下: 完整的服务器客户端源代码,搭建后即可运行 完整的房卡棋牌玩法(加入,创建房间) 完整的四川麻将玩法(血战到底,血流成河两种模式) 房卡战绩记录 微信登陆,微信分享 断线重连 适合人群: 想通过完整案例,快速入手游戏开发 想通过完整源码,快速开发棋牌游戏 想通过完整源码,快速开发麻将游戏 想替换一下美术资源,就拥有一款四川麻将 想直接打个包,就拥有一款四川麻将
### 回答1: Cocos Creator是一种基于JavaScript的游戏开发引擎,可用于开发简单的手机游戏应用程序,包括微信小游戏。目前,Cocos Creator平台上有120多套微信小游戏源代码可供游戏开发者使用,这些源代码包含了各种类型的游戏,如益智游戏、动作游戏、运动游戏、角色扮演游戏等等。这些源代码可大大加速游戏开发进程,并使游戏开发者能够专注于游戏的设计和创意。此外,通过Cocos Creator平台,游戏开发者可以使用丰富的可视化编辑工具和开发工具,轻松创建游戏精灵、动画和场景等元素,进而快速实现游戏的构建。总的来说,Cocos Creator平台上的120多套微信小游戏源代码为游戏开发者提供了可靠的资源和支持,使他们可以更快、更便捷地创建出高质量的微信小游戏,从而实现更大的商业成功。 ### 回答2: cocos creator是一款非常受欢迎的游戏开发引擎,其集成了丰富的功能和工具,可以很方便地构建2D和3D游戏。微信小游戏则是目前非常流行的一种轻量级移动游戏,因为与微信平台无缝集成,所以被越来越多的开发者采用。 在这样的背景下,120多套cocos creator微信小游戏源码的出现,可以让开发者更加便捷地开展游戏开发工作。这些源码涵盖了各种类型的游戏,如飞行射击、跑酷、休闲益智、卡牌战斗等等,开发者可以根据自己的需要选择适合自己的源码进行二次开发与修改。 使用这些源码,不仅可以节省大量的开发时间和精力,而且还可以获得很好的学习机会,了解其他优秀游戏的设计思路和开发技巧,从而提高自己的开发水平。当然,开发者也可以将这些源码用于商业项目,加速产品的上线和推广。 总之,cocos creator微信小游戏120多套源码的出现,为广大的游戏开发者带来了极大的便利和启示,也让我们更加期待未来cocos creator微信小游戏的发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值