package hw03;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * @author Thomas
 * Holds a 52 card Deck of playing cards
 */
public class Deck {
	
	
	private final String[] suits = {"Hearts","Spades","Diamonds","Clubs"};
	private final String[] names = {"2","3","4","5","6","7","8","9","10","J","Q","K","A" };
	private final int[] values = { 2,3,4,5,6,7,8,9,10,11,12,13,14};
	private Card[] cards;
	
	public Deck() {
		cards=new Card[52];
		int i=0;
		for(String suit : suits) {
			for(int n=0;n<names.length;n++) {
				cards[i++]=new Card(suit,names[n],values[n]);
			}
		}
	}
	
	public void shuffle() {
		List<Card> cardList = Arrays.asList(cards);
		Collections.shuffle(cardList);
		cardList.toArray(cards);
	}
	
	/**
	 * @param players zero or more hands to deal to
	 * Shuffles the deck, then distributes all cards evenly to all hands
	 */
	public void deal(Player[] players) {
		shuffle();
		int pi=0;
		for(int i=0;i<cards.length;i++) {
			players[pi].addCard(cards[i]);
			pi++;
			if (pi>=players.length) pi=0;
		}	
	}
	
	public String toString() {
		return "Deck: " + Arrays.toString(cards);
	}
}
