/// <summary> /// Draw a card from the carddeck to the dealer /// </summary> /// <param name="numberOfPlayers">How many players there are</param> /// <param name="playersList">List of players</param> /// <param name="deckOfCards">List of cards available</param> /// <param name="deal">What deal we are on</param> private static void DrawPlayersCards(int numberOfPlayers, List <Player> playersList, List <Card> deckOfCards, int deal) { for (int i = 0; i < numberOfPlayers; i++) { int randCard = Card.RandomCardFromDeck(deckOfCards.Count); Card card = deckOfCards[randCard]; deckOfCards.RemoveAt(randCard); //string tempCardString = card.cardName + " of " + card.suit; string tempCardString = card.fullCardName; playersList[i].CurrentHand[deal] = tempCardString; Card.ShowDrawnCard(card); if (card.value == 1) { playersList[i].CurrentValue[0] += 1; playersList[i].CurrentValue[1] += 11; } else { playersList[i].CurrentValue[0] += card.value; playersList[i].CurrentValue[1] += card.value; } if (i < numberOfPlayers - 1) { Console.Write("\t\t"); } } }
/// <summary> /// The 'AI' of the dealer. He will play until he reaches 17 or more. /// </summary> /// <param name="deckOfCards">Current list of cards in carddeck</param> /// <param name="playersList">Current list of players in game</param> public void HitOrStand(List <Card> deckOfCards, List <Player> playersList) { int deal = 2; while (true) { deal++; Display.DisplayDealer(this, true); Display.DisplayPlayers(playersList.Count, playersList); //Check if winner or should stop if (DealerValue[0] >= 17 || (DealerValue[1] >= 17 && DealerValue[1] < 22)) { //To shorten the need for comparison later, let DealerValue[0] be the same as DealerValue[1] as //long as that value is not bigger than 21. if (DealerValue[1] >= 17 && DealerValue[1] < 22) { DealerValue[0] = DealerValue[1]; } break; } else { //Get a new card int randCard = Card.RandomCardFromDeck(deckOfCards.Count); Card card = deckOfCards[randCard]; deckOfCards.RemoveAt(randCard); Card.ShowDrawnCard(card); string tempCardString = card.fullCardName; DealerHand[deal] = tempCardString; if (card.value == 1) //If we got an ace { DealerValue[0] += 1; DealerValue[1] += 11; } else { DealerValue[0] += card.value; DealerValue[1] += card.value; } //If we have over 21. if (DealerValue[0] > 21) { Console.WriteLine(); Console.WriteLine("Dealer busted!!"); break; } //If we got 'Charlie Black Jack', meaning we have five cards on our hand, we automaticly have 21. if (deal >= 5 && DealerValue[0] < 22 && DealerValue[1] < 22) { DealerValue[0] = 21; DealerValue[1] = 21; Console.WriteLine(); Console.Write("Dealer got Charlie Black Jack!! Press enter to continue"); Console.ReadLine(); break; } } } }
/// <summary> /// Choose between Hit (Taking a new card) or Stand. /// </summary> /// <param name="deckOfCards">Currently used carddeck</param> /// <param name="playersList">List of players in game</param> /// <param name="dealer">The Dealer object</param> public static void HitOrStand(List <Card> deckOfCards, List <Player> playersList, Dealer dealer) { for (int i = 0; i < playersList.Count; i++) { int deal = 2; while (true) { if (playersList[i].CurrentValue[0] == 21 || playersList[i].CurrentValue[1] == 21) { Console.Write($"{playersList[i].PlayerName}: You got Black Jack! Press enter for next player"); Console.ReadLine(); break; } if (playersList[i].CurrentValue[0] == playersList[i].CurrentValue[1]) { Console.Write($"{playersList[i].PlayerName}: You got {playersList[i].CurrentValue[0]}, do you want to (H)it or (S)tand? "); } else { Console.Write($"{playersList[i].PlayerName}: You got {playersList[i].CurrentValue[0]} / {playersList[i].CurrentValue[1]}, do you want to (H)it or (S)tand? "); } string playerChoise = Console.ReadLine(); if (playerChoise.ToLower() == "h") { Console.WriteLine(); int randCard = Card.RandomCardFromDeck(deckOfCards.Count); Card card = deckOfCards[randCard]; deckOfCards.RemoveAt(randCard); Card.ShowDrawnCard(card); string tempCardString = card.fullCardName; playersList[i].CurrentHand[deal] = tempCardString; deal++; if (card.value == 1) //If card is ace { playersList[i].CurrentValue[0] += 1; playersList[i].CurrentValue[1] += 11; } else { playersList[i].CurrentValue[0] += card.value; playersList[i].CurrentValue[1] += card.value; } if (deal >= 5 && playersList[i].CurrentValue[0] < 22 && playersList[i].CurrentValue[1] < 22) //Got Charlie Black Jack, set score to 21 { playersList[i].CurrentValue[0] = 21; playersList[i].CurrentValue[1] = 21; Console.WriteLine(); Console.Write("You got Charlie Black Jack!! Press enter for next player"); Console.ReadLine(); break; } if (playersList[i].CurrentValue[0] > 21 && playersList[i].CurrentValue[1] > 21) { //We got over 21 Console.WriteLine(); Console.WriteLine("You are busted!!"); break; } else if (playersList[i].CurrentValue[0] == 21 || playersList[i].CurrentValue[1] == 21) { //We got Black Jack Console.WriteLine(); Console.WriteLine("You got Black Jack!! Press enter for next player"); Console.ReadLine(); break; } } else if (playerChoise.ToLower() == "s") { //Assign the best value to currentvalue[0] for compareson //when we check winners if (playersList[i].CurrentValue[1] <= 21) { playersList[i].CurrentValue[0] = playersList[i].CurrentValue[1]; } break; } Display.DisplayBoard(dealer, playersList.Count, playersList, deal); } } }