为了上课,我需要制作一个纸牌游戏(桥牌)。
我有一个 Card 类,它定义了卡片的所有属性,还有一个 Deck 类,它生成 52 张卡片。还有一个 Hand 类,它将牌从牌堆中随机分配到四只手上。
现在我需要创建一个方法,将玩家的手牌和目标花色作为输入,并返回该花色中排名最高的牌。我有:
private Card highestRankofSuit(ArrayList<Card> hand, char suit)
{
ArrayList<Card> cardsOfSuit = null;
for(int i = 0; i < hand.size(); i++)
{
if (hand.get(i).getSuit() == suit)
{
cardsOfSuit.add(hand.get(i));
}
}
return cardsOfSuit(max(Card.getBridgeRank())); //This is wrong because it only returns one int
}
我该怎么做才能退回所需的卡?另外,我还需要知道如何从 ArrayList 中删除特定的 Card 对象(基于有关该 Card 的信息,例如其等级和花色,但事先不知道它在 ArrayList 中的位置)。
第一次在这里发帖,谢谢大家的帮助!
最佳答案
要返回相关卡牌,您需要循环遍历该花色中的所有卡牌并找到最大的一张,以及该最大卡的索引。检查完所有卡片后,归还值(value)最高的卡片。我认为这就是您想要的(因为您没有提供所有代码)。
int max = -1;
int maxCardIndex = -1;
int i;
for(i = 0; i < cardsOfSuit.size(); i++) {
int cardVal = cardsOfSuit.get(i).getBridgeRank();
if( cardVal > max) {
maxCardIndex = i;
}
}
return cardsOfSuit.get(maxCardIndex);
移除卡牌时,只需循环遍历手牌中的所有卡牌并检查该卡牌的详细信息,如果满足要求,则将其移除。 (您需要更新此内容,但它给出了一个示例)。
for(int i = 0; i < hand.size(); i++) {
Card currentCard = hand.get(i);
/* Check for what conditions you want to match in this if statement */
if(currentCard.foo = "bar") {
hand.remove(i);
}
}
关于java - 如何根据该对象的条件从 java 中的数组列表返回(和删除)该对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30085948/