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