/** * Returns player's card. * * @param player who is on turn. * @param trump suit. * @return Card object instance or null. */ public Card getPlayMethodCard(final Player player, final Suit trump) { Card result = null; for (final SuitIterator iterator = Suit.iterator(); iterator.hasNext(); ) { final Suit suit = iterator.next(); final Card card = player.getCards().findMinSuitCard(suit); if (card != null && !suit.equals(trump)) { final int suitCount = player.getCards().getSuitCount(suit); final boolean isSingle = suitCount == 1; final boolean isMeter = suitCount + getPassedSuitCardsCount(suit) == Rank.getRankCount(); final Card max = player.getCards().findMaxSuitCard(suit); final boolean powerSuit = max != null && isMaxSuitCardLeft(max, true); if (isSingle && !powerSuit && !isMeter && max != null && max.compareRankTo(Rank.King) <= 0) { if (result == null || result.compareRankTo(card) > 0) { result = card; } } } } return result; }