首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的爪哇扑克游戏中的每个玩家都使用他们自己的牌

我的爪哇扑克游戏中的每个玩家都使用他们自己的牌
EN

Stack Overflow用户
提问于 2014-07-23 01:37:47
回答 3查看 1.4K关注 0票数 0

你好,我正在尝试创造一个游戏的视频扑克。这是我到目前为止所拥有内容的一部分(为了节省空间,我没有包括枚举、导入、变量、toStrings等等):

我的卡片类定义了我们的卡片:

代码语言:javascript
复制
public Card(Value value, Suit suit) {

    this.value = value;
    this.suit = suit;
}

我的Deck类创建了52张卡片,并在draw()方法中返回5张卡片:

代码语言:javascript
复制
private ArrayList<Card> deck = new ArrayList<Card>();
private ArrayList<Card> hand = new ArrayList<Card>();
private final int HANDSIZE = 5;

public Deck() {

    for(Suit suit : Suit.values()) {
        for(Value value : Value.values()){
            Card card = new Card(value, suit);
            deck.add(card);
        }
    }
}

public ArrayList<Card> draw() {

    Random rng = new Random();

    for(int i = 0; i < HANDSIZE; i++){
        int getCard = rng.nextInt(deck.size());
        Card addCard = deck.get(getCard);
        hand.add(addCard);
        deck.remove(getCard);
    }

    return hand;
}

我的玩家课让我们提供有关我们球员的信息。

代码语言:javascript
复制
public class Player extends Deck {

    private String name;
    private int chips;

    public Player(String name, int chips) {

        this.name = name;
        this.chips = chips;
    }

问题是每个玩家都使用自己的牌,因此有时两个或更多不同的玩家可能有相同的牌。我的问题是,我如何设置我的程序,让每个玩家使用相同的甲板?谢谢。

输出示例:

名称:无名氏,现金: 500千斤顶心,十颗心,两颗钻石,球棒,钻石九 姓名:简·多伊,现金:黑桃王500,钻石2,红心杰克,黑桃七

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-23 01:50:43

如果没有其他方便的地方来存放您的甲板,您可以使用单例模式:

代码语言:javascript
复制
private ArrayList<Card> deck = new ArrayList<Card>();
private final int HANDSIZE = 5;

private static Deck deck = new Deck();

public static Deck getInstance() {
  return deck;
}

// Private Constructor
private Deck() {

    for(Suit suit : Suit.values()) {
        for(Value value : Value.values()){
            Card card = new Card(value, suit);
            deck.add(card);
        }
    }
}

public ArrayList<Card> draw() {

    Random rng = new Random();
    ArrayList<Card> hand = new ArrayList<Card>();
    for(int i = 0; i < HANDSIZE; i++){
    int getCard = rng.nextInt(deck.size());
    Card addCard = deck.get(getCard);
    hand.add(addCard);
    deck.remove(getCard);
    }

    return hand;
}

}

玩家从甲板上抽奖:

代码语言:javascript
复制
public class Player {

    private String name;
    private int chips;

    public Player(String name, int chips) {

        this.name = name;
        this.chips = chips;
    }

    public ArrayList<Card> draw() {
        Deck.getInstance().draw()
    }
票数 1
EN

Stack Overflow用户

发布于 2014-07-23 01:50:19

不要让玩家类扩展甲板。这基本上是让玩家使用自己(在某种程度上),而你让他们自己“拥有”一副牌。因此,您需要单独使用Deck类。

在Player构造函数中传递Deck实例,如下所示:

代码语言:javascript
复制
public class Player {

    private String name;
    private int chips;
    private Deck deck;

    public Player(String name, int chips, Deck deck) {
        this.name = name;
        this.chips = chips;
        this.deck = deck;
    }
}
票数 2
EN

Stack Overflow用户

发布于 2015-07-30 02:26:46

所以我会创建5*随机整数的玩家数。然后把它分成五人一组,然后进入甲板,寻找那些编号的卡片。也就是说,0是2的黑桃,13是2的三叶草,14是三瓣的三叶草。此外,您还必须重复此过程,直到得到没有重复的列表为止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24900525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档