private static void MakeTurn(Player player1, Player player2, Deck deck) { //give card var card = MovementUtil.MakeTurn(player1, player2, deck, null); //Check for additional point -> (20 or 40) //TODO Idea for modification: Player choose if he wants to call his announce. If has more than one announce can choose which one wants to play. if (SixtySixUtil.HasForty(player1.Cards, card, deck)) { SixtySixUtil.CallForty(player1); player1.HasTwentyForty.Add(new Card() { Suit = card.Suit, Value = card.Value == CardValue.QUEEN ? CardValue.KING : CardValue.QUEEN }); } else if (SixtySixUtil.HasTwenty(player1.Cards, card, deck)) { SixtySixUtil.CallTwenty(player1); player1.HasTwentyForty.Add(new Card() { Suit = card.Suit, Value = card.Value == CardValue.QUEEN ? CardValue.KING : CardValue.QUEEN }); } var otherCard = MovementUtil.MakeTurn(player2, player1, deck, card); var handScore = (int)card.Value + (int)otherCard.Value; deck.ThrownCards.Add(card); deck.ThrownCards.Add(otherCard); // player1 plays first, so if first card wins, then the first player wins if (SixtySixUtil.WinsFirstCard(card, otherCard, deck.TrumpSuit)) { if (!(player1.IsSilent && player2.IsSilent)) { Console.WriteLine("Winning card {0}", card); } player1.Score += handScore; player1.HasWonLastHand = true; player2.HasWonLastHand = false; SixtySixUtil.DrawCard(player1, deck); SixtySixUtil.DrawCard(player2, deck); } else { if (!(player1.IsSilent && player2.IsSilent)) { Console.WriteLine("Winning card {0}", otherCard); } player2.Score += handScore; player2.HasWonLastHand = true; player1.HasWonLastHand = false; SixtySixUtil.DrawCard(player2, deck); SixtySixUtil.DrawCard(player1, deck); } }
/* * Itterative are deals been played until one of the players reach sixty six */ public static Player PlaySixtySix(Player player1, Player player2) { var deck = CardsDeckUtil.InitializeDeck(); player1.HasWonLastDeal = true; CardsDeckUtil.ShuffleDeck(deck); //we first shuffle the deck do { player1.ResetPlayerAfterDeal(); player2.ResetPlayerAfterDeal(); if (player1.HasWonLastDeal) { var splitIndex = MovementUtil.GetDeckSplittingIndex(player2); CardsDeckUtil.SplitDeck(deck, splitIndex); //one of the players should split the deck player1.HasWonLastHand = true; player2.HasWonLastHand = false; PlayOneDeal(deck, player1, player2); } else if (player2.HasWonLastDeal) { var splitIndex = MovementUtil.GetDeckSplittingIndex(player1); CardsDeckUtil.SplitDeck(deck, splitIndex); //one of the players should split the deck player2.HasWonLastHand = true; player1.HasWonLastHand = false; PlayOneDeal(deck, player2, player1); } else { //Should not enter here PlayOneDeal(deck, player1, player2); } }while (player1.WinsCount < Constants.TOTAL_PLAYS_FOR_WIN && player2.WinsCount < Constants.TOTAL_PLAYS_FOR_WIN); if (player1.WinsCount >= Constants.TOTAL_PLAYS_FOR_WIN) { if (!player1.IsSilent) { Console.WriteLine("You has won!!! Result is: {0} to {1}.", player1.WinsCount, player2.WinsCount); } return(player1); } else { if (!player2.IsSilent) { Console.WriteLine("AI player has won!!! Result is: {0} to {1}.", player2.WinsCount, player1.WinsCount); } return(player2); } }