import BGS from '../../js/bmobgamesdk/bgsapi';//根据你自己的存放路径更改 let model = BGS.instance; model.Init('3f729baax0', 'ws://139.159.220.251:29175', function (succ, msg) { if (succ) { // 用bmob小程序sdk进行登录注册 // _getUser(listener); } else{ // 提醒失败,并给重新init的按钮 } });
import BGS from '../../js/bmobgamesdk/bgsapi';//根据你自己的存放路径更改 let model = BGS.instance; var userId = Bmob.User.current().id; model.CreateRoom(userId, 2, function(isOK, res) { console.log("res >", res); if (isOK) { var roomInfo = res.roomInfo; console.log('对战开房成功', _data); // 创建房间成功,跳转游戏房间页面,别忘了把房间信息roomInfo传递过去 } else { common.showModal('对战开房失败,' + res); } });
{ "address": "a.b.c.d", // 服务器ip "roomInfo": { "ports": { "websocket": efgh // 服务器端口 }, "rid": xxx, // 房间id "joinKey": yyy // 房间密匙 } }
这样,你就获得了初始化sdk的第二个参数,是 ws://a.b.c.d:efgh 这样的格式
import BGS from '../../js/bmobgamesdk/bgsapi';//根据你自己的存放路径更改 let model = BGS.instance; if (this.isConnected) return; t('连接房间'); this.mRoomActListener = this.onRoomAction.bind(this); this.mOfflineListener = this.onOffline.bind(this); model.RegistRoomActListener(this.mRoomActListener);// 注册系统通知监听,详细参考官网下载的demo model.RegistOfflineListener(this.mOfflineListener);// 注册掉线通知监听 let emptyFun = function() {}; model.SetGameRuntimeListeners( emptyFun,//这三个监听器本游戏中没有涉及 emptyFun, emptyFun, this.onTransfer.bind(this),// 玩家间交互信息的监听器 this.onCloudNotify.bind(this)//云端代码通知的监听器 ); // 加入房间 // 这里的roomData就是创建房间时让你保存的roomInfo啦 model.JoinRoom(that.roomData.rid, that.roomData.joinKey, userId, model.get('seatKey'), function(isOK, data) { if (isOK) { common.toast('加入房间成功'); console.log("房间信息:", data);
let playerCount = data.playerCount, no = data.no, isPlaying = data.isPlaying, players = data.players, masterId = data.master; // 根据返回的房间信息做些保存或处理,这里不详细写出来,大家根据自己的情况灵活变通... if (data.seatKey) model.set('seatKey', data.seatKey); that.isConnected = true; return; }
//加入房间失败 if (data.indexOf("204") > -1) data = "房间已关闭"; else if (data.indexOf("206") > -1) data = "房间已满员"; else if (data.indexOf("201") > -1) data = "未知错误"; else if (data.indexOf("203") > -1) data = "没有登陆"; else if (data.indexOf("208") > -1) data = "游戏中"; else if (data.indexOf("204") > -1) data = "房间不存在"; else if (data.indexOf("202") > -1) data = "参数错误"; console.log('加入房间失败:', data); }.bind(this)); // 收到客户端的回调 onTransfer(no, res) { console.log("收到客户端的回调:" + no, res) let flag = res.shift(); switch (flag) { case 1: // 下棋 t('收到客户端的下棋数据'); t(res); break; case 2: // 被请求悔棋 // ... } }, // 收到云端代码服务端的回调
onCloudNotify(notify) { notify = JSON.parse(model.bytesToString(notify, 0, notify.length)); console.log("收到服务器的回调:", notify); // ... },
// 玩家之间交互数据,上面的onTransfer会收到对方发送的 // 要以byte数组形式,一般把数组的第一位作为自定义交互类型flag,后面的为要交互的数据 model.SendTransferToAllExceptSelf([1, ...]); // sdk特别提供了把string和byte数组互转的方法 model.stringToBytes('string'); // string转byte[] model.model.bytesToString(bs, 0, bs.length); // byte[]转string // 调用云端代码,参数为云端代码方法名 model.CloudAction('Ready');
//生命周期函数--监听页面卸载 onUnload: function() { if (that.battle && that.isConnected) { // model.SendTransferToAllExceptSelf([4]);// 向对方发送离开信息 model.UnregistOfflineListener(this.mOfflineListener); model.StopGameRuntimeListener(); this.mOfflineListener = null; model.QuitRoom(); } }
可加官方客服QQ:2967459363
微信小程序搜索<棋头并进>,体验此款下棋微信小游戏