コード例 #1
0
ファイル: Game.cs プロジェクト: breakingbadcoder/BlackJack
        /// <summary>
        /// Дилеру дается 1 карта
        /// </summary>
        public void DealerAddCard()
        {
            Card newcard = _deck.PickCard();

            totaldealer += newcard.GetValue();

            DealerCards += newcard.GetCaption() + " ";
        }
コード例 #2
0
ファイル: Game.cs プロジェクト: breakingbadcoder/BlackJack
        /// <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;
                    }
                }
            }
        }
コード例 #3
0
        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());
        }
コード例 #4
0
ファイル: Optimal.cs プロジェクト: Mazel-Tovr/BlackJack
        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);
            }
        }