using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace BlackJack3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Image[] cards = new Image[52]; int cardbeingchecked;//1-5 for player and 6-10 for dealer//so there only needs to be one check code and not one fore every card int cardbeingcheckedvalue; int valueTOBEadded; int CurrentDraw = 1; int TheirAcesinDeck = 0; int MyAcesinDeck = 0; int mycard1 = 0; int mycard2 = 0; int mycard3 = 0; int mycard4 = 0; int mycard5 = 0; int mytotalcardvalue; int theircard1 = 0;//dealer cards int theircard2 = 0; int theircard3 = 0; int theircard4 = 0; int theircard5 = 0; int theirtotalcardvalue; double Bet; double Currency = 125; int hiddendealercard; int dealerfirstcard; bool busted = false; Random rand = new Random(); private void Form1_Load(object sender, EventArgs e) { cards[0] = Properties.Resources._10_of_clubs; cards[1] = Properties.Resources._10_of_diamonds; cards[2] = Properties.Resources._10_of_hearts; cards[3] = Properties.Resources._10_of_spades; cards[4] = Properties.Resources._2_of_clubs; cards[5] = Properties.Resources._2_of_diamonds; cards[6] = Properties.Resources._2_of_hearts; cards[7] = Properties.Resources._2_of_spades; cards[8] = Properties.Resources._3_of_clubs; cards[9] = Properties.Resources._3_of_diamonds; cards[10] = Properties.Resources._3_of_hearts; cards[11] = Properties.Resources._3_of_spades; cards[12] = Properties.Resources._4_of_clubs; cards[13] = Properties.Resources._4_of_diamonds; cards[14] = Properties.Resources._4_of_hearts; cards[15] = Properties.Resources._4_of_spades; cards[16] = Properties.Resources._5_of_clubs; cards[17] = Properties.Resources._5_of_diamonds; cards[18] = Properties.Resources._5_of_hearts; cards[19] = Properties.Resources._5_of_spades; cards[20] = Properties.Resources._6_of_clubs; cards[21] = Properties.Resources._6_of_diamonds; cards[22] = Properties.Resources._6_of_hearts; cards[23] = Properties.Resources._6_of_spades; cards[24] = Properties.Resources._7_of_clubs; cards[25] = Properties.Resources._7_of_diamonds; cards[26] = Properties.Resources._7_of_hearts; cards[27] = Properties.Resources._7_of_spades; cards[28] = Properties.Resources._8_of_clubs; cards[29] = Properties.Resources._8_of_diamonds; cards[30] = Properties.Resources._8_of_hearts; cards[31] = Properties.Resources._8_of_spades; cards[32] = Properties.Resources._9_of_clubs; cards[33] = Properties.Resources._9_of_diamonds; cards[34] = Properties.Resources._9_of_hearts; cards[35] = Properties.Resources._9_of_spades; cards[36] = Properties.Resources.Ace_of_Clubs; cards[37] = Properties.Resources.Ace_of_Diamonds; cards[38] = Properties.Resources.Ace_of_hearts; cards[39] = Properties.Resources.Ace_Spades; cards[40] = Properties.Resources.Jack_of_Clubs; cards[41] = Properties.Resources.jack_of_diamonds; cards[42] = Properties.Resources.jack_of_hearts; cards[43] = Properties.Resources.jack_of_spades; cards[44] = Properties.Resources.King_of_diamonds; cards[45] = Properties.Resources.Kings_of_clubs; cards[46] = Properties.Resources.kings_of_hearts; cards[47] = Properties.Resources.Kings_of_spades; cards[48] = Properties.Resources.Queen_of_Clubs; cards[49] = Properties.Resources.queen_of_diamonds; cards[50] = Properties.Resources.queen_of_hearts; cards[51] = Properties.Resources.queen_of_Spade; } private void btnStart_Click(object sender, EventArgs e) { try { Bet = double.Parse(tbBet.Text); if (Bet > Currency || Bet <= 0) { MessageBox.Show("Please enter a valid bet."); } else { Currency = Currency - Bet; lblCurrency.Text = "Currency: " + Currency.ToString("F2"); btnStart.Visible = false; tbBet.Visible = false; tbBet.ResetText(); lblBet.Text = "Bet: " + Bet.ToString("F2"); theircard1 = rand.Next(51); dealerfirstcard = theircard1;//sets dealerfirstcard = to theircard prior to it changing to its actual value so that it's on the 51 range and because the cards are in groups < or > can be used to refer to groups of cards pbTheirCard1.Image = cards[theircard1]; cardbeingcheckedvalue = theircard1; cardbeingchecked = 6; checkcardvalues(); CurrentDraw++; theircard2 = rand.Next(51);//randomizes the dealers second card hiddendealercard = theircard2; cardbeingcheckedvalue = theircard2;//the value that is going to be checked cardbeingchecked = 7; checkcardvalues(); CurrentDraw = 1;//jack is 40 and ace is 39 mycard1 = rand.Next(51);//drawcard1 CurrentDraw++;//adds to current draw so the draw doesn't repeat itself pbMyCard1.Image = cards[mycard1];//sets the image of the card cardbeingcheckedvalue = mycard1;//the value that is going to be checked cardbeingchecked = 1;//tells the thing which card this is checkcardvalues(); mycard2 = rand.Next(51); CurrentDraw++; pbMyCard2.Image = cards[mycard2]; cardbeingcheckedvalue = mycard2;//the value that is going to be checked cardbeingchecked = 2; checkcardvalues(); btnDoubleDown.Visible = true; btnSurrender.Visible = true; blackjackcheck(); } } catch { MessageBox.Show("Please enter a valid bet."); } } private void blackjackcheck() { if (theirtotalcardvalue == 21 && mytotalcardvalue == 21) { pbTheirCard2.Image = cards[hiddendealercard]; Currency = Currency + Bet; lblCurrency.Text = "Currency: " + Currency.ToString("F2"); MessageBox.Show("Lucky for both of you; you both got blackjack. No loss, no gain."); reset(); } else if (theirtotalcardvalue == 21) { pbTheirCard2.Image = cards[hiddendealercard]; MessageBox.Show("Unlucky for you; the dealer got blackjack."); reset(); } else if (mytotalcardvalue == 21) { MessageBox.Show("Lucky for you; you got blackjack."); Currency = Currency + Bet * 2.5; lblCurrency.Text = "Currency: " + Currency.ToString("F2"); reset(); } } private void drawthirdcard() { btnDoubleDown.Visible = false; btnSurrender.Visible = false; mycard3 = rand.Next(51); CurrentDraw++; pbMyCard3.Image = cards[mycard3]; cardbeingcheckedvalue = mycard3;//the value that is going to be checked cardbeingchecked = 3; checkcardvalues(); bust(); } private void btnDraw_Click(object sender, EventArgs e) { switch (CurrentDraw) { case 3: drawthirdcard(); break; case 4: mycard4 = rand.Next(51); CurrentDraw++; pbMyCard4.Image = cards[mycard4]; cardbeingcheckedvalue = mycard4;//the value that is going to be checked cardbeingchecked = 4; break; case 5: mycard5 = rand.Next(51); CurrentDraw++; pbMyCard5.Image = cards[mycard5]; cardbeingcheckedvalue = mycard5;//the value that is going to be checked cardbeingchecked = 5; break; } checkcardvalues(); bust();//check for bust FiveCardJohnny(); } private void checkcardvalues() { if (cardbeingcheckedvalue >= 0 && cardbeingcheckedvalue <= 3)//10's the value should of course correlate to the images shown on the cards { valueTOBEadded = 10; } if (cardbeingcheckedvalue >= 4 && cardbeingcheckedvalue <= 7)//2's { valueTOBEadded = 2; } if (cardbeingcheckedvalue >= 8 && cardbeingcheckedvalue <= 11)//3's { valueTOBEadded = 3; } if (cardbeingcheckedvalue >= 12 && cardbeingcheckedvalue <= 15)//4's { valueTOBEadded = 4; } if (cardbeingcheckedvalue >= 16 && cardbeingcheckedvalue <= 19)//5's { valueTOBEadded = 5; } if (cardbeingcheckedvalue >= 20 && cardbeingcheckedvalue <= 23)//6's { valueTOBEadded = 6; } if (cardbeingcheckedvalue >= 24 && cardbeingcheckedvalue <= 27)//7's { valueTOBEadded = 7; } if (cardbeingcheckedvalue >= 28 && cardbeingcheckedvalue <= 31)//8's { valueTOBEadded = 8; } if (cardbeingcheckedvalue >= 32 && cardbeingcheckedvalue <= 35)//9's { valueTOBEadded = 9; } if (cardbeingcheckedvalue >= 36 && cardbeingcheckedvalue <= 39)//Ace's all face cards are worth 10 { valueTOBEadded = 11;//problemmustbeher if (cardbeingchecked >= 6 && cardbeingchecked <= 10) { TheirAcesinDeck++; } if (cardbeingchecked >= 1 && cardbeingchecked <= 5) { MyAcesinDeck++; } } if (cardbeingcheckedvalue >= 40 && cardbeingcheckedvalue <= 43)//Jacks's { valueTOBEadded = 10; } if (cardbeingcheckedvalue >= 44 && cardbeingcheckedvalue <= 47)//Kings's { valueTOBEadded = 10; } if (cardbeingcheckedvalue >= 48 && cardbeingcheckedvalue <= 51)//Queens's { valueTOBEadded = 10; } switch (cardbeingchecked)//sets the value of the card { case 1: mycard1 = valueTOBEadded; break; case 2: mycard2 = valueTOBEadded; break; case 3: mycard3 = valueTOBEadded; break; case 4: mycard4 = valueTOBEadded; break; case 5: mycard5 = valueTOBEadded; break; case 6: theircard1 = valueTOBEadded; break; case 7: theircard2 = valueTOBEadded; break; case 8: theircard3 = valueTOBEadded; break; case 9: theircard4 = valueTOBEadded; break; case 10: theircard5 = valueTOBEadded; break; } mytotalcardvalue = mycard1 + mycard2 + mycard3 + mycard4 + mycard5;//adds the value that was found lblYourCardValue.Text = "Your Total Card Value: " + mytotalcardvalue.ToString(); theirtotalcardvalue = theircard1 + theircard2 + theircard3 + theircard4 + theircard5; lblTheirTotalCardValue.Text = "Their Total Card Value: " + theircard1.ToString() + " + ?"; } private void bust() { if (mytotalcardvalue > 21) { while (MyAcesinDeck > 0 && mytotalcardvalue > 21)//TRUE ACE { mytotalcardvalue = mytotalcardvalue - 10;//subtracts 10 basically changing the ace to a 1 MyAcesinDeck--;//subtracts the aces because it's been changed to a one lblYourCardValue.Text = "Your Total Card Value: " + mytotalcardvalue.ToString();//showsnewcardvalue } if (mytotalcardvalue > 21) { busted = true; MessageBox.Show("You went bust brochacho"); reset(); } } if (theirtotalcardvalue > 21) { while (TheirAcesinDeck > 0 && theirtotalcardvalue > 21)//TRUE ACE { theirtotalcardvalue = theirtotalcardvalue - 10; TheirAcesinDeck--; lblTheirTotalCardValue.Text = "Their Total Card Value: " + theirtotalcardvalue.ToString(); } if (theirtotalcardvalue > 21) { MessageBox.Show("They went bust shlopp"); WinRewards(); reset(); } } } private void reset()//bet doesnt need to be reset { btnSurrender.Visible = false; btnDoubleDown.Visible = false; btnStart.Visible = true; tbBet.Visible = true; mycard1 = 0; mycard2 = 0; mycard3 = 0; mycard4 = 0; mycard5 = 0; mytotalcardvalue = 0;//reset player card values theircard1 = 0; theircard2 = 0; theircard3 = 0; theircard4 = 0; theircard5 = 0; theirtotalcardvalue = 0;//reset opponent card values TheirAcesinDeck = 0; MyAcesinDeck = 0; pbMyCard1.Image = Properties.Resources.Back_of_card2; pbMyCard2.Image = Properties.Resources.Back_of_card2; pbMyCard3.Image = Properties.Resources.Back_of_card2; pbMyCard4.Image = Properties.Resources.Back_of_card2; pbMyCard5.Image = Properties.Resources.Back_of_card2; pbTheirCard1.Image = Properties.Resources.Back_of_card; pbTheirCard2.Image = Properties.Resources.Back_of_card; pbTheirCard3.Image = Properties.Resources.Back_of_card; pbTheirCard4.Image = Properties.Resources.Back_of_card; pbTheirCard5.Image = Properties.Resources.Back_of_card; lblYourCardValue.Text = "Your Total Card Value: "; lblTheirTotalCardValue.Text = "Their Total Card Value: "; CurrentDraw = 1; lblCurrency.Text = "Currency: " + Currency.ToString("F2"); lblBet.Text = "Bet: "; hiddendealercard = 0; dealerfirstcard = 0; valueTOBEadded = 0; cardbeingcheckedvalue = 0; } private void btnStand_Click(object sender, EventArgs e) { stand(); } private void stand() { btnDoubleDown.Visible = false; btnSurrender.Visible = false; pbTheirCard2.Image = cards[hiddendealercard]; lblTheirTotalCardValue.Text = "Their Total Card Value: " + theirtotalcardvalue.ToString(); CurrentDraw = 3; if (theirtotalcardvalue <= 17 && CurrentDraw == 3) { theircard3 = rand.Next(51); CurrentDraw++; pbTheirCard3.Image = cards[theircard3]; cardbeingcheckedvalue = theircard3;//the value that is going to be checked cardbeingchecked = 8; checkcardvalues(); bust();//check for bust } if (theirtotalcardvalue <= 17 && CurrentDraw == 4) { theircard4 = rand.Next(51); CurrentDraw++; pbTheirCard4.Image = cards[theircard4]; cardbeingcheckedvalue = theircard4;//the value that is going to be checked cardbeingchecked = 9; checkcardvalues(); bust();//check for bust } if (theirtotalcardvalue <= 17 && CurrentDraw == 5) { theircard5 = rand.Next(51); CurrentDraw++; pbTheirCard5.Image = cards[theircard5]; cardbeingcheckedvalue = theircard5;//the value that is going to be checked cardbeingchecked = 10; checkcardvalues(); bust();//check for bust } endings(); } private void endings() { lblTheirTotalCardValue.Text = "Their Total Card Value: " + theirtotalcardvalue.ToString(); FiveCardJohnny(); if (theirtotalcardvalue > mytotalcardvalue && theirtotalcardvalue <= 21 && mytotalcardvalue <= 21)//loss { MessageBox.Show("You lost; their card was closer to 21."); } else if (theirtotalcardvalue < mytotalcardvalue && theirtotalcardvalue <= 21 && mytotalcardvalue <= 21 && pbMyCard5.Image != pbCardback2.Image)//win { MessageBox.Show("You won; your card was closer to 21."); WinRewards(); } else if (theirtotalcardvalue == mytotalcardvalue && theirtotalcardvalue <= 21 && mytotalcardvalue <= 21 && theirtotalcardvalue > 0 && mytotalcardvalue > 0)//loss { MessageBox.Show("You tied with the dealer."); Currency = Currency + Bet; lblCurrency.Text = "Currency: " + Currency.ToString("F2"); } reset();//resets the game } private void FiveCardJohnny() { if (theirtotalcardvalue <= 21 && theircard5 > 0)//loss { MessageBox.Show("You lose, they got 5 card Johnny"); reset(); } else if (mytotalcardvalue <= 21 && mycard5 > 0)//win { MessageBox.Show("You win, you got 5 card Johnny"); WinRewards(); reset(); } } private void WinRewards() { Currency = Currency + Bet * 2; lblCurrency.Text = "Currency: " + Currency.ToString("F2"); } private void btnDoubleDown_Click(object sender, EventArgs e) { if (Currency - Bet > 0)//Bet has already been subtracted once { Currency = Currency - Bet; Bet = Bet * 2; lblBet.Text = "Bet: " + Bet.ToString("F2"); lblCurrency.Text = "Currency: " + Currency.ToString("F2"); drawthirdcard(); if (busted == false) { stand(); } else { busted = false; } } else { MessageBox.Show("Dog you're too poor."); } } private void btnSurrender_Click(object sender, EventArgs e) { Currency = Currency + (Bet/2); lblCurrency.Text = "Currency: " + Currency.ToString("F2"); reset(); } } }