void AddHuluKeyToList(CardInfo[] cards, float score) { if (isCheckSuitCount) { int[] value = new int[14]; List <int>[] suitCounts = new List <int>[4] { new List <int>(value), new List <int>(value), new List <int>(value), new List <int>(value) }; for (int i = 0; i < cards.Length; i++) { suitCounts[cards[i].suit][cards[i].value]++; if (suitCounts[cards[i].suit][cards[i].value] > limitSameSuitCount) { return; } } } if (cards[0].value == cards[1].value && cards[0].value == cards[2].value && cards[0].value == cards[3].value && cards[0].value == cards[4].value) { return; } CardKey cardkey = new CardKey(); for (int i = 0; i < cards.Length; i++) { cardkey = AppendCardToCardKey(cardkey, cards[i].value, cards[i].suit); } AddToDict(huluKeyDict, cardkey, 0, score); // int tmp1; float score2 = score; float tmpScore; if (cards[0].value < cards[3].value) { score2 = CardsTypeEvaluation.GetHuLuBaseScore(cards[3].value, cards[0].value); } for (int i = 0; i < 4; i++) { tmp1 = cards[i].value; cards[i].value = -1; cardkey = new CardKey(); for (int j = 0; j < cards.Length; j++) { if (cards[j].value == -1) { continue; } cardkey = AppendCardToCardKey(cardkey, cards[j].value, cards[j].suit); } if (i > 2) { tmpScore = score2; } else { tmpScore = score; } AddToDict(huluKeyDict, cardkey, 1, tmpScore); cards[i].value = tmp1; } }
/// <summary> /// 生成葫芦字典 /// </summary> void CreateHuluDict() { huluKeyDict.Clear(); CardInfo[] cards = new CardInfo[5] { new CardInfo(), new CardInfo(), new CardInfo(), new CardInfo(), new CardInfo() }; float score = 0; float a, b; for (int i = 1; i <= 13; i++) { cards[0].value = i; cards[1].value = i; cards[2].value = i; for (int s0 = 0; s0 < 4; s0++) { cards[0].suit = s0; for (int s1 = 0; s1 < 4; s1++) { cards[1].suit = s1; for (int s2 = 0; s2 < 4; s2++) { cards[2].suit = s2; for (int j = 1; j <= 13; j++) { cards[3].value = j; cards[4].value = j; if (i == 1) { a = 14; } else { a = i; } if (j == 1) { b = 14; } else { b = j; } score = CardsTypeEvaluation.GetHuLuBaseScore(a, b); for (int m0 = 0; m0 < 4; m0++) { cards[3].suit = m0; for (int m1 = 0; m1 < 4; m1++) { cards[4].suit = m1; AddHuluKeyToList(cards, score); } } } } } } } }