package com.josesandoval.magic;

/** 
 * An object of type Deck represents an ordinary deck of 52 playing cards.
 * The deck can be shuffled, and cards can be dealt from the deck.
 */
public class Deck {

	private Card[] deck; // An array of 52 Cards, representing the deck.
	private int cardsUsed; // How many cards have been dealt from the deck.

	public Deck() {
		// Create an unshuffled deck of cards.
		deck = new Card[52];
		int cardCt = 0; // How many cards have been created so far.
		for (int suit = 0; suit <= 3; suit++) {
			for (int value = 1; value <= 13; value++) {
				deck[cardCt] = new Card(value, suit);
				cardCt++;
			}
		}
		cardsUsed = 0;
	}
	public int cardsLeft() {
		// As cards are dealt from the deck, the number of cards left
		// decreases.  This function returns the number of cards that
		// are still left in the deck.
		return 52 - cardsUsed;
	}
	public Card dealCard() {
		// Deals one card from the deck and returns it.
		if (cardsUsed == 52)
			shuffle();
		cardsUsed++;
		return deck[cardsUsed - 1];
	}
	/**
	 * Return Card array.
	 * Creation date: (29/12/2002 1:18:10 PM)
	 * @author: Jose Sandoval
	 * @return com.josesandoval.magic.Card
	 */
	public Card[] getDeck() {
		return deck;
	}
	public void shuffle() {
		// Put all the used cards back into the deck, and shuffle it into
		// a random order.
		for (int i = 51; i > 0; i--) {
			int rand = (int) (Math.random() * (i + 1));
			Card temp = deck[i];
			deck[i] = deck[rand];
			deck[rand] = temp;
		}
		cardsUsed = 0;
	}
}
Syntax Highlighting created using the com.Ostermiller.Syntax package.
Friday, January 03 2003 at 21:45