static bool PlayComputer(ref Player playerComputer, Card[] cards, ref int cardIndex, ref WinStatistic wins) { playerComputer.Hand = new Card[2]; int aceWinCount = 0; for (int i = 0, j = cardIndex; i < 2; i++, cardIndex--) { playerComputer.Hand[i] = cards[cardIndex]; if (cards[j].Face == Face.Ace) { aceWinCount++; } } if (aceWinCount == 2) { ShowResults.ShowAceWinner(playerComputer); wins.ComputerWins++; return(false); } bool needMoreCards = true; while (needMoreCards) { var value = DeckActions.CalculateHandValue(playerComputer.Hand); var choice = value < 17 ? "Yes" : "No"; switch (choice) { case "Yes": var newHand = new Card[playerComputer.Hand.Length + 1]; Array.Copy(playerComputer.Hand, newHand, playerComputer.Hand.Length); newHand[playerComputer.Hand.Length] = cards[cardIndex]; playerComputer.Hand = newHand; cardIndex--; break; case "No": needMoreCards = false; break; } value = DeckActions.CalculateHandValue(playerComputer.Hand); if (value == 21) { ShowResults.ShowBlackJackWinner(playerComputer); needMoreCards = false; wins.ComputerWins++; return(false); } if (value > 21) { needMoreCards = false; return(true); } } return(true); }
public static Player CalculatePoints(Player human, Player computer) { var playerValue = DeckActions.CalculateHandValue(human.Hand); var computerValue = DeckActions.CalculateHandValue(computer.Hand); if (playerValue < 21 && computerValue < 21) { return(playerValue > computerValue ? human : computer); } else if (playerValue < 21 && computerValue > 21) { return(human); } else if (playerValue > 21 && computerValue < 21) { return(computer); } else { return(playerValue < computerValue ? human : computer); } }
static bool PlayUser(ref Player playerHuman, Card[] cards, ref int cardIndex, int order, ref WinStatistic wins) { playerHuman.Hand = new Card[2]; int aceWinCount = 0; for (int i = 0, j = cardIndex; i < 2; i++, cardIndex--) { playerHuman.Hand[i] = cards[cardIndex]; if (cards[j].Face == Face.Ace) { aceWinCount++; } } if (aceWinCount == 2) { ShowResults.ShowAceWinner(playerHuman); wins.PlayerWins++; return(false); } DeckActions.ShowPlayersHand(playerHuman.Hand); bool needMoreCards = true; while (needMoreCards) { Console.WriteLine("Do you want to take a card? Yes/No"); var choice = Console.ReadLine(); switch (choice) { case "Yes": var newHand = new Card[playerHuman.Hand.Length + 1]; Array.Copy(playerHuman.Hand, newHand, playerHuman.Hand.Length); newHand[playerHuman.Hand.Length] = cards[cardIndex]; playerHuman.Hand = newHand; cardIndex--; DeckActions.ShowPlayersHand(playerHuman.Hand); break; case "No": needMoreCards = false; break; default: Console.WriteLine("Invalid input"); continue; } var value = DeckActions.CalculateHandValue(playerHuman.Hand); if (value == 21) { DeckActions.ShowPlayersHand(playerHuman.Hand); ShowResults.ShowBlackJackWinner(playerHuman); wins.PlayerWins++; needMoreCards = false; return(false); } if (value > 21) { DeckActions.ShowPlayersHand(playerHuman.Hand); Console.WriteLine("You can't take anymore cards cause you have more than 21 points..."); if (order != 2) { Console.WriteLine("Waiting for computer's turn..."); } needMoreCards = false; return(true); } } DeckActions.ShowPlayersHand(playerHuman.Hand); return(true); }