Exemple #1
0
        /// <summary>
        /// Начало игры: игроку и дилеру дается 2 карты
        /// </summary>
        public void GameStart()
        {
            _deck.Shuffle(CardCount); //перемешиваем колоду и берем из нее 11 карт

            if (_deck.CardCount() < CardCount)
            {
                throw new Exception("Колода пуста");
            }

            DealerAddCard();
            DealerAddCard(); //игроку и дилеру дается по одной карте

            PlayerAddCard();
            PlayerAddCard();


            BlackjackCheck(); //проверка на 21
        }
Exemple #2
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());
        }
Exemple #3
0
        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);
            }
        }