//人工操作玩家回合
        public int PersonRound(int I)
        {
            try
            {
                Clear();//清玩家手牌
                //int tmp = 0;
                Console.WriteLine("Human Round:");
                Casino.Deliver(playerhand, j, I);//1st Card 发第一张
                j++;
                I++;
                Casino.Deliver(playerhand, j, I);//2nd Card 发第二张
                j++;
                I++;
                sum = GetSum(playerhand); //累积求和
                if (sum == 21)            //21点直接结束,不改变任何倾向,因为与操作无关
                {
                    ifmainexpexist = 1;
                    throw (new YouGotABlackJack("You Got A Black Jack"));
                }
                else
                {
                    //ReadTendency(0);//模式0==读取主经验库
                    //knock = RandomMainTrend(htrend, dtrend, strend, rtrend);//根据倾向,计算机进行随机判断
                    //Console.WriteLine("The computer selects {0}", knock);
                    QandA();//预留的人工应答界面
                    switch (knock)
                    {
                    case "h":
                        while (knock == "h")
                        {
                            Casino.Deliver(playerhand, j, I);
                            I++;
                            j++;
                            if ((sum = GetSum(playerhand)) > 21 && ifviceexpexist == 0)
                            {
                                throw (new YouBursted("You Bursted"));
                            }
                            //ifviceexpexist = 2;
                            //vicemark = 0;
                            //ReadTendency(1);
                            //knock = RandomViceTrend(htrend1, strend1);
                            QandA();
                            //Console.WriteLine("The computer selects {0}", knock);
                            //Console.ReadKey();
                        }
                        break;

                    //case 'p':
                    case "d":
                        Casino.Deliver(playerhand, j, I);
                        I++;
                        j++;
                        sum = GetSum(playerhand);
                        if (sum > 21)
                        {
                            throw (new YouBursted("You Bursted"));
                        }
                        break;

                    case "r":
                        throw (new YouSurrender("You Surrender"));

                    default:
                        break;
                    }
                }
            }
            catch (YouGotABlackJack)
            {
                win += 1.5;
                flag++;
                Console.WriteLine("Good Fortune Sir!!");
            }
            catch (YouBursted)
            {
                if (knock == "d")
                {
                    lose += 2;
                    flag++;
                }
                else if (ifviceexpexist == 0)
                {
                    lose += 1;
                    flag++;
                }
                else
                {
                    lose += 1;
                    flag++;
                }
                Console.WriteLine("You Burst!");
            }
            catch (YouSurrender)
            {
                lose += 0.5;
                flag++;
                Console.WriteLine("You Surrender.");
            }
            finally
            {
            }
            return(I);
        }
        public int DealerRound(int I, Computer com, Human p)
        {
            try
            {
                Clear();//清庄家手牌
                Casino.Deliver(dealerhand, j, I);
                I++;
                j++;
                Casino.Deliver(dealerhand, j, I);
                I++;
                j++;
                while ((sum = GetSum(dealerhand)) < 17)
                {
                    Casino.Deliver(dealerhand, j, I);
                    I++;
                    j++;
                    if ((sum = GetSum(dealerhand)) > 21)
                    {
                        throw (new DealerBusted("DealerBusted"));
                    }
                }
            }
            catch (DealerBusted)
            {
                flag++;
                switch (com.Flag)
                {
                case 0:
                    if (com.Knock == "d")
                    {
                        com.Win   += 2;
                        com.HTrend = Abs(com.HTrend - 8);
                        com.DTrend = Abs(com.DTrend + 24);
                        com.STrend = Abs(com.STrend - 8);
                        com.RTrend = Abs(com.RTrend - 8);
                        if (com.HTrend < 22)
                        {
                            com.HTrend += 21;
                        }
                        if (com.DTrend < 22)
                        {
                            com.DTrend += 21;
                        }
                        if (com.STrend < 22)
                        {
                            com.STrend += 21;
                        }
                        if (com.RTrend < 22)
                        {
                            com.RTrend += 21;
                        }
                    }
                    else if (com.IfViceExp == 0)
                    {
                        com.Win   += 1;
                        com.HTrend = Abs(com.HTrend - 4);
                        com.DTrend = Abs(com.DTrend - 4);
                        com.STrend = Abs(com.STrend + 12);
                        com.RTrend = Abs(com.RTrend - 4);
                        if (com.HTrend < 22)
                        {
                            com.HTrend += 21;
                        }
                        if (com.DTrend < 22)
                        {
                            com.DTrend += 21;
                        }
                        if (com.STrend < 22)
                        {
                            com.STrend += 21;
                        }
                        if (com.RTrend < 22)
                        {
                            com.RTrend += 21;
                        }
                    }
                    else
                    {
                        com.Win    += 1;
                        com.HTrend  = Abs(com.HTrend + 12);
                        com.DTrend  = Abs(com.DTrend - 4);
                        com.STrend  = Abs(com.STrend - 4);
                        com.RTrend  = Abs(com.RTrend - 4);
                        com.HTrend1 = Abs(com.HTrend1 - 12);
                        com.STrend1 = Abs(com.STrend1 + 12);
                        if (com.HTrend < 22)
                        {
                            com.HTrend += 21;
                        }
                        if (com.DTrend < 22)
                        {
                            com.DTrend += 21;
                        }
                        if (com.STrend < 22)
                        {
                            com.STrend += 21;
                        }
                        if (com.RTrend < 22)
                        {
                            com.RTrend += 21;
                        }
                        if (com.HTrend1 < 22)
                        {
                            com.HTrend1 += 21;
                        }
                        if (com.STrend1 < 22)
                        {
                            com.STrend1 += 21;
                        }
                    }
                    Console.WriteLine("Dealer Burst!Computer Win!");
                    break;

                case 1:
                    break;
                }
                switch (p.Flag)
                {
                case 0:
                    if (p.Knock == "d")
                    {
                        p.Win += 2;
                    }
                    else
                    {
                        p.Win += 1;
                    }
                    Console.WriteLine("Dealer Burst!You Win!");
                    break;

                case 1:
                    break;
                }
            }
            finally
            {
            }
            return(flag);
        }
Beispiel #3
0
        static void Main(string[] args)
        {
            Deck deck = new Deck();

            deck.ShowAllDeck();

            Console.WriteLine("===================================");
            deck.Mix();
            deck.ShowAllDeck();
            Console.WriteLine("===================================");
            Console.WriteLine();

            Casino casino = new Casino();
            Player player = new Player();

            casino.AddCard(deck.GetCard());
            player.AddCard(deck.GetCard());
            casino.AddCard(deck.GetCard());
            player.AddCard(deck.GetCard());

            casino.ShowFirstCard();

            Console.WriteLine("Your cards:");
            int playerAmount = player.CalculateAmount();

            player.ShowCards();
            player.AskPlayer();
            while (player.Hit)
            {
                Console.WriteLine("Your cards:");
                player.AddCard(deck.GetCard());
                playerAmount = player.CalculateAmount();
                player.ShowCards();
                player.AskPlayer();
            }
            Console.WriteLine("===================================");
            Console.WriteLine("Casino's cards:");
            int casinoAmount = casino.CalculateAmount();

            while (casino.Hit)
            {
                casino.AddCard(deck.GetCard());
                casinoAmount = casino.CalculateAmount();
            }
            casino.ShowCards();
            if (playerAmount > 21 && casinoAmount > 21)
            {
                Console.WriteLine("Dead heat.");
            }
            else if (playerAmount > 21)
            {
                Console.WriteLine("LOOSER!!! You have more than 21 points.");
            }
            else if (casinoAmount > 21)
            {
                Console.WriteLine("You are win!!! Casino has more 21 poits");
            }
            else
            {
                if (playerAmount > casinoAmount)
                {
                    Console.WriteLine("You are win!!!");
                }
                else if (playerAmount == casinoAmount)
                {
                    Console.WriteLine("Dead heat.");
                }
                else
                {
                    Console.WriteLine("Casino is win.");
                }
            }
            Console.ReadKey();
        }
Beispiel #4
0
        public static void BJ()
        {
            int round = 0;

            do                                 //一局的开始
            {
                Casino   c   = new Casino();   //系统
                Computer com = new Computer(); //新的电脑玩家实例
                Dealer   d   = new Dealer();   //新的庄家实例
                Human    p   = new Human();    //新的个人玩家实例

                c.I = 0;                       //准备阶段
                c.Shuffle();                   //洗牌
                Console.WriteLine("**********************************************");
                Console.WriteLine("Welcome to BlackJack,Round:{0}", round);
                Console.WriteLine("Computer Win rate={0}%", Computer.WinRate);
                Console.WriteLine("Versus");
                Console.WriteLine("Human Win rate={0}%", 100 * p.Win / (p.Win + p.Lose));
                Console.WriteLine("**********************************************");

                //玩家回合
                c.I = com.PlayerRound(c.I);
                //c.I = p.PersonRound(c.I);

                Console.WriteLine(" ");
                Console.WriteLine("DealerHand");
                Console.WriteLine("----------");

                //庄家回合
                if (com.Flag == 1)//电脑玩家和人类玩家同时有特殊状况?有则不进入庄家回合直接下一轮
                {
                }
                else
                {
                    d.Flag = d.DealerRound(c.I, com, p);
                    //结算
                    if (d.Flag == 0)       //庄家没爆
                    {
                        if (com.Flag == 0) //电脑玩家没特殊情况就允许结算
                        {
                            com.GetResult(com.Sum, d.Sum);
                        }
                        if (p.Flag == 0)//人类玩家没特殊情况就允许结算
                        {
                            //p.GetResult(p.Sum, d.Sum);
                        }
                    }
                }
                //if ((round >= 100) && ((100*p.Win/(p.Win+p.Lose)) >= com.WinRate))
                //{
                //   Console.WriteLine("红包密码666!");
                //}
                //Console.ReadKey();

                com.EditTendencyToSql(3, com.CardCombination);

                if (com.IfViceExp != 0)
                {
                    com.EditTendencyToSql(4, com.Sum);
                }

                using (SqlConnection sqlcon = new SqlConnection("Server=.;DataBase=BlackJack;Trusted_Connection=SSPI"))
                {
                    sqlcon.Open();
                    string     cmdstring = "UPDATE BJWinRate SET WinRate = @WinRate, Time = @Time WHERE ID = 1";
                    SqlCommand cmd       = new SqlCommand(cmdstring, sqlcon);
                    cmd.Parameters.AddWithValue("@WinRate", Convert.ToString(Computer.WinRate));
                    cmd.Parameters.AddWithValue("@Time", DateTime.Now.ToString("HH:mm:ss"));
                    cmd.ExecuteNonQuery();
                }

                Console.WriteLine("**********************************************");
                round++;
                Console.Clear();
            } while (true);
        }
 public static void Deliver(int[] arrint, int j, int i)
 {
     arrint[j] = Casino.cardbase[i];
     arrint[j] = Casino.Display(arrint[j]);
 }
        //电脑控制的玩家回合
        public int PlayerRound(int I)
        {
            try
            {
                Clear();//清玩家手牌
                IfMainExp = 0;
                IfViceExp = 0;
                int tmp = 0;
                Console.WriteLine("Computer Round:");
                Casino.Deliver(playerhand, j, I);//1st Card 发第一张
                I++;
                j++;
                Casino.Deliver(playerhand, j, I);//2nd Card 发第二张
                I++;
                j++;
                sum = GetSum(playerhand); //累积求和
                if (sum == 21)            //21点直接结束,不改变任何倾向,因为与操作无关
                {
                    ifmainexpexist = 1;
                    throw (new YouGotABlackJack("Computer Got A Black Jack"));
                }
                else
                {
                    ReadTendencyFromSql(0, CardCombination);                 //模式0==读取主经验库
                    knock = RandomMainTrend(htrend, dtrend, strend, rtrend); //根据倾向,计算机进行随机判断
                    Console.WriteLine("The computer selects {0}", knock);
                    //QandA();//预留的人工应答界面
                    //Console.ReadKey();
                    switch (knock)
                    {
                    case "h":
                        while (knock == "h")
                        {
                            Casino.Deliver(playerhand, j, I);
                            I++;
                            j++;
                            if ((sum = GetSum(playerhand)) > 21 && ifviceexpexist == 0)
                            {
                                throw (new YouBursted("Computer Bursted"));
                            }
                            if (sum > 21)
                            {
                                tmp = playerhand[j - 1];
                                playerhand[j - 1] = 0;
                                sum = GetSum(playerhand);
                                throw (new YouBursted("Computer Bursted"));
                            }
                            if (ifviceexpexist == 3)
                            {
                                tmp = playerhand[j - 1];
                                playerhand[j - 1] = 0;
                                sum     = GetSum(playerhand);
                                htrend1 = Abs(htrend1 + 6);
                                strend1 = Abs(strend1 - 6);
                                EditTendencyToSql(4, sum);
                                playerhand[j - 1] = tmp;
                                sum = GetSum(playerhand);
                            }
                            ifviceexpexist = 2;
                            ReadTendencyFromSql(1, sum);
                            knock = RandomViceTrend(htrend1, strend1);
                            //p.QandA();
                            Console.WriteLine("The Computer selects {0}", knock);
                            //Console.ReadKey();
                        }
                        break;

                    //case 'p':
                    case "d":
                        Casino.Deliver(playerhand, j, I);
                        I++;
                        j++;
                        sum = GetSum(playerhand);
                        if (sum > 21)
                        {
                            throw (new YouBursted("Computer Bursted"));
                        }
                        break;

                    case "r":
                        throw (new YouSurrender("Computer Surrender"));

                    default:
                        break;
                    }
                }
            }
            catch (YouGotABlackJack)
            {
                win += 1.5;
                flag++;
                Console.WriteLine("Good Fortune Sir!!");
            }
            catch (YouBursted)
            {
                if (knock == "d")
                {
                    lose += 2;
                    flag++;
                    htrend = Abs(htrend + 8);
                    dtrend = Abs(dtrend - 24);
                    strend = Abs(strend + 8);
                    rtrend = Abs(rtrend + 8);
                    if (htrend < 22)
                    {
                        htrend += 21;
                    }
                    if (dtrend < 22)
                    {
                        dtrend += 21;
                    }
                    if (strend < 22)
                    {
                        strend += 21;
                    }
                    if (rtrend < 22)
                    {
                        rtrend += 21;
                    }
                }
                else if (ifviceexpexist == 0)
                {
                    lose += 1;
                    flag++;
                    htrend = Abs(htrend - 12);
                    strend = Abs(strend + 8);
                    rtrend = Abs(rtrend + 4);
                    if (htrend < 22)
                    {
                        htrend += 21;
                    }
                    if (dtrend < 22)
                    {
                        dtrend += 21;
                    }
                    if (strend < 22)
                    {
                        strend += 21;
                    }
                    if (rtrend < 22)
                    {
                        rtrend += 21;
                    }
                }
                else
                {
                    lose += 1;
                    flag++;
                    htrend  = Abs(htrend + 12);
                    dtrend  = Abs(dtrend - 4);
                    strend  = Abs(strend - 4);
                    rtrend  = Abs(rtrend - 4);
                    htrend1 = Abs(htrend1 - 12);
                    strend1 = Abs(strend1 + 12);
                    if (htrend < 22)
                    {
                        htrend += 21;
                    }
                    if (dtrend < 22)
                    {
                        dtrend += 21;
                    }
                    if (strend < 22)
                    {
                        strend += 21;
                    }
                    if (rtrend < 22)
                    {
                        rtrend += 21;
                    }
                    if (htrend1 < 22)
                    {
                        htrend1 += 21;
                    }
                    if (strend1 < 22)
                    {
                        strend1 += 21;
                    }
                }
                Console.WriteLine("Computer Burst!");
            }
            catch (YouSurrender)
            {
                lose += 0.5;
                flag++;
                htrend = Abs(htrend + 2);
                dtrend = Abs(dtrend + 2);
                strend = Abs(strend + 2);
                rtrend = Abs(rtrend - 6);
                if (htrend < 22)
                {
                    htrend += 21;
                }
                if (dtrend < 22)
                {
                    dtrend += 21;
                }
                if (strend < 22)
                {
                    strend += 21;
                }
                if (rtrend < 22)
                {
                    rtrend += 21;
                }
                Console.WriteLine("Computer Surrender.");
            }
            finally
            {
                Console.WriteLine("**********************************************");
            }
            return(I);
        }