/* @(#)Card.java 1.0  7 February 2005 */

/* Useful imports */

import edu.neu.ccs.*;
import edu.neu.ccs.gui.*;
import edu.neu.ccs.codec.*;
import edu.neu.ccs.console.*;
import edu.neu.ccs.filter.*;
import edu.neu.ccs.jpf.*;
import edu.neu.ccs.parser.*;
import edu.neu.ccs.pedagogy.*;
import edu.neu.ccs.quick.*;
import edu.neu.ccs.util.*;

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.font.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.border.*;
import java.io.*;
import java.util.*;
import java.math.*;
import java.beans.*;
import java.lang.reflect.*;
import java.net.*;
import java.util.regex.*;


public class Card {

    private int rank;
    
    private int suit;
    
    private String[] rankList = {
            "",
            "Ace",
            "2",
            "3",
            "4",
            "5",
            "6",
            "7",
            "8",
            "9",
            "10",
            "Jack",
            "Queen",
            "King",
    };
    
    private String[] suitList = {
            "Hearts",
            "Diamonds",
            "Spades",
            "Clubs"
    };
    
    
    public static final int HEARTS = 0;
    public static final int DIAMONDS = 1;
    public static final int SPADES = 2;
    public static final int CLUBS = 3;
    
    public static final int ACE = 1;
    public static final int JACK = 11;
    public static final int QUEEN = 12;
    public static final int KING = 13;
    
    public Card(int rank, int suit) {
        if ((ACE <= rank) && (rank <= KING))
            this.rank = rank;
        else
            throw new RuntimeException
                ("Invalid rank in Card constructor: " + rank);
        
        if ((HEARTS <= suit) && (suit <= CLUBS))
            this.suit = suit;
        else
            throw new RuntimeException
                ("Invalid suit in Card constructor: " + suit);
    }
    
    public ImagePaintableLite getPicture() {
        int index = 13 * suit + rank - 1;
        return CardImages.paintables[index];
    }
    
    public int getRank() { return rank; }
    
    public int getSuit() { return suit; }
    
    public String getRankAsString() { return rankList[rank]; }
    
    public String getSuitAsString() { return suitList[suit]; }
    
}
