本帖最后由 mractivate 于 2018-10-17 20:36 编辑
采用http方式进行通信
客户端发出request。以post方式发出请求参数
服务器端返回response。以json格式返回数据
response的总体格式为:
{state:状态,data:具体数据对象}
state: 状态。0正常,1失败,2错误。
data: 返回的具体数据。state=0时,data的定义由以下各接口具体定义。state=1或2时,data为具体失败或错误的提示信息。
1、获取服务端时间接口 getTime
该接口用于查询服务端时间,当客户端与服务端时间不匹配时,可利用该接口重新同步时间
request:无
response:
服务端时间戳
(注意这里为避免重复书写,所以只写response中,state=0时,data的取值格式,以此处为例,最终完整的格式为{state:0,data:服务端时间戳})
2、注册接口 regist
该接口中包含了获取服务端时间,以便在注册操作中,顺带完成时间同步
request:
name:用户名
password:密码
response:
{userId:用户id,time:服务端时间戳}
3、登录接口 login
该接口中包含了获取服务端时间,以便在登录操作中,顺带完成时间同步
request:
name:用户名
password:密码
response:
{userId:用户id,time:服务端时间戳}
4、查询用户信息接口 getUserInfo
request:
userId:用户id
response:
{userId:用户id,name:用户名, win:胜场次数,lost:败场次数}
5、匹配玩家接口 match
request:
userId:用户id
response:
未匹配成功 {gameId:0}
gameId:为0代表未匹配成功。
匹配成功 {gameId:游戏id,player0:玩家id,player1:玩家id,initData:[000000,000001,......],startTime:游戏开始的时间戳} gameId:一旦匹配成功,就要建立一个游戏,在数据库的game表中创建一条记录,用于存储这个游戏的相关数据,gameId即是game表中创建的记录的主键值。
player0:玩家id,同时也是先手的玩家id。
initData:游戏初始化数据,例如:暗棋游戏,随机初始化的棋盘数据。弹珠游戏,双方的出场阵容。
startTime:游戏开始的时间戳,该时间应为匹配成功后,一定时间段之后。
详细说明: initData:游戏初始化数据 initData是一个长度为32的整型数组,每个数字,对应一个棋盘的位置的状态
第一位表示:棋格的状态:有子/无子,第二位表示:翻开/未翻开 , 第三位表示:player0的棋子/player1的棋子 , 低三位表示:棋子类型 例如:兵炮馬車。。。
6、游戏状态查询 getGameInfo
该接口是,当前等待对方操作的玩家,间隔一定时间就应查询的接口,以获取游戏状态的变化
request:
gameId:游戏id
response:
游戏未结束 {gameState:0,turn:当前的回合数,currentPlayer:当前可以操作的玩家id,timeLimit:当前操作的截止时间戳,lastOperate:最后一次操作的数据,gameData:[000000,000001,......]}
游戏结束 {gameState:1,turn:回合数,totalTime:游戏总用时,winner:获胜的玩家id(若平局则为0),lastOperate:最后一次操作的数据,gameData:游戏当前局面的数据}
详细说明: lastOperate:最后一次操作的数据: {coordinate:[x1,y1,x2,y2],turn:本次操作所属的回合数}
详细说明:
gameData:同initData
7、游戏操作接口 doOperate
request:
gameId:游戏id
userId:用户id
turn:回合数
operate:具体操作
response:
{result:操作结果,gameInfo:{gameState:0,……}}
result:0:操作成功,1:操作超时,1以上:其他错误,根据具体游戏进行定义
gameInfo:
游戏未结束 {gameState:0,turn:当前的回合数,currentPlayer:当前可以操作的玩家id,timeLimit:当前操作的截止时间戳,lastOperate:最后一次操作的数据,gameData:游戏局面的数据}
游戏结束 {gameState:1,turn:回合数,totalTime:游戏总用时,winner:获胜的玩家id(若平局则为0),lastOperate:lastOperate:最后一次操作的数据: {coordinate:[x1,y1,x2,y2],turn:本次操作所属的回合数} gameData:同initData}
8、C1/C2投降,接口surren
C1:request:
gameId:游戏id
userId:用户id
time:当前时间戳 surrenInfo:标志位(0为同意投降,1为不同意投降)
则当B玩家访问服务器进行下一步操作时,服务端response: gameId:游戏id
userId:用户id
surrenInfo:投降信息(0为同意投降。1为不同意投降)
time:当前时间戳,
C2:request:
gameId:游戏id
userId:用户id
surrenInfo:投降信息(0为同意投降。1为不同意投降)
time:当前时间戳 当服务端 收到的C1/C2 的surrenInfo:标志位(0为同意投降,1为不同意投降) 为00时:游戏结束gameState:1 为 01,10时:调用游戏状态查询接口 服务端:response:
gameInfo:
游戏未结束 {gameState:0,turn:当前的回合数,currentPlayer:当前可以操作的玩家id,timeLimit:当前操作的截止时间戳,lastOperate:最后一次操作的数据,gameData:游戏局面的数据}
游戏结束 {gameState:1,turn:回合数,totalTime:游戏总用时,winner:获胜的玩家id(若平局则为0),lastOperate:lastOperate:最后一次操作的数据: {coordinate:[x1,y1,x2,y2] , turn:本次操作所属的回合数},gameData:同initData}
|