【发布时间】:2014-09-14 01:11:25
【问题描述】:
您好,我正在尝试创建视频扑克游戏。这是我到目前为止的一部分(为了节省空间,我没有包括枚举、导入、变量、toStrings 等):
My Card 类定义了我们的卡片:
public Card(Value value, Suit suit) {
this.value = value;
this.suit = suit;
}
我的 Deck 类在 draw() 方法中创建了 52 张牌并返回 5 张牌:
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;
}
我的 Player 类可以提供有关我们玩家的信息。
public class Player extends Deck {
private String name;
private int chips;
public Player(String name, int chips) {
this.name = name;
this.chips = chips;
}
问题是每个玩家都使用自己的套牌,因此有时两个或多个不同的玩家可能拥有同一张牌。我的问题是如何设置我的程序让每个玩家使用相同的套牌?谢谢。
输出示例:
姓名:John Doe,现金:500 [红桃J,红桃10,方块2,梅花A,方块9]
姓名:Jane Doe,现金:500 [黑桃K,方块2,红桃J,黑桃A,方块7]
【问题讨论】:
-
播放器不应从
Deck扩展,而应获取对Deck实例的引用,该实例应通过其构造函数传递给Player... -
您的“游戏”类应该保留一个
Deck,并且游戏中的每个Player不应从Deck扩展,但可能应该有一个从@987654332 填充的Hand@ 包含在 Game 类中,不管它是什么。
标签: java class duplicates poker