У меня есть моя программа до такой степени, что она просит пользователя ввести количество карт, а также количество игроков. Я просто хочу распечатать каждую из карт игроков. ех. (Player 1: Ace of Spades, Two of Hearts. Игрок 2: два из клубов и т.д.). У меня есть его для распечатки, но он, кажется, распечатывает только один набор карт, несмотря на то, что в число 2 введено число игроков. Вот мой код.
Класс руки:
public class Hand
{
private int handSize; //how many cards in the hand
private int cardsInHand; //counter
private Card [] hand;
public Hand ()
{
hand = new Card[52];
handSize = 5;
cardsInHand = 0;
}
public Hand (int handSize)
{
hand = new Card [handSize];
this.handSize = handSize;
}
public void addCard (Card card)
{
if (cardsInHand >= handSize)
{
Card[] temp = new Card[hand.length*2];
for (int i=0; i < cardsInHand; i++)
{
temp[i] = hand[i];
hand = temp;
}
}
}
public class Deck
{
private Card [] deck;
private int nextCard;
public Deck()
{
deck = new Card[52];
int iCardCount=0; // Holds how many cards have been created.
for ( int suit = 0; suit <= 3; suit++ )
{
for ( int face = 1; face <= 13; face++ )
{
deck[iCardCount] = new Card(iCardCount);
iCardCount++;
}
}
nextCard = 0;
}
public Card dealACard ()
{
if (nextCard < 52)
{
System.out.println( deck[nextCard++]);
}
else
{
System.out.print("\nError, out of cards." );
}
return (null);
}
public Hand dealAHand (int n)
{
Hand hand = new Hand(n);
Card deal = new Card(n);
for (int i = 0; i < n; i++)
{
hand = dealACard();
}
return hand;
}
Мой водитель:
System.out.println ("How many cards in the hand? ");
int iHand = kb.nextInt();
Hand newHand = new Hand(iHand);
System.out.println("How many players are playing? ");
int iPlayers = kb.nextInt();
Deck secondDeck = new Deck();
secondDeck.shuffle();
secondDeck.dealAHand(iHand);
То, что я получаю как результат:
How many cards in the hand?
5
How many players are playing?
2
the TWO of SPADES
the ACE of HEARTS
the TEN of DIAMONDS
the QUEEN of CLUBS
the NINE of HEARTS
Я бы хотел, чтобы он распечатывал два набора карт, а не один, но я логически не могу понять, как это сделать. Спасибо, спасибо.
У вас есть только один экземпляр руки, и, как говорит Д.Валлайс, вы только звоните в компанию. Прежде чем вы начнете кодирование, вы должны больше разработать структуру своего решения.
dealAHand
только наdealAHand
один раз. Может быть, вам нужно вызвать его в цикле, если вы хотите, чтобы он называлсяiPlayers
раз.