/// <summary> /// Дилеру дается 1 карта /// </summary> public void DealerAddCard() { Card newcard = _deck.PickCard(); totaldealer += newcard.GetValue(); DealerCards += newcard.GetCaption() + " "; }
/// <summary> /// Дилеру дается 1 карта /// </summary> public void DealerAddCard(List <Card> CurrentCardsList) { Card newcard = _deck.PickCard(); totaldealer += newcard.GetValue(); CurrentCardsList.Add(newcard); DealerCards += newcard.GetCaption() + " "; if (totaldealer > 21 & DealerHasA()) //если сумма очков больше 21 и в колоде игрока имеется туз { foreach (var CurrentCard in DealerCardsList) //проходим по картам чтобы найти туз { if (CurrentCard.Number == 11) //если туз { CurrentCard.Number = 1; //присвоим значение 1 totaldealer -= 10; } } } }
private int BJ(int i) { if (BJList.Contains(i)) { return(BJList[i]); } int n = deck.CardCount(); if (n - i < 4) { return(0); } for (var p = 2; p < n - i; p++) { player = deck.PickCard(i).GetValue() + deck.PickCard(i + 2).GetValue(); if (p != 2) { for (int j = 4; j <= p + 2 && j < n - i; j++) { player += deck.PickCard(i + j).GetValue(); } ; } if (player > 21) { options.Add(-1 + BJ(i + p + 2)); break; } dealer = 0; int d1 = 0; for (var d = 2; d <= n - i - p; d++) { d1 = d; dealer = deck.PickCard(i + 1).GetValue() + deck.PickCard(i + 3).GetValue(); if (d != 2) { for (int j = p + 2; j <= p + d && j < n - i; j++) { dealer += deck.PickCard(i + j).GetValue(); } } if (dealer >= 17) { break; } } if (dealer < 17 && i + p + d1 >= n) { dealer = 21; } if (dealer > 21) { dealer = 0; } dealer += 0.5; options.Add(cmp(player, dealer) + BJ(i + p + d1)); } BJList.Add(options.Max()); return(options.Max()); }
private int BJ(int i) { if (BJList.Contains(i)) { return(BJList[i]); } else { int n = deck.CardCount(); if (n - i < 4) { return(0); } for (var p = 2; p < n - i; p++) //foreach (var p in Enumerable.Range(2, n - i - 2)) { player = deck.PickCard(i).GetValue() + deck.PickCard(i + 2).GetValue(); if (p != 2) { for (int j = 4 + i; j <= i + p + 2 && j < n - i; j++) { player += deck.PickCard(i + j).GetValue(); } } if (player > 21) { options.Add(-1 + BJ(i + p + 2)); break; } dealer = 0; int d1 = 0; for (var d = 2; d <= n - i - p + 1; d++) { d1 = d; dealer = deck.PickCard(i + 1).GetValue() + deck.PickCard(i + 3).GetValue(); if (d != 2) { for (int j = i + p + 2; j <= i + p + d && j < n - i; j++) { dealer += deck.PickCard(i + j).GetValue(); } } if (dealer >= 17) { break; } } if (dealer < 17 && i + p + d1 >= n) { dealer = 21; } if (dealer > 21) { dealer = 0; } dealer += 0.5; options.Add(cmp(player, dealer) + BJ(i + p + d1)); } var max = options.Max(); BJList.Add(max); return(max); } }