当前位置: 首页 > 知识库问答 >
问题:

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

狄令
2023-03-14

我正在尝试制作一个纸牌游戏,它有游戏类、纸牌类、玩家类、副牌类和手牌类。我想让它模拟现实生活,你从一副牌中抽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 个随机卡牌对象从我的套牌数组列表添加到我的手牌数组列表中?

共有1个答案

楚宏胜
2023-03-14

首先,你需要让牌组足够聪明,能够随机抽取所需数量的牌。甲板代码应该是这样的:

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;
    }
}

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

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;
       }

}

在现实生活中,玩家知道他应该根据游戏规则从套牌中获得多少张牌,所以我们将牌的数量传递给手牌构造器。当手牌是空的,我们应该从牌组得到牌,当手牌是完整的简单返回呈现的牌。

 类似资料:
  • 很抱歉这太模糊了,但代码太多了。 这是一个五卡梭哈游戏。基本上,我试图将对象添加到另一个数组列表中的数组列表中。 这是我创建玩家数组并将手类中的数组添加到其中的地方,至少我认为这就是正在发生的事情: 稍后,我尝试在循环交易中将牌添加到玩家阵列中的手牌阵列中。由于有五张牌,第一个循环进行了五次。第二个是玩家数组的长度(玩家总数),每次应该添加一张卡。 Deck类中有一个deal方法,由以下方法初始化

  • 我在数组列表(嵌套数组列表)中有一个数组列表,如下所示 现在我需要获取存在于arraylist的给定索引中的的实例并为其添加一个值。我使用了以下代码 但是它给了我一个错误 线程"main"java.lang.异常索引:0,大小:0 如何解决这个问题以及为什么会发生这种情况。 谢谢你

  • 我有一类,其中包含非静态列表 下面是<code>问题 我正在为问题对象找到一种方法,使其从另一个类的 Array 列表中删除自身。我的方法是从类中调用 方法并传递。但后来我意识到我不能声明

  • 我试图确定数组列表中的数字是否可以被antoher数组列表中的所有数字整除。我下面的代码输出列表中的所有数字,这些数字可以被中的任何除数整除。我想输出列表中所有除数都可以整除的值,而不是它们中的任何一个。例如,如果我有listdiv=[1,2,3,,5,8]和listdivisor=[2,4]。预期的输出应该是8,但此代码输出2和8。 非常感谢。我们将非常感谢您的努力!

  • 问题内容: 我有以下代码片段,我不明白为什么它不起作用: 有人能指出我正确的方向吗? 我已经看到JonSkeet在另一个问题上的回答,但是那里的最后一个示例对我来说不起作用。即使我将强制类型转换添加到标记为的行或行中,也会出现编译错误。 问题答案: 您始终可以通过明确指定type参数来告诉Java您想要列表:

  • 我想创建一个代码,帮助我将元素从“allWords”ArrayList复制到“差异词”。但他在不同单词ArrayList中的时间我希望一个单词只出现一个,消除“差异词”ArrayList中的冗余。 这是我想出的代码,我没有得到任何输出。 导入java。util。ArrayList; 公共类复制元素{ }