private static Card LowestCardSpade(Player player) { return(player.Hand.OrderBy(z => z.Rank).Where(z => z.Suit == GameView.Suit("spades")).FirstOrDefault()); }
public static List <Card> CreateCardDeck() { var CardSymbols = new List <string> { "A", "K", "Q", "J", "10", "9" }; var CardSuits = new List <string> { GameView.Suit("spades"), GameView.Suit("hearts"), GameView.Suit("clubs"), GameView.Suit("diamonds") }; var DrawPile = new List <Card>(); foreach (var symbol in CardSymbols) { foreach (var suit in CardSuits) { var card = new Card(symbol, suit); DrawPile.Add(card); } } return(DrawPile); }
private static bool AtLeastOneNotHeartInHand(Player player) { return(player.Hand.Where(z => z.Suit != GameView.Suit("hearts")).FirstOrDefault() != null); }
private static Card LowestCardNotHeart(Player player) { return(player.Hand.OrderBy(z => z.Rank).Where(z => z.Suit != GameView.Suit("hearts")).FirstOrDefault()); }
private static bool AtLeastOneHeartWasPlayed() { return(Game.AllPlayedCards.Select(z => z).Where(z => z.Suit == GameView.Suit("hearts")).FirstOrDefault() != null); }
private static bool HaveHigherCardInMatchingSuitNotHeartsOrSpades(Trick trick, Player player, string currentSuit) { return(HaveMatchingSuit(player, currentSuit) && HighestCardInMatchingSuit(player, currentSuit).Rank > trick.FirstCard.Rank && currentSuit != GameView.Suit("spades") && currentSuit != GameView.Suit("hearts") && (trick.Cards.Select(z => z.ValueInTrick).Sum() < 1)); }
private static Card HighestValueCardSpade(Player player) { return(player.Hand.OrderByDescending(z => z.ValueInTrick).Where(z => z.Suit == GameView.Suit("spades") && z.ValueInTrick > 5).FirstOrDefault()); }
private static Card HighestCardHeart(Player player) { return(player.Hand.OrderByDescending(z => z.Rank).Where(z => z.Suit == GameView.Suit("hearts")).FirstOrDefault()); }
public static void ForComputer(Trick trick, Player player, Player currentPlayer) { Card chosenComputerCard; if (player == currentPlayer) //rozpoczyna lewę { if (AtLeastOneHeartWasPlayed()) //rozpoczyna lewę i kiery zostały już zagrane w tej rundzie { chosenComputerCard = LowestCard(player); trick.FirstCard = chosenComputerCard; } else { if (AtLeastOneNotHeartInHand(player)) // rozpoczyna lewę, kiery nie zostały jeszcze zagrane i MA na ręce inne kolory niż kier { chosenComputerCard = LowestCardNotHeart(player); trick.FirstCard = chosenComputerCard; } else // rozpoczyna lewę, kiery nie zostały jeszcze zagrane, ale ma tylko kiery { chosenComputerCard = LowestCard(player); trick.FirstCard = chosenComputerCard; } } } else // nie rozpoczyna lewy { trick.FirstCard = GameController.DetermineTrickWinningCard(trick); var currentSuit = trick.FirstCard.Suit; if (HaveHigherCardInMatchingSuitNotHeartsOrSpades(trick, player, currentSuit)) // nie rozpoczyna lewy i ma wyższą kartę w obowiązującym kolorze, (nie pik i nie kier!) { chosenComputerCard = HighestCardInMatchingSuit(player, currentSuit); } else if (HaveMatchingSuit(player, currentSuit)) //nie rozpoczyna lewy, ma tylko niższe karty w obowiązującym kolorze { chosenComputerCard = LowestCardInMatchingSuit(player, currentSuit); } else // nie rozpoczyna lewy, nie ma kart w obowiązującym kolorze { if (HighestValueCardSpade(player) != null) //ma Asa, Króla lub Damę pik { chosenComputerCard = HighestValueCardSpade(player); //zagrywa w kolejności Damę, Króla lub Asa pik } else if (HighestCardHeart(player) != null) // Ma kiery { chosenComputerCard = HighestCardHeart(player); // zagrywa najwyższego kiera } else { chosenComputerCard = HighestCard(player); // zagrywa najwyższą kartę } } } trick.Cards.Add(chosenComputerCard); player.Discard(chosenComputerCard); Game.AllPlayedCards.Add(chosenComputerCard); GameView.ChosenComputerCard(player, chosenComputerCard); }