【发布时间】:2019-01-28 05:11:59
【问题描述】:
我正在制作一个扑克应用程序。然而,我坚持评估高卡。 (我知道怎么拿高牌,但是如果2/3玩家的高牌一样呢?)
我的清单是有序的,所以这不是问题。问题是我不知道将 5 张牌与其他玩家的手牌进行比较的好方法。
是的,卡片按rankComparator 类排序。
我有一个简单的Player 类,其中包含一组卡片(他的手):
public class Player {
private List<Card> cards;
private int valueWaarde;
private String valueAsString;
private String name;
private HandEval1 h1;
public String getValueAsString() {
return valueAsString;
}
public Integer getValueWaarde() {
return valueWaarde;
}
public List<Card> getCards() {
return cards;
}
public Player(String name){
this.name = name;
}
public Player() {
}
public void addCard(Card c) {
if (cards == null) {
this.cards = new ArrayList<>();
}
this.cards.add(c);
}
public void clearCards() {
if (cards != null) {
cards.clear();
}
}
public Map<String, Integer> valueOfHand(List<Card> cards, List<Card> cardsBoard) {
h1 = new HandEval1(cards, cardsBoard);
Map<String, Integer> map = h1.evaluateHand();
for (Map.Entry<String, Integer> entry : map.entrySet()) {
this.valueWaarde = entry.getValue();
this.valueAsString = entry.getKey();
}
return map;
}
@Override
public String toString() {
return name;
}
}
我有一个简单的卡片类如下:
public class Card {
private final int suitValue;
private Rank rank;
private Suit suit;
private int value;
public int getSuitValue() {
return suitValue;
}
public int getValue() {
return value;
}
public Rank getRank() {
return rank;
}
public Suit getSuit() {
return suit;
}
public enum Suit {
h(1), c(2), d(3), s(4);
final int value;
Suit(int value) {
this.value = value;
}
}
public enum Rank {
ACE(1),TWO(2), THREE(3), FOUR(4), FIVE(5), SIX(6), SEVEN(7), EIGHT(8), NINE(9), TEN(10),
JACK(11), QUEEN(12), KING(13);
final int value;
Rank(int value) {
this.value = value;
}
}
//Constructor
public Card(Rank rank, Suit suit){
this.rank = rank;
this.suit = suit;
this.value = rank.value;
this.suitValue = suit.value;
}
// methods
public static String rankAsString(int rank){
return String.valueOf(Rank.values()[rank ]);
}
public static String suitAsString(int suit){
return String.valueOf(Suit.values());
}
public String getFilename()
{
return "resource/Cards/" + rank.value + suit + ".gif";
}
}
我有一门课来评估我的手,“现在什么都没有了。”:
// This is my comparator class:
public class rankComparator implements Comparator<Card> {
@Override
public int compare(Card card1, Card card2) {
if (card1.getRank() == card2.getRank()) {
return card1.getSuit().compareTo(card2.getSuit());
}
return card1.getRank().compareTo(card2.getRank());
}
}
【问题讨论】:
-
我不会为你解决,因为你很亲密,但我可以给你一个提示。在你的 Card 类中实现 Ordering 接口,之后你就可以对卡片数组进行排序了
-
我的清单是有序的。这不是问题,问题是我不知道有什么好方法可以将 5 张牌与其他玩家进行比较
-
喜欢比较两个列表?
-
没错!比较 2 个 ( "Integers" ) 列表,
-
你知道如何比较两张卡片列表