//检测能不能擦杠 public static bool IsCanCaGang(this FiveStarPlayer fiveStarPlayer) { for (int i = 0; i < fiveStarPlayer.OperateInfos.Count; i++) { if (fiveStarPlayer.OperateInfos[i].OperateType == FiveStarOperateType.Peng) { if (fiveStarPlayer.Hands.Contains(fiveStarPlayer.OperateInfos[i].Card)) { //如果亮倒了 擦杠的牌 只能是刚才自己摸的牌 if (fiveStarPlayer.IsLiangDao) { if (fiveStarPlayer.MoEndHand == fiveStarPlayer.OperateInfos[i].Card) { fiveStarPlayer.AddCanGangCard(fiveStarPlayer.OperateInfos[i].Card, FiveStarOperateType.CaGang); return(true); } else { return(false); } } fiveStarPlayer.AddCanGangCard(fiveStarPlayer.OperateInfos[i].Card, FiveStarOperateType.CaGang); return(true); } } } return(false); }
//检测能不能碰或者杠 public static int IsCanPengAndGang(this FiveStarPlayer fiveStarPlayer, int card) { fiveStarPlayer.intData = 0; for (int i = 0; i < fiveStarPlayer.Hands.Count; i++) { if (fiveStarPlayer.Hands[i] == card) { fiveStarPlayer.intData++; } } if (fiveStarPlayer.intData == 2) { if (fiveStarPlayer.IsLiangDao) { return(FiveStarOperateType.None); } return(FiveStarOperateType.Peng); } else if (fiveStarPlayer.intData == 3) { if (fiveStarPlayer.IsLiangDao && !fiveStarPlayer.LiangDaoNoneCards.Contains(card)) { return(FiveStarOperateType.None); } fiveStarPlayer.AddCanGangCard(card, FiveStarOperateType.MingGang); return(FiveStarOperateType.MingGang); } return(FiveStarOperateType.None); }
//添加可以暗杠的牌 public static void AddCanAnGangCard(this FiveStarPlayer fiveStarPlayer, int card) { if (fiveStarPlayer.IsLiangDao) { if (!fiveStarPlayer.LiangDaoNoneCards.Contains(card) || fiveStarPlayer.MoEndHand != card) { return;//如果玩家 亮倒了 而且 亮倒无关牌中 没有这张牌 他就不能暗杠这张牌 而且 只能暗杠杠摸的那种牌 } } fiveStarPlayer.AddCanGangCard(card, FiveStarOperateType.AnGang); }