您好我正在尝试制作视频扑克游戏。这是我到目前为止的一部分(我没有包含枚举,导入,变量,toStrings等,以节省空间):
我的卡片类定义了我们的卡片:
public Card(Value value, Suit suit) {
this.value = value;
this.suit = suit;
}
My Deck课程创建了一个52张牌组,并以draw()
方式返回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;
}
我的播放器课程可以提供有关我们播放器的信息。
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 [心中的杰克,心中的十颗,钻石的两颗,俱乐部的王牌,九颗钻石]
姓名:Jane Doe,现金:500 [黑桃之王,两颗钻石,杰克之心,黑桃王牌,七颗钻石]
答案 0 :(得分:2)
不要让Player类扩展Deck。这基本上是让玩家自己使用(在某种程度上)并且你正在制作他们&#34;有&#34;甲板本身。因此,您需要单独使用Deck类。
在Player构造函数中传递Deck实例,如下所示:
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;
}
}
答案 1 :(得分:1)
如果没有其他方便的地方可以放置你的甲板,你可以使用单身人士模式:
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;
}
}
玩家从牌组中抽出:
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()
}
答案 2 :(得分:0)
所以我会创建5 *随机整数的玩家数量。然后将它分成五组,然后进入甲板,寻找那些编号的卡片。即,0是2的黑桃,13是2的三叶草,14是三个三叶草e.t.c.此外,您必须重复此过程,直到获得没有重复项的列表