写这个博客的时候,其实我已经开发了大部分~
php的部分、unity的部分已经很少了。 因为完全没有提到kbengine (简称kbe ),所以实际上很多时候php部分的逻辑可以直接转移到kbe上完成。 实际上,为了开发效率,项目的配置有些奇怪,因为同样的逻辑现在仍然用php写得很快
我现在在考虑kbe和php部分的联系问题:
1 .进入房间时,呼叫进入界面/room/join
2 .调用准备状态、接口/game/prepare
3.
a.php检测到准备玩家数量preparedplayercount==room.maxplayercount时(最后一个玩家调用准备界面),PHP端有52张卡(不含大小王)
b .向房间内的所有玩家发送游戏开始消息,并将刚生成的poolId通知kbe。 (每个房间中所有卡池的roundCount从1开始增加。 也就是说,新组建房间开始游戏并计算第一回合,每次生成新的卡池时回合数为1 ) )。
c .玩家(unity端)收到消息后,呼叫读卡器界面/game/getCards。 界面参数cardsCount根据具体的游戏玩法决定每人触摸多少排(例如斗地主13张),并准备游戏界面。
4 .通知先发牌的玩家(根据具体规则决定先发牌的玩家ID )向kbe发送消息。 unity端开始倒计时20秒,倒计时过程中该玩家需要调用卡界面/game/stepCards,将打出的卡连接到字符串中作为参数,如果选中则该参数为null 接口只需将出牌步骤记录在数据库表cards_pool_step中,不检查卡型是否合法,由unity端自行检查
5 .向KBE发送消息通知下一个玩家重复步骤4。 连续maxPlayerCount-1在一张卡记录为null的时刻判断为本回合的卡结束,记录此玩家的userID,开始下一张卡
6 .向KBE发送提示,要求此玩家出牌,重复步骤4~5,直到任一玩家的手牌数为0。 (具体游戏决定胜利条件),回合结束,客户端自行检测,胜利玩家调用回合界面/game/roundOver
7 .重复步骤2~6直到任一玩家离开房间
==================
界面数据:一位玩家从牌桌上摸了一张后:
{
'错误' : '发卡成功',
'错误代码' : ' 200 ',
'错误msg ' : ' get cards success ',
' cardPool':{
' poolId':'1'是,
' createtime ' : ' 2016-11-0404336050336015 ',
' cards ' : '3_ 10|3 _1|3_6|4_ 10|3 _8|4_ 12|3 _ 13|4 _2|6|2_4|1_ 10|4 _ 4
' roomId':'1003 ',
' roundCount':'1'
(,
' myCards':'1_7'
}
前缀1到4中花色后缀表示数字
cards是shuffle之后的卡池
unity端当前效果:
一张三张配对的步骤(桌布的UI素材还没给我我们的麻将桌布) :