//人工操作玩家回合 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); }
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(); }
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); }