//----------------------------------------------------------------end /// <summary> /// 检测出的牌可能组成的顺子 /// </summary> /// <param name="cdsplitStruct"></param> /// <param name="hdSplitSutuct">所有手牌</param> private int[] CheckPossbShunzi(CdSplitStruct cdsplitStruct, CdSplitStruct hdSplitSutuct) { var danCds = cdsplitStruct.DanCds; if (cdsplitStruct.OrgCds.Length != danCds.Count || danCds.Count < 2) { return(null); } //排序好的 框出来的牌 var sortedCds = PokerRuleUtil.GetSortedValues(danCds.ToArray()); var listTemp = new List <int>(); listTemp.AddRange(hdSplitSutuct.DanCds); listTemp.AddRange(hdSplitSutuct.DuiCds); listTemp.AddRange(hdSplitSutuct.ThreeCds); listTemp.AddRange(hdSplitSutuct.FourCds); var keys = listTemp.ToArray(); var allposbShunList = PokerRuleUtil.GetAllPossibleShun(keys, 5); if (allposbShunList == null || allposbShunList.Count < 1) { return(null); } //存手牌中最终找到的那组顺牌 var findShun = new List <int>(); foreach (var shunCds in allposbShunList) { var shuncdsLen = shunCds.Length; if (shuncdsLen >= 5) { if (shunCds[0] <= sortedCds[0] && shunCds[shuncdsLen - 1] >= sortedCds[sortedCds.Length - 1]) { findShun.Clear(); findShun.AddRange(shunCds); break; } } } if (findShun.Count < 1) { return(null); } return(findShun.ToArray()); }
/// <summary> /// 检测出牌可能组成的连对 /// </summary> /// <param name="cdsplitStruct"></param> /// <param name="hdSplitSutuct"></param> /// <returns></returns> private int[] CheckpossbLianDui(CdSplitStruct cdsplitStruct, CdSplitStruct hdSplitSutuct) { var danCds = cdsplitStruct.DanCds; var duiCds = cdsplitStruct.DuiCds; if (cdsplitStruct.OrgCds.Length != danCds.Count + duiCds.Count * 2 || (danCds.Count + duiCds.Count) < 2) { return(null); } var chooseCdsValueList = new List <int>(); chooseCdsValueList.AddRange(danCds); chooseCdsValueList.AddRange(duiCds); chooseCdsValueList.Sort(); //存手牌中对牌的值列表 var allduiHandCdValue = hdSplitSutuct.DuiCds; //框选出的牌 var chooseCds = chooseCdsValueList.ToArray(); //所有可能的连对 组 var alposbLdList = PokerRuleUtil.GetAllPossibleShun(allduiHandCdValue.ToArray(), 3); if (alposbLdList == null || alposbLdList.Count < 1) { return(null); //没有找到符合条件的连对 } var findLd = new List <int>(); foreach (var ldCds in alposbLdList) { var ldLen = ldCds.Length; if (ldLen >= 3) { if (ldCds[0] <= chooseCds[0] && ldCds[ldCds.Length - 1] >= chooseCds[chooseCds.Length - 1]) { findLd.Clear(); findLd.AddRange(ldCds); break; } } } if (findLd.Count < 1) { return(null); //没有找到符合条件的连对 } var findldLen = findLd.Count; var returnLdCds = new int[findldLen * 2]; int j = 0; for (int i = 0; i < findldLen; i++) { returnLdCds[j++] = findLd[i]; returnLdCds[j++] = findLd[i]; } return(returnLdCds); }