>[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 }
```