//----------------------------------------------------------
// Template code for CISC181, fall 2011
// by Christopher Rasmussen
// University of Delaware
// v. 1.0
//----------------------------------------------------------

package cards;

import java.util.*;

//----------------------------------------------------------

// index 0 = "bottom" of pile
// index size() - 1 = "top"

class Deck {
	
	ArrayList<Card> CardList;
	
	// create a new ordered deck
	
	Deck()
	{
		CardList = new ArrayList<Card>();
		for (int i = 0; i < Card.NUM_CARDS_IN_DECK; i++) 
			CardList.add(new Card(i));
	}
	
	// randomize order of cards in deck
	
	void shuffle()
	{
		Collections.shuffle(CardList);
	}
	
	// put cards in order.  ranks take precedence over suits
	
	void sortByRank()
	{
		for (int i = 0; i < CardList.size(); i++)
			CardList.get(i).sortByRankFirst = true;
		
		Collections.sort(CardList);
	}
	
  // put cards in order.  suits take precedence over ranks
	
	void sortBySuit()
	{
		for (int i = 0; i < CardList.size(); i++)
			CardList.get(i).sortByRankFirst = false;
		
		Collections.sort(CardList);
	}

	// deal TOP card to a hand
	
	void deal(Hand h)
	{
		Card c = CardList.remove(CardList.size() - 1);
		h.add(c);
	}
	
	// deal one card to every hand
	
	void deal_all(ArrayList<Hand> H)
	{
		for (int i = 0; i < H.size(); i++)
			deal(H.get(i));
	}
	
  // deal one card to every hand, n times
	
	void deal_all(int n, ArrayList<Hand> H)
	{
		for (int i = 0; i < n; i++)
			deal_all(H);
	}
	
	// add card to top of deck
	
	void add(Card c)
	{
		CardList.add(c);
	}
	
	// convert card representation to something printable
	
	public String toString()
	{
		return CardList.toString();
	}
}

//----------------------------------------------------------

// a Hand is like a mini-Deck...

class Hand extends Deck {

	// difference here is constructor does not "fill" hand with cards -- it starts empty

	Hand()
	{
		CardList = new ArrayList<Card>();
	}

}

//----------------------------------------------------------
//----------------------------------------------------------
