玩家总是有4张牌,它们存储在一个数组中,玩家需要选择最不需要的牌并返回不需要的牌的索引(从0到3),规则如下
- 如果玩家手中出现最多的单一等级,则随机选择一张不同等级的卡牌。
- 否则,将从玩家的整张手牌中随机选择一张牌。
我花了两个小时,问题是我需要知道每个卡牌等级的出现以及它们在数组中的位置,所以我使用了
Map<Rank, ArrayList<Integer>>
决策部分非常困惑,有更好的方法吗?
示例:
如果我的手牌是 A,10,10,A,那么我随机选择一张。 如果我的手牌是 3,3,3,A 那么我选择 A 如果我的手牌是 2、2、4、5,那么我随机选择 4 或 5。 如果我的手牌是A,2,3,4,那么我随机选择一个。
最佳答案
您需要定义模型类,而不是尝试跟踪数组列表映射中的所有内容。
public class Card {
private String rank;
private String value:
}
.
public class Hand {
private List<Card> cards;
}
.
public class Player {
private Hand hand;
}
.
public class CardGame {
private List<Player> players;
}
您可以使用其余的游戏信息填写这些模型类。
关于Java数据结构计算玩家手中的牌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15467151/