我试图建立一个功能,检查一手牌(5张牌)是否距离皇家同花顺只有一张牌。我能够实施一种方法来检查手是否是皇家同花顺。这是它的任何帮助:
public boolean royalFlush(List<Card> cards) {
for(int i = 0; i<cards.size(); i++) {
if(i == 0 && cards.get(i).getValue() != 1) {
return false;
}else if(i != 0 && cards.get(i).getValue()!=10){
return false;
}
}
for(int i = 0;i<cards.size()-1; i++) {
if(cards.get(i).getSuit() !=cards.get(i+1).getSuit()) {
return false;
}
}
return true;
}
此功能假设手牌已经从王牌,王牌,杰克和最后10开始排序。它还假设牌中的牌总数为5.可以安全地假设皇家同花顺手将始终按任意输入方式排序。在我的Card.java类中,我有针对诉讼和等级的枚举:
public static enum Suit {
DIAMOND, HEART, SPADE, CLUB
};
public static enum Rank {
TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE
};
所以getValue方法如果if语句基本上将秩转换为实际的int。所以例如Rank 2是2,当rank是TEEN,JACK,QUEEN或KING时,值是10。
当你创建一张卡片时,你会给它一个等级和一个套装。例如:
Card card = new Card(Card.Rank.JACK, Card.Suit.HEART))
任何人都可以帮我一个功能,它会收到一张卡片列表并确定它是否远离皇家同花顺......如果是这样,它将返回卡片以防止套牌形式成为皇家卡片齐平。
提前多多感谢!
答案 0 :(得分:0)
您现有的royalFlush方法并未注意传递的牌数,因此检查您是否只有一张牌的一个选项是:
boolean oneCardAway = (royalFlush(myHand) && myHand.size()==4);
但实际上,你只能拥有5张牌的皇家同花顺,所以你可以在你的方法中添加验证。