Each Player in my Java Poker Game uses their own deck
你好,我正在尝试创建一个电子扑克游戏。这是到目前为止我所拥有的内容的一部分(为了节省空间,我没有包括枚举、导入、变量、ToString等):
我的卡类定义了我们的卡:
1 2 3 4 5 | public Card(Value value, Suit suit) { this.value = value; this.suit = suit; } |
我的deck类创建52张牌组,并返回
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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; } |
我的玩家课程让我们提供关于玩家的信息。
1 2 3 4 5 6 7 8 9 10 |
问题是每个玩家都使用自己的牌组,因此有时两个或更多不同的玩家可能拥有相同的牌。我的问题是如何设置我的程序让每个玩家使用相同的牌组?谢谢。
输出示例:
Name: John Doe, Cash: 500
[Jack of Hearts, Ten of Hearts, Two of Diamonds, Ace of Clubs, Nine of Diamonds]Name: Jane Doe, Cash: 500
[King of Spades, Two of Diamonds, Jack of Hearts, Ace of Spades, Seven of Diamonds]
不要让玩家类扩展甲板。这基本上是让玩家使用自己(在某种程度上),而你是让他们自己"拥有"一副牌。因此,需要单独使用deck类。
通过播放器构造函数中的deck实例,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 |
如果没有其他方便的地方存放您的甲板,您可以使用单件模式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 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; } |
}
玩家从甲板上抽签:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
所以我将创建5*随机整数的玩家数。然后把它分成五组,到牌堆里去寻找那些编号的牌。例如,0是黑桃的2,13是三叶草的2,14是三叶草的E.T.C.同样,你必须重复这个过程,直到你得到一个没有杜普卢卡斯的清单