static void DealHand() { if (deck.GetAmountOfRemainingCrads() < 20) { deck.Initialize(); deck.Shuffle(); } Console.WriteLine("Remaining Cards: {0}", deck.GetAmountOfRemainingCrads()); Console.WriteLine("Current Chips: {0}", chips); Console.WriteLine("How much would you like to bet? (1 - {0})", chips); string input = Console.ReadLine().Trim().Replace(" ", ""); int betAmount; while (!Int32.TryParse(input, out betAmount) || betAmount < 1 || betAmount > chips) { Console.WriteLine("amount is illegal. How much would you like to bet? (1 - {0})", chips); input = Console.ReadLine().Trim().Replace(" ", ""); } Console.WriteLine(); userHand = new List <Card>(); userHand.Add(deck.DrawACard()); userHand.Add(deck.DrawACard()); foreach (Card card in userHand) { if (card.Face == Face.Ace) { card.Value += 10; break; } } Console.WriteLine("[Player]"); Console.WriteLine("Card 1: {0} of {1}", userHand[0].Face, userHand[0].Suit); Console.WriteLine("Card 2: {0} of {1}", userHand[1].Face, userHand[1].Suit); Console.WriteLine("Total: {0}\n", userHand[0].Value + userHand[1].Value); dealerHand = new List <Card>(); dealerHand.Add(deck.DrawACard()); dealerHand.Add(deck.DrawACard()); foreach (Card card in dealerHand) { if (card.Face == Face.Ace) { card.Value += 10; break; } } Console.WriteLine("[Delaer]"); Console.WriteLine("Card 1: {0} of {1}", dealerHand[0].Face, dealerHand[1].Suit); Console.WriteLine("Card 2: [Hole Card]"); Console.WriteLine("Total: {0}\n", dealerHand[0].Value); bool insurance = false;; if (dealerHand[0].Face == Face.Ace) { Console.WriteLine("Insurance? (y / n)"); string userInput = Console.ReadLine(); while (userInput != "y" && userInput != "n") { Console.WriteLine("Could not understand. Insurance? (y / n)"); userInput = Console.ReadLine(); } if (userInput == "y") { insurance = true; //chips -= betAmount / 2; Console.WriteLine("\n[Insurance Accepted!]\n"); } else { insurance = false; Console.WriteLine("\n[Insurance Rejected]\n"); } } if (dealerHand[0].Face == Face.Ace || dealerHand[0].Value == 10) { Console.WriteLine("Delaer checks if he has blackjack...\n"); Thread.Sleep(2000); if (dealerHand[0].Value + dealerHand[1].Value == 21) { Console.WriteLine("[Delaer]"); Console.WriteLine("Card 1: {0} of {1}", dealerHand[0].Face, dealerHand[1].Suit); Console.WriteLine("Card 2: {0} of {1}", dealerHand[1].Face, dealerHand[1].Suit); Console.WriteLine("Total: {0}\n", dealerHand[0].Value + dealerHand[1].Value); Thread.Sleep(2000); int amountLost = 0; if (userHand[0].Value + userHand[1].Value == 21 && insurance) { amountLost = betAmount / 2; chips -= betAmount / 2; } else if (userHand[0].Value + userHand[1].Value != 21 && !insurance) { amountLost = betAmount + betAmount / 2; chips -= betAmount + betAmount / 2; } Console.WriteLine("You lost {0} chips", amountLost); Thread.Sleep(1000); return; } else { Console.WriteLine("Dealer does not have a blackjack, moving on...\n"); } } if (userHand[0].Value + userHand[1].Value == 21) { Console.WriteLine("Blackjack, You Won! ({0} chips)\n", betAmount + betAmount / 2); chips += betAmount + betAmount / 2; return; } do { Console.WriteLine("Please choose a valid option: [(S)tand (H)it]"); ConsoleKeyInfo userOption = Console.ReadKey(true); while (userOption.Key != ConsoleKey.H && userOption.Key != ConsoleKey.S) { Console.WriteLine("illegal key. Please choose a valid option: [(S)tand (H)it]"); userOption = Console.ReadKey(true); } Console.WriteLine(); switch (userOption.Key) { case ConsoleKey.H: userHand.Add(deck.DrawACard()); Console.WriteLine("Hitted {0} of {1}", userHand[userHand.Count - 1].Face, userHand[userHand.Count - 1].Suit); int totalCardsValue = 0; foreach (Card card in userHand) { totalCardsValue += card.Value; } Console.WriteLine("Total cards value now: {0}\n", totalCardsValue); if (totalCardsValue > 21) { Console.Write("Busted!\n"); chips -= betAmount; Thread.Sleep(2000); return; } else if (totalCardsValue == 21) { Console.WriteLine("Good job! I assume you want to stand from now on...\n"); Thread.Sleep(2000); continue; } else { continue; } break; case ConsoleKey.S: Console.WriteLine("[Delaer]"); Console.WriteLine("Card 1: {0} of {1}", dealerHand[0].Face, dealerHand[1].Suit); Console.WriteLine("Card 2: {0} of {1}", dealerHand[1].Face, dealerHand[1].Suit); int dealerCardsValue = 0; foreach (Card card in dealerHand) { dealerCardsValue += card.Value; } while (dealerCardsValue < 17) { Thread.Sleep(2000); dealerHand.Add(deck.DrawACard()); dealerCardsValue = 0; foreach (Card card in dealerHand) { dealerCardsValue += card.Value; } Console.WriteLine("Card {0}: {1} of {2}", dealerHand.Count, dealerHand[dealerHand.Count - 1].Face, dealerHand[dealerHand.Count - 1].Suit); } dealerCardsValue = 0; foreach (Card card in dealerHand) { dealerCardsValue += card.Value; } Console.WriteLine("Total: {0}\n", dealerCardsValue); if (dealerCardsValue > 21) { Console.WriteLine("Dealer bust! You win! ({0} chips)", betAmount); chips += betAmount; return; } else { int playerCardValue = 0; foreach (Card card in userHand) { playerCardValue += card.Value; } if (dealerCardsValue > playerCardValue) { Console.WriteLine("Dealer has {0} and player has {1}, dealer wins!", dealerCardsValue, playerCardValue); chips -= betAmount; return; } else { Console.WriteLine("Player has {0} and dealer has {1}, player wins!", playerCardValue, dealerCardsValue); chips += betAmount; return; } } break; default: break; } Console.ReadLine(); }while (true); }
public static void Hand() { if (deck.GetAmountOfRemeiningCard() < 20) { deck.Initialize(); } Console.WriteLine("Cards: {0}", deck.GetAmountOfRemeiningCard()); Console.WriteLine("Your balance {0}, is: {1}$", user.PlayerName, user.PlayerBalance); Console.WriteLine("Your can bet (1 - {0})", user.PlayerBalance); String input = Console.ReadLine().Trim().Replace(" ", ""); while (!Int32.TryParse(input, out betAmount) || betAmount < 1 || betAmount > user.PlayerBalance) { Console.WriteLine("Input error.\nTry again:"); input = Console.ReadLine().Trim().Replace(" ", ""); } userHand = new List <AllCards>(); userHand.Add(deck.DrowACard()); userHand.Add(deck.DrowACard()); // Int32 totalUserCardsValue = 0; Boolean acePlayer = true; foreach (AllCards card in userHand)//исправить чтоб при получении туза повторно он был равен 1 + { if (card.Face == Face.Ace && acePlayer) { card.Value += 10; acePlayer = false; break; } // totalUserCardsValue += card.Value; } Console.WriteLine("[{0}]", user.PlayerName); Console.WriteLine("1 card: {0} {1}", userHand[0].Face, userHand[0].Suit); Console.WriteLine("2 card: {0} {1}", userHand[1].Face, userHand[1].Suit); Console.WriteLine("Your score: {0}\n", userHand[0].Value + userHand[1].Value); dillerHand = new List <AllCards>(); dillerHand.Add(deck.DrowACard()); dillerHand.Add(deck.DrowACard()); // Int32 totalDillerCardValue = 0; Boolean aceDiller = true; foreach (AllCards card in dillerHand)//исправить чтоб при получении туза повторно он был равен 1 + { if (card.Face == Face.Ace && aceDiller) { card.Value += 10; aceDiller = false; break; } // totalDillerCardValue += card.Value; } Console.WriteLine("[Diller]"); Console.WriteLine("1 card: {0} {1}", dillerHand[0].Face, dillerHand[0].Suit); Console.WriteLine("2 card: {0} {1}", dillerHand[1].Face, dillerHand[1].Suit); Console.WriteLine("Diller score: {0}\n", dillerHand[0].Value + dillerHand[1].Value); Int32 totalDillerCardValue = dillerHand[0].Value + dillerHand[1].Value; Int32 totalUserCardsValue = userHand[0].Value + userHand[1].Value; if (totalDillerCardValue == 21 && totalUserCardsValue == 21) { Console.WriteLine("The draw"); user.PlayerBalance += betAmount; } else if (totalDillerCardValue == 21 && totalUserCardsValue != 21) { Console.WriteLine("Your lose"); user.PlayerBalance -= betAmount; return;//1 } else if (totalUserCardsValue == 21 && totalDillerCardValue != 21) { Console.WriteLine("Your win."); user.PlayerBalance += betAmount; return;//2 } do { Console.WriteLine("Would you like to take another card ? If yes, press Y, if not press N."); ConsoleKeyInfo userChose = Console.ReadKey(true); while (userChose.Key != ConsoleKey.Y && userChose.Key != ConsoleKey.N) { Console.WriteLine("No command, press again"); userChose = Console.ReadKey(true); } switch (userChose.Key) { case ConsoleKey.Y: userHand.Add(deck.DrowACard()); Console.WriteLine("Your take a card {0} {1}", userHand[userHand.Count - 1].Face, userHand[userHand.Count - 1].Suit); totalUserCardsValue += userHand[userHand.Count - 1].Value; Console.WriteLine("Your score is: {0}\n", totalUserCardsValue); if (totalUserCardsValue > 21) { Console.WriteLine("Your lose\n"); user.PlayerBalance -= betAmount; return; } else if (totalUserCardsValue == 21) { Console.WriteLine("Your have Black Jack!"); continue; } else { continue; } break; case ConsoleKey.N: Console.WriteLine("[Diller]"); Console.WriteLine("1 card: {0} {1}", dillerHand[0].Face, dillerHand[0].Suit); Console.WriteLine("2 card: {0} {1}", dillerHand[1].Face, dillerHand[1].Suit); Console.WriteLine("Diller score: {0}\n", totalDillerCardValue); while (totalDillerCardValue < 17) { dillerHand.Add(deck.DrowACard()); Console.WriteLine("Diller take a card {0}, {1} {2}", dillerHand.Count, dillerHand[dillerHand.Count - 1].Face, dillerHand[dillerHand.Count - 1].Suit); totalDillerCardValue += dillerHand[dillerHand.Count - 1].Value; Console.WriteLine("Diller score {0}", totalDillerCardValue); if (totalDillerCardValue > 21) { Console.WriteLine("Your win!"); user.PlayerBalance += betAmount; } else { if (totalDillerCardValue > totalUserCardsValue) { Console.WriteLine("Diller has {0}, {1} has {2}. Diller win!", totalDillerCardValue, user.PlayerName, totalUserCardsValue); user.PlayerBalance -= betAmount; return; } else if (totalDillerCardValue == totalUserCardsValue) { Console.WriteLine("Diller has {0}, {1} has {2}. Standoff!", totalDillerCardValue, user.PlayerName, totalUserCardsValue); user.PlayerBalance += betAmount; return; } else { Console.WriteLine("Diller has {0}, {1} has {2}. {1} win!", totalDillerCardValue, user.PlayerName, totalUserCardsValue); user.PlayerBalance += betAmount; return; } } } break; default: break; } Console.ReadLine(); }while(true); }