/// <summary> /// 洗牌:混乱牌包中的牌,0为无风 /// </summary> public void WashCard() { Init(); Random rand = MahjongGeneralAlgorithm.GetRandomObject(); for (int i = 0; i < m_cPackage.Count; i++) { int r = rand.Next(i, m_cPackage.Count); //交换 byte changeCard = m_cPackage[i]; m_cPackage[i] = m_cPackage[r]; m_cPackage[r] = changeCard; } }
/// <summary> /// 从牌包中获取一张指定集合中的牌,如果没有就抓牌包中第一张牌 /// </summary> /// <param name="checkSource"></param> /// <returns></returns> public byte HoldCardInSrc(List <byte> src) { if (m_cPackage.Count() < 1) { return(MahjongDef.gInvalidMahjongValue); } if ((null == src) || (src.Count < 1)) { return(HoldCard()); } int idx = -1; Random randObj = MahjongGeneralAlgorithm.GetRandomObject(); byte returnCard = MahjongDef.gInvalidMahjongValue; do { //获取要随机的牌 idx = randObj.Next(0, src.Count); //检查牌包中是否有该牌 if (m_cPackage.Contains(src[idx])) { returnCard = src[idx]; m_cPackage.Remove(returnCard); } src.RemoveAt(idx); } while ((returnCard == MahjongDef.gInvalidMahjongValue) && (src.Count > 0)); //如果牌包中没有指定集合中的牌,就抓第一张牌 if (returnCard == MahjongDef.gInvalidMahjongValue) { return(HoldCard()); } //找到这张牌就返回 return(returnCard); }
public byte getRandomPeiZi() { Random rand = MahjongGeneralAlgorithm.GetRandomObject(); return(m_ConstAllCard[rand.Next(0, MGMJConstants.gCardCount_Package)]); }