如何将一定数量的对象从一个类中的一个 arrayList 获取到另一个类中的数组列表



我正在尝试制作一个纸牌游戏,它有游戏,纸牌,玩家,套牌和手牌的类。我希望它模拟现实生活,你从一副牌中抽出 5 张牌到你的手上

我让我的班级玩家将所有卡添加到称为卡牌的套牌数组中。喜欢这个:

public Player(String name) {
        this.name = name;
        this.deck = new Deck();                                 
        this.deck.addCard(new Card("c1",20, "fire"));       
        this.deck.addCard(new Card("c2",30, "fire"));       
        this.deck.addCard(new Card("c3",10,"water")); //etc list goes on

将其传递给我的类甲板:

public class Deck {
    private List<Card> cards;
    public Deck() {
        this.cards = new ArrayList<>(); 
    }
    public void addCard(Card card) {
        this.cards.add(card);           
    }

我在类手牌中创建了一个手牌数组列表,称为手牌:

public class Hand {
       Deck deck;
       private List<Card> hand;
       public Hand() {
            this.hand = new ArrayList<>();
        }

如何将我的套牌阵列列表中的 5 个随机卡牌对象添加到我的手牌数组列表中?

首先,您需要使 Deck 足够聪明,可以随机提取卡牌并满足需求金额。甲板代码应该是这样的:

public class Deck {
    private List<Card> cards;
    public Deck() {
        this.cards = new ArrayList<>(); 
    }
    public void addCard(Card card) {
        this.cards.add(card);           
    }
    public List<Card> getCards(final int amount) {
        ArrayList<Card> result = new ArrayList<>();
        Random random = new Random();
        for (int i = 0; i < amount; i++) {
            int randomIndex = random.nextInt(cards.size()); 
            result.add(cards.remove(randomIndex));
        }
        return result;
    }
}

在第二步中,让手部访问 Deck,对于此任务,Deck 应该在 Hand 类中,如下所示:

public class Hand {
       private final Deck deck;
       private final int cardsAmount;
       private List<Card> cardsInHand;
       public Hand(Deck deck, int cardsAmount) {
            this.deck = deck;
            this.cardsAmount = cardsAmount;
       }
       public List<Card> cards() {
           if(cardsInHand == null) cardsInHand = deck.getCards(cardsAmount);
           return cards;
       }
}

在现实生活中,玩家知道根据游戏规则他应该从牌组中获得多少张牌,因此我们将牌的数量传递给手牌构造函数。当手牌为空时,我们应该从牌组中获取牌,当手牌为满时,简单返回呈现的牌。

最新更新