private void PlayHand(ref float Cash, ref float bet, float originalBet, bool trend, ref bool stayBet, ref BJResults Results, Card[] Cards, ref int index, int mySeat, int maxPlayers, bool doubled) { CardHand dealerHand = new CardHand(15); CardHand myHand = new CardHand(15); Betting(Cash, ref bet, originalBet, trend, ref stayBet, Results.movement, Cards, index); InitialDeal(ref Cards, ref index, ref myHand, ref dealerHand, mySeat, maxPlayers); if (ThereIsABlackJack(myHand, dealerHand, ref Cash, bet, ref Results, ref trend)) { return; } //double-down? if (chkDoubleDown.Checked) { if ((dealerHand.Showing == 4 || dealerHand.Showing == 5 || dealerHand.Showing == 6) && (myHand.Total == 10 || myHand.Total == 11)) { if (Cash > bet * 2) { bet = bet * 2; doubled = true; } } } HitStayBust(ref Cards, ref index, ref myHand, ref dealerHand, maxPlayers, mySeat, doubled); WrapUp(myHand, dealerHand, ref Cash, bet, ref Results); if (doubled) { bet /= 2; doubled = false; } }
private void WrapUp(CardHand myHand, CardHand dealerHand, ref float Cash, float Bet, ref BJResults Results) { //If player or dealer hit 21 on deal, we already took care of things. //Did we win? if ((myHand.Total > dealerHand.Total && myHand.Total < 22) || (dealerHand.Total > 21 && myHand.Total < 22)) { Cash += Bet; Results.wins++; if (Results.movement < 0) Results.movement = 0; else Results.movement++; } else if ((myHand.Total > 21) || (myHand.Total < dealerHand.Total)) { Cash -= Bet; Results.losses++; if (Results.movement > 0) Results.movement = 0; else Results.movement--; } else { Results.pushes++; //stayBet = true; } if (Cash > Results.maxCash) Results.maxCash = Cash; if (Cash < Results.minCash) Results.minCash = Cash; }
private bool ThereIsABlackJack(CardHand myHand, CardHand dealerHand, ref float Cash, float Bet, ref BJResults Results, ref bool trend) { //Did dealer get 21? if (dealerHand.Total == 21) { Cash -= Bet; Results.dealerTwentyones++; trend = false; if (Cash < Results.minCash) Results.minCash = Cash; if (Results.movement > 0) Results.movement = 0; else Results.movement--; return true; } //Did we get 21? if (myHand.Total == 21) { Cash += Bet * 1.5f; Results.myTwentyones++; trend = true; if (Cash > Results.maxCash) Results.maxCash = Cash; if (Results.movement < 0) Results.movement = 0; else Results.movement++; return true; } return false; }
private void HitStayBust(ref Card[] Cards, ref int index, ref CardHand myHand, ref CardHand dealerHand, int maxPlayers, int mySeat, bool doubled) { int stayAt = System.Convert.ToInt32(txtStayAt.Text, 10); bool dealerTen = System.Convert.ToBoolean(chkDealerTen.Checked); bool agg456 = System.Convert.ToBoolean(chk456.Checked); for (int dealto = 0; dealto < maxPlayers + 1; dealto++) { if (dealto == mySeat) { if (dealerTen && dealerHand.Showing == 10) { stayAt = 16; } else if (agg456 && (dealerHand.Showing == 4 || dealerHand.Showing == 5 || dealerHand.Showing == 6)) { stayAt = 12; } else { stayAt = stayAt;//normal } //take some cards (or not) while (myHand.Total < stayAt) { myHand.AddCard(Cards[index]); Cards[index].Dealt = true; CountCard(Cards[index].Value); index++; if (doubled) break;//double-down only gets one card } } else if (dealto == maxPlayers)//the Dealer { while (dealerHand.Total < 17) { dealerHand.AddCard(Cards[index]); Cards[index].Dealt = true; CountCard(Cards[index].Value); index++; } } else { Random rand = new Random(); int burn = rand.Next(0, 3); for (int b = 0; b < burn; b++) { Cards[index].Dealt = true; CountCard(Cards[index].Value); index++; } } } }
private void InitialDeal(ref Card[] Cards, ref int index, ref CardHand myHand, ref CardHand dealerHand, int mySeat, int maxPlayers) { for (int i = 0; i < 2; i++)//two cards each { for (int dealto = 0; dealto < maxPlayers + 1; dealto++) { //count cards CountCard(Cards[index].Value); //Deal if (dealto == mySeat) { myHand.Cards[i].Value = Cards[index].Value; myHand.Cards[i].Suit = Cards[index].Suit; } else if (dealto == maxPlayers)//the Dealer { dealerHand.Cards[i].Value = Cards[index].Value; dealerHand.Cards[i].Suit = Cards[index].Suit; } //else {deal this card to some random person} Cards[index].Dealt = true; index++; } } }