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的调用顺序?

答:调用顺序如下:

  1. 获取Battle对象
  2. 给battle的方法绑定回调函数(onGameStart,onMessage)
  3. 调用battle.init
  4. 在success回调中执行初始化操作
  5. 初始化操作完成后,执行battle.postGameStatus({status:1})
  6. 在onGameStart()绑定的回调函数执行开始游戏的逻辑
  7. 游戏结束时调用battle.postGameStatus({status: 2 / 3 / 4})
© 2020 OPPO. All rights reserved.

results matching ""

    No results matching ""