ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[danger]游戏开始后,房间的游戏数据表保存在缓存中,缓存格式为S(‘game_roomid’) game_roomid缓存格式为 ``` [ 'room'=>['groupUid'=>10,'groupId'=>10,'roomGroup'=>'888888','roomId'=>10,'gameNum'=>8,'currentNum'=>1,'groupName'=>"亲友圈名称",gameId=>1,number=>1,groupName=>'亲友圈名称','gameSign'=>"Points"], 'config'=>['players'=>4,win=>[10,5] ],//游戏玩法 'user'=>[ '1'=> ['userSign'=>'username1','nickName'=>'昵称','headImg'=>'img/headImg.jpg','p'=>1], '2'=> ['userSign'=>'username2','nickName'=>'昵称','headImg'=>'img/headImg.jpg','p'=>2], '3'=> ['userSign'=>'username3','nickName'=>'昵称','headImg'=>'img/headImg.jpg','p'=>3], '4'=> ['userSign'=>'username4','nickName'=>'昵称','headImg'=>'img/headImg.jpg','p'=>4], ], 'point'=>['1'=>0,'2'=>0,'3'=>0,'4'=>0],//游戏积分 'ready'=>['1'=>1,'2'=>1,'3'=>1,'4'=>1],//记录那个用户已经准备好 'drawing'=>[p1,p2,p3,p4],//玩家出完牌的顺序 'cards'=>[],//底牌 'cardRecord'=>['1'=>[] ] , 'handCards'=>['1'=>[] ,'2'=>[] ,'3'=>[] ,'4'=>[] ],//手牌 'game'=>['banker'=>1,'double1'=>p,'double2'=>p,'discard'=>[],'userDiscard'=>2,nextP=>0,'userWait'=>['p'=>101,'type'=>1]], 'dissolve'=>['userDissolve'=>2,'user'=>['1'=>1] ],游戏解散记录 'isopen'=>0,游戏是否开始 ] ``` 数组说明,以上数组为一个游戏桌上的用户, >[info]room:游戏中房间的信息 groupUid:群主的用户id groupId:房间所在的群组id roomGroup:游戏房间中,房间所在的亲友圈群号 roomId:游戏房间中,房间id gameNum:游戏房间中,游戏的总局数 currentNum:游戏房间中,游戏当前的局数 groupName:亲友圈名称 number:亲友圈的桌号 gameId:游戏id gameSign:游戏标识 >[info]config:游戏中房间的配置 players:游戏人数 win:玩家赢牌后输赢积分,格式[10,5]表示第一个玩家赢10,倒数第一输10,倒数第二输5 >[info]user:房间的用户信息 user的key值为用户的位置 userSign:用户唯一标识,可以id也可以是用户名,或者其它 nickName:用户昵称 headImg:用户头像图片 p:中用户所在的位置 >[info]point:用户的积分 point的key值为用户的位置 point的值为用户的积分 >[info]cardRecord:每个用户出牌的记录 cardRecord的key值为用户的位置 point的值为用户出牌的牌值 >[info]drawing:出牌完成的先后顺序 drawing的值为用户的位置 >[info]ready:用户准备的记录 ready的key值为用户的位置 ready的值为当前的游戏局数,表示已经准备 >[info]cards:游戏底牌,为数组,值为牌值 >[info]handCards:用户的手牌 handCards的key值为用户的位置 handCards的值是一个数组 ,手牌的可以打出的 >[info]game:游戏的中动作的记录 banker:当前红三玩家 discard:当前游戏最后一次所出的牌 userDiscard:当前游戏最后一次出牌的用户位置 nextP:出牌位置 double1:响的玩家的位置 double2:提的玩家的位置 userWait:玩家等待操作,响,提操作 ``` 'userWait'=>[ 'p'=>1, //轮到那个玩家操作 'type'=>1// 1表示响,2表示提 ] ``` >[info]dissolve:游戏解散记录 userDissolve:发起解散的用户位置 user:点击同意和拒绝的记录,key值为用户位置,值不为真表示没点击按钮,为1表示同意解散,为2表示拒绝解散 userDissolve 发起解散用户的位置 p time 发起解散游戏的时间戳 timer 定时器id >[danger]游戏流程描述 >第一步:会员进入房间时 1. 判断当前游戏桌是否人满,判断方式:config['players']与count(user)比较,如果游戏人满,提示游戏满员 2. 如果游戏没有满员,获取桌子无人位置,$P 3. 写如会员信息 $user[$P]=[用户信息] 4. 设置用户积分$point[$P]=[默认积分] 5. 设置用户准备标识 $ready[$P]=$room['currentNum'] 6. 通过 $config['players'] <= count($user)比较, 达到开始游戏的人数游戏就开始 >第二步:开始游戏 1. 生成游戏底牌 2. 开始发牌,将牌写入到$handCards[$P]中 3. 当遇到红三,设置庄家为获取红三的玩家位置 4. 设置userWait响玩家的位置 >第三步:开始响牌,由红三玩家开始点击 1. 轮流点击直到轮到红三玩家终止 2. 红三玩家出牌 >[danger]游戏牌型 >单牌,服务器推送格式为 ``` {type=>1,cards=>101} ``` >对子,服务器推送格式为 ``` {type=>2,cards=>[101,202] } ``` >顺着,服务器推送格式为 ``` {type=>3,cards=>[101,202,303] } ``` >姐妹对,服务器推送格式为 ``` {type=>4,cards=>[101,201,102,302,403,103] } ``` >三张炸弹,服务器推送格式为 ``` {type=>5,cards=>101 } ``` >四张炸弹,服务器推送格式为 ``` {type=>6,cards=>101 } ```