
public class Deck
{   public static final int NUM_CARDS = 52;
    
    private Card[] myCards;
    private int topCard;

    public Deck(){
        // create a deck of 52 cards
        myCards = new Card[NUM_CARDS];
        int cardNum = 0;
        for(int suit = Card.CLUBS; suit <= Card.SPADES; suit++){
            for(int rank = Card.TWO; rank <= Card.ACE; rank++){
                myCards[cardNum] = new Card(rank, suit);
                cardNum++;
            }
        }
        topCard = NUM_CARDS - 1;
    }
    
    public void shuffle(){
        Card temp;
        int randomIndex;
        for(int i = 0; i < topCard; i++){
            randomIndex = (int)(Math.random() * NUM_CARDS);
            temp = myCards[randomIndex];
            myCards[randomIndex] = myCards[i];
            myCards[i] = temp;
        }
    }
    
    public Card deal(){
        Card result = myCards[topCard];
        topCard--;
        return result;
    }
    
    public int cardsLeft(){
        return topCard + 1;
    }
    
    public void reset(){
        topCard = NUM_CARDS + 1;
    }
    
    // other possible methods
    // a way to deal many cards
    
    
}

