Battle qg.getBattle()
获取一个对战对象
返回值
Battle 对战对象
示例代码:
var battle = qg.getBattle();
Battle.init(object)
对战初始化。初始化完成后可以获得对战信息,进行其他操作。(游戏双方都调用该方法后,才能触发success回调)
注:该方法只需要调用一次
参数
object
属性 | 类型 | 是否必填 | 说明 |
---|---|---|---|
success | function | 否 | 接口调用成功的回调函 |
fail | function | 否 | 接口调用失败的回调函数 |
complete | function | 否 | 接口调用结束的回调函数(无论成功失败都会执行) |
success(res) 回调函数
res
字段 | 类型 | 说明 |
---|---|---|
code | string | 状态code |
message | string | 返回的消息 |
pkgName | string | 游戏包名 |
tableId | string | 分配的桌子id |
tableToken | string | 分配的桌子token |
players | Array | 用户列表 |
res.players
字段 | 类型 | 说明 |
---|---|---|
uid | string | 临时分配的用户id,该id不是为真实用户uid |
name | string | 昵称 |
headIcon | string | 头像 |
sex | string | 性别 ,M为男性,F为女性 |
tag | number | 0:正常用户, 1: ai机器人 |
示例代码:
battle.init({
success: function(res){
console.log(JSON.stringify(res));
},
fail: function(res){
console.log(JSON.stringify(res));
},
complete: function(res){
console.log(JSON.stringify(res));
}
});
Battle.postGameStatus(object)
发送游戏当前的状态给平台。
注:调用postGameStatus设置游戏状态时,每个状态都只能调用一次,不要重复调用。
参数
object
属性 | 类型 | 是否必填 | 说明 |
---|---|---|---|
status | number | 是 | 1、准备就绪;2:游戏胜利结束。3:游戏平局结束。4:失败。 |
data | string | 否 | 游戏数据(预留字段) |
comment | string | 否 | 说明(预留字段) |
success | function | 否 | 接口调用成功的回调函 |
fail | function | 否 | 接口调用失败的回调函数 |
complete | function | 否 | 接口调用结束的回调函数(无论成功失败都会执行) |
示例代码:
battle.postGameStatus({
status: 1,
success: function(){
console.log("init ok");
}
});
Battle.onGameStart(callback)
平台通知游戏开始。平台主动调此方法触发开始逻辑。(双方都调用postGameStatus且status为1时,才会触发该方法)
参数
Function callback,回调方法
callback(res)
res
字段 | 类型 | 说明 |
---|---|---|
data | Object | 预留字段 |
示例代码:
battle.onGameStart(function(res){
console.log(JSON.stringify(res));
});
Battle.quit(object)
弹出确认对话框,提示是否退出对局。
注:该方法用于CP自己实现了退出按钮的通用处理逻辑,一般情况下不需要调用该方法;success回调不代表真正退出,仅将退出请求发送到服务端,退出游戏还是需要通过服务端驱动。
参数
object
属性 | 类型 | 是否必填 | 说明 |
---|---|---|---|
type | number | 是 | 0:弹出对话框,目前只支持0 |
comment | string | 否 | 说明(预留字段) |
success | function | 否 | 接口调用成功的回调函 |
fail | function | 否 | 接口调用失败的回调函数 |
complete | function | 否 | 接口调用结束的回调函数(无论成功失败都会执行) |
示例代码:
battle.quit({
type: 0,
success: function(){
console.log("send quit request ok");
}
});
Battle.postMessage(object)
游戏发送消息。
参数
object
属性 | 类型 | 是否必填 | 说明 |
---|---|---|---|
type | number | 是 | 1:广播,目前只支持1 |
data | string | 是 | 消息数据 |
success | function | 否 | 接口调用成功的回调函 |
fail | function | 否 | 接口调用失败的回调函数 |
complete | function | 否 | 接口调用结束的回调函数(无论成功失败都会执行) |
示例代码:
battle.postMessage({
type: 1,
data: "send text from player",
success: function(){
console.log("post message ok");
}
});
Battle.onMessage(callback)
游戏接收推送的消息。
参数
Function callback,回调方法
callback(res)
res
字段 | 类型 | 说明 |
---|---|---|
type | number | 1:广播 |
sender | string | 消息发送者 |
data | string | 消息 |
示例代码:
battle.onMessage(function(res){
console.log(JSON.stringify(res));
});
Battle.writeBlackboard(object)
游戏传数据给游戏平台。
参数
object
属性 | 类型 | 是否必填 | 说明 |
---|---|---|---|
key | string | 是 | 数据key字段 |
value | string | 是 | 数据value字段 |
success | function | 否 | 接口调用成功的回调函 |
fail | function | 否 | 接口调用失败的回调函数 |
complete | function | 否 | 接口调用结束的回调函数(无论成功失败都会执行) |
已经约定key-value:
key | value | 说明 |
---|---|---|
PLAYER_ONE_SCORE | 大于或等于0的整数 | 当前玩家分数 |
PLAYER_TWO_SCORE | 大于或等于0的整数 | 对手分数 |
示例代码:
battle.writeBlackboard({
key: "gamekey",
value: "test value",
success: function(){
console.log("send data ok");
}
});
状态码
success,fail,complete回调函数接收的参数有code属性,code含义:
code | 含义 |
---|---|
0 | 成功 |
201 | 权限错误 |
202 | 请求参数不合法 |
203 | 服务不可用 |
300 | IO错误 |
9100-9299 | 为前端错误码 |
9100 | 参数缺失或格式错误 |
对战Q&A
调用battle.init后,success回调函数一直没有执行?
答:battle.init必须对战双方都调用后,success回调函数才行执行。
调用battle.postGameStatus({status:1})后,battle.onGameStart(callback)绑定的回调函数一直没有执行?
答:同上面,battle.postGameStatus({status:1})表示双方初始化完毕,可以开始进行游戏。但必须双方都完成了,才会执行battle.onGameStart(callback)绑定的回调函数。
调用battle.postMessage后,对方battle.onMessage绑定的回调方法没有执行?
答:battle.postMessage如果不是普通文本(如url,序列化的json),建议发送方进行url encode或者base64编码,接收方收到数据后进行解码,避免传输过程中引起错误。
对战API的调用顺序?
答:调用顺序如下:
- 获取Battle对象
- 给battle的方法绑定回调函数(onGameStart,onMessage)
- 调用battle.init
- 在success回调中执行初始化操作
- 初始化操作完成后,执行battle.postGameStatus({status:1})
- 在onGameStart()绑定的回调函数执行开始游戏的逻辑
- 游戏结束时调用battle.postGameStatus({status: 2 / 3 / 4})