你好,我正在尝试创造一个游戏的视频扑克。这是我到目前为止所拥有内容的一部分(为了节省空间,我没有包括枚举、导入、变量、toStrings等等):
我的卡片类定义了我们的卡片:
public Card(Value value, Suit suit) {
this.value = value;
this.suit = suit;
}我的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;
}问题是每个玩家都使用自己的牌,因此有时两个或更多不同的玩家可能有相同的牌。我的问题是,我如何设置我的程序,让每个玩家使用相同的甲板?谢谢。
输出示例:
名称:无名氏,现金: 500千斤顶心,十颗心,两颗钻石,球棒,钻石九 姓名:简·多伊,现金:黑桃王500,钻石2,红心杰克,黑桃七
发布于 2014-07-23 01:50:43
如果没有其他方便的地方来存放您的甲板,您可以使用单例模式:
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()
}发布于 2014-07-23 01:50:19
不要让玩家类扩展甲板。这基本上是让玩家使用自己(在某种程度上),而你让他们自己“拥有”一副牌。因此,您需要单独使用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;
}
}发布于 2015-07-30 02:26:46
所以我会创建5*随机整数的玩家数。然后把它分成五人一组,然后进入甲板,寻找那些编号的卡片。也就是说,0是2的黑桃,13是2的三叶草,14是三瓣的三叶草。此外,您还必须重复此过程,直到得到没有重复的列表为止。
https://stackoverflow.com/questions/24900525
复制相似问题