我正在用Java创建一个21点游戏。我需要有多个玩家,需要一个手类来存储从牌组中抽出的牌。我有一个手类,但即使我创建了两个单独的手示例,向任何一只手发一张牌也会将它们添加到两只手。
这是我的手工类代码:
public class Hand2 {
private List<Cards> hand;
private Cards cards;
private int handValue;
public Hand2(List<Cards> hand) {
this.hand = hand;
}
private Cards addCard(Deck deck) {
hand.add(deck.dealCard());
return cards;
}
public int getHandValue() {
for (Cards cards : hand ) {
handValue += cards.getValue();
}
return handValue;
}
public String toString() {
return "Hand: " + hand;
}
下面我来测试一下:
public static void main(String[] args) { //Testing
List<Cards> cards = new ArrayList<Cards>();
Deck deck = new Deck();
deck.shuffle();
Hand2 hand = new Hand2(cards);
Hand2 hand2 = new Hand2(cards);
hand.addCard(deck);
hand2.addCard(deck);
hand2.addCard(deck);
System.out.println(hand2);
System.out.println(hand.getHandValue());
System.out.println(hand2.getHandValue());
}
终端:
Hand: [Three of Diamonds, Four of Clubs, Jack of Hearts]
17
17
但我得到的一手牌值是一样的。
1条答案
按热度按时间e4yzc0pl1#
正如一些人已经注意到的,所有人都共享相同的卡片列表。我在代码中看到的另一个问题是,当你应该使用局部变量时,你却使用了字段(
cards
,handValue
)。试试这个: