麻将流程图

流程图

graph TD 准备 -->开始[开始游戏] 开始-->检查庄家胡[开局检查天胡] 检查庄家胡-->|Y| 胡[胡牌] 检查庄家胡-->|N| 出牌[出牌] 出牌-->检查碰杠胡[检查碰/杠/胡] 检查碰杠胡-->玩家选择碰杠胡过[玩家选择碰/杠/胡/过] 玩家选择碰杠胡过-->|杠|杠[杠] 玩家选择碰杠胡过-->|胡|胡[胡] 玩家选择碰杠胡过-->|碰|碰[碰] 玩家选择碰杠胡过-->|过|过[过] 过-->下家摸牌[下家摸牌] 碰-->出牌[出牌] 下家摸牌-->出牌[出牌] 杠-->出牌玩家摸牌[出牌玩家摸牌] 出牌玩家摸牌-->出牌[出牌] 胡-->结算[结算]

碰/杠,胡时,碰/杠先操作

sequenceDiagram 玩家1->>服务器:玩家1出牌|ASKOUT 服务器-->>玩家1:广播玩家1出牌|USEOUT 服务器-->>玩家2:广播玩家1出牌|USEOUT 服务器-->>玩家3:广播玩家1出牌|USEOUT 服务器-->>玩家4:广播玩家1出牌|USEOUT 服务器-->>玩家2:提示碰/杠|HINTOUT 服务器-->>玩家3:提示胡|HINTOUT 服务器-->>玩家4:等待操作|WAITOUT 服务器-->>玩家1:等待操作|WAITOUT 玩家2->>服务器:碰/杠|ASKOUT 服务器-->>玩家2:⚠️继续等待操作|WAITOUT(isKeep=true) 玩家3->>服务器:胡|ASKOUT 服务器-->>玩家1:广播玩家3胡牌|USEOUT 服务器-->>玩家2:广播玩家3胡牌|USEOUT 服务器-->>玩家3:广播玩家3胡牌|USEOUT 服务器-->>玩家4:广播玩家3胡牌|USEOUT

可碰/杠,碰/杠先操作且胡过

sequenceDiagram 玩家1->>服务器:玩家1出牌|ASKOUT 服务器-->>玩家1:广播玩家1出牌|USEOUT 服务器-->>玩家2:广播玩家1出牌|USEOUT 服务器-->>玩家3:广播玩家1出牌|USEOUT 服务器-->>玩家4:广播玩家1出牌|USEOUT 服务器-->>玩家1:等待操作|WAITOUT 服务器-->>玩家2:提示碰/杠|HINTOUT 服务器-->>玩家3:提示胡|HINTOUT 服务器-->>玩家4:等待操作|WAITOUT 玩家2->>服务器:碰/杠|ASKOUT 服务器-->>玩家2:⚠️继续等待操作|WAITOUT(isKeep=true) 玩家3->>服务器:过|ASKOUT 服务器-->>玩家1:广播玩家2碰/杠|USEOUT 服务器-->>玩家2:广播玩家2碰/杠|USEOUT 服务器-->>玩家3:广播玩家2碰/杠|USEOUT 服务器-->>玩家4:广播玩家2碰/杠|USEOUT

碰/杠 /胡都选择过

sequenceDiagram 玩家1->>服务器:玩家1出牌|ASKOUT 服务器-->>玩家1:广播玩家1出牌|USEOUT 服务器-->>玩家2:广播玩家1出牌|USEOUT 服务器-->>玩家3:广播玩家1出牌|USEOUT 服务器-->>玩家4:广播玩家1出牌|USEOUT 服务器-->>玩家1:等待操作|WAITOUT 服务器-->>玩家2:提示碰/杠|HINTOUT 服务器-->>玩家3:提示胡|HINTOUT 服务器-->>玩家4:等待操作|WAITOUT 玩家2->>服务器:过|ASKOUT 服务器-->>玩家2:⚠️继续等待操作|WAITOUT(isKeep=true) 玩家3->>服务器:过|ASKOUT 服务器-->>玩家2:给玩家2发牌(提示出牌)|HINTOUT 服务器-->>玩家1:等待玩家2出牌|WAITOUT 服务器-->>玩家3:等待玩家2出牌|WAITOUT 服务器-->>玩家4:等待玩家2出牌|WAITOUT

碰/杠,胡时,胡先操作

sequenceDiagram 玩家1->>服务器:玩家1出牌|ASKOUT 服务器-->>玩家1:广播玩家1出牌|USEOUT 服务器-->>玩家2:广播玩家1出牌|USEOUT 服务器-->>玩家3:广播玩家1出牌|USEOUT 服务器-->>玩家4:广播玩家1出牌|USEOUT 服务器-->>玩家1:等待操作|WAITOUT 服务器-->>玩家2:提示碰/杠|HINTOUT 服务器-->>玩家3:提示胡|HINTOUT 服务器-->>玩家4:提示等待WAITOUT 玩家3->>服务器:胡|ASKOUT 服务器-->>玩家1:广播玩家3胡牌|USEOUT 服务器-->>玩家2:广播玩家3胡牌|USEOUT 服务器-->>玩家3:广播玩家3胡牌|USEOUT 服务器-->>玩家4:广播玩家3胡牌|USEOUT 玩家2->>服务器:碰/杠|ASKOUT 服务器-->>玩家2:错误码|RETURN

两个玩家可以胡,一个玩家可以碰/杠

sequenceDiagram 玩家1->>服务器:玩家1出牌|ASKOUT 服务器-->>玩家1:广播玩家1出牌|USEOUT 服务器-->>玩家2:广播玩家1出牌|USEOUT 服务器-->>玩家3:广播玩家1出牌|USEOUT 服务器-->>玩家4:广播玩家1出牌|USEOUT 服务器-->>玩家1:等待操作|WAITOUT 服务器-->>玩家2:提示碰/杠|HINTOUT 服务器-->>玩家3:提示胡|HINTOUT 服务器-->>玩家4:提示胡|HINTOUT 玩家4->>服务器:胡|ASKOUT 服务器-->>玩家4:⚠️继续等待操作|WAITOUT(isKeep=true) 玩家2->>服务器:碰/杠|ASKOUT 服务器-->>玩家2:⚠️继续等待操作|WAITOUT(isKeep=true) 玩家3->>服务器:胡|ASKOUT 服务器-->>玩家1:广播玩家3,4胡牌|MultiUseOut 服务器-->>玩家2:广播玩家3,4胡牌|MultiUseOut 服务器-->>玩家3:广播玩家3,4胡牌|MultiUseOut 服务器-->>玩家4:广播玩家3,4胡牌|MultiUseOut

两个玩家可以胡,一个玩家可以碰

sequenceDiagram 玩家1->>服务器:玩家1出牌|ASKOUT 服务器-->>玩家1:广播玩家1出牌|USEOUT 服务器-->>玩家2:广播玩家1出牌|USEOUT 服务器-->>玩家3:广播玩家1出牌|USEOUT 服务器-->>玩家4:广播玩家1出牌|USEOUT 服务器-->>玩家1:等待操作|WAITOUT 服务器-->>玩家2:提示碰/杠|HINTOUT 服务器-->>玩家3:提示胡|HINTOUT 服务器-->>玩家4:提示胡|HINTOUT 玩家4->>服务器:胡|ASKOUT 服务器-->>玩家4:⚠️继续等待操作|WAITOUT(isKeep=true) 玩家3->>服务器:胡|ASKOUT 服务器-->>玩家1:广播玩家3,4胡牌|MultiUseOut 服务器-->>玩家2:广播玩家3,4胡牌|MultiUseOut 服务器-->>玩家3:广播玩家3,4胡牌|MultiUseOut 服务器-->>玩家4:广播玩家3,4胡牌|MultiUseOut 玩家2->>服务器:碰/杠|ASKOUT 服务器-->>玩家2:错误码

两个胡一个碰/杠

sequenceDiagram 玩家1->>服务器:玩家1出牌|ASKOUT 服务器-->>玩家1:广播玩家1出牌|USEOUT 服务器-->>玩家2:广播玩家1出牌|USEOUT 服务器-->>玩家3:广播玩家1出牌|USEOUT 服务器-->>玩家4:广播玩家1出牌|USEOUT 服务器-->>玩家1:等待操作|WAITOUT 服务器-->>玩家2:提示碰/杠|HINTOUT 服务器-->>玩家3:提示胡|HINTOUT 服务器-->>玩家4:提示胡|HINTOUT 玩家2->>服务器:碰/杠|ASKOUT 服务器-->>玩家2:⚠️继续等待操作|WAITOUT(isKeep=true) 玩家4->>服务器:胡|ASKOUT 服务器-->>玩家4:⚠️继续等待操作|WAITOUT(isKeep=true) 玩家3->>服务器:胡|ASKOUT 服务器-->>玩家1:广播玩家3,4胡牌|MultiUseOut 服务器-->>玩家2:广播玩家3,4胡牌|MultiUseOut 服务器-->>玩家3:广播玩家3,4胡牌|MultiUseOut 服务器-->>玩家4:广播玩家3,4胡牌|PBMultiUseOut

补杠

sequenceDiagram 玩家1->>服务器:补杠|ASKOUT 服务器-->>玩家2:提示胡|HINTOUT 服务器-->>玩家1:等待操作|WAITOUT 服务器-->>玩家3:等待操作|WAITOUT 服务器-->>玩家4:等待操作|WAITOUT 玩家2->>服务器:过|ASKOUT 服务器-->>玩家1:广播玩家1补杠成功|USEOUT 服务器-->>玩家2:广播玩家1补杠成功|USEOUT 服务器-->>玩家3:广播玩家1补杠成功|USEOUT 服务器-->>玩家4:广播玩家1补杠成功|USEOUT

抢杠胡

sequenceDiagram 玩家1->>服务器:补杠|ASKOUT 服务器-->>玩家2:提示胡|HINTOUT 服务器-->>玩家1:等待操作|WAITOUT 服务器-->>玩家3:等待操作|WAITOUT 服务器-->>玩家4:等待操作|WAITOUT 玩家2->>服务器:胡|ASKOUT 服务器-->>玩家1:广播玩家2抢杠胡|USEOUT 服务器-->>玩家2:广播玩家2抢杠胡|USEOUT 服务器-->>玩家3:广播玩家2抢杠胡|USEOUT 服务器-->>玩家4:广播玩家2抢杠胡|USEOUT

杠上花

sequenceDiagram 玩家1->>服务器:杠|ASKOUT 服务器-->>玩家1:广播玩家1杠|USEOUT 服务器-->>玩家2:广播玩家1杠|USEOUT 服务器-->>玩家3:广播玩家1杠|USEOUT 服务器-->>玩家4:广播玩家1杠|USEOUT 服务器-->>玩家1:给玩家1发牌(+出牌/胡牌)|HINTOUT 服务器-->>玩家2:等待操作|WAITOUT 服务器-->>玩家3:等待操作|WAITOUT 服务器-->>玩家4:等待操作|WAITOUT 玩家1->>服务器:胡|ASKOUT 服务器-->>玩家1:广播玩家1杠上花|USEOUT 服务器-->>玩家2:广播玩家1杠上花|USEOUT 服务器-->>玩家3:广播玩家1杠上花|USEOUT 服务器-->>玩家4:广播玩家1杠上花|USEOUT

一炮三响

sequenceDiagram 玩家1->>服务器:玩家1出牌|ASKOUT 服务器-->>玩家1:等待操作|WAITOUT 服务器-->>玩家2:提示胡|HINTOUT 服务器-->>玩家3:提示胡|HINTOUT 服务器-->>玩家4:提示胡|HINTOUT 玩家4->>服务器:胡|ASKOUT 服务器-->>玩家4:⚠️继续等待操作|WAITOUT(isKeep=true) 玩家3->>服务器:胡|ASKOUT 服务器-->>玩家3:⚠️继续等待操作|WAITOUT(isKeep=true) 玩家2->>服务器:胡|ASKOUT 服务器-->>玩家1:广播玩家2,3,4胡牌|MultiUseOut 服务器-->>玩家2:广播玩家2,3,4胡牌|MultiUseOut 服务器-->>玩家3:广播玩家2,3,4胡牌|MultiUseOut 服务器-->>玩家4:广播玩家2,3,4胡牌|MultiUseOut