Не удается создать руки для нескольких игроков

1

У меня есть моя программа до такой степени, что она просит пользователя ввести количество карт, а также количество игроков. Я просто хочу распечатать каждую из карт игроков. ех. (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

Я бы хотел, чтобы он распечатывал два набора карт, а не один, но я логически не могу понять, как это сделать. Спасибо, спасибо.

  • 0
    Ну, ты dealAHand только на dealAHand один раз. Может быть, вам нужно вызвать его в цикле, если вы хотите, чтобы он назывался iPlayers раз.
  • 0
    Вам действительно нужно на секунду перестать писать код и подумать о том, что вы делаете с точки зрения объектно-ориентированного дизайна . Ваш код никогда не будет хорошим, если основные предположения неверны. Получить себе колоду карт. Настройте игру. Подумайте, как в игру можно было бы играть при отсутствии компьютеров и кода. Подумайте, какие объекты участвуют. Подумайте, какие данные должны записывать эти объекты и какое поведение они должны демонстрировать.
Показать ещё 2 комментария
Теги:

1 ответ

0

У вас есть только один экземпляр руки, и, как говорит Д.Валлайс, вы только звоните в компанию. Прежде чем вы начнете кодирование, вы должны больше разработать структуру своего решения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню