//c2000 Hector Chang

public class Big2card {
  protected int value;
  protected int suit;
  
  public Big2card(int value, int suit) {
    this.value=value;
    this.suit=suit;
  }
  
// "T" represents Ten
// "A"'s value is 14
// "2"'s value is 15
// Suits, from high to low "! @ # $" 
//is equivalent to spade, heart, club, diamond

    // Creates a new random deck of 52 cards
  public static Big2card[] randomDeck () {
    Big2card ranDeck[] = new Big2card[52];
    int counter = 0;
    for (int s=1;s<=4;s++) {
      for (int v=3;v<=15;v++) {
        ranDeck[counter] = new Big2card(v,s);
        counter++;
      }
    }
    for (int i = 0; i <= 51; i++) {
      int j = (int)(Math.random() * 51);
      Big2card temp = ranDeck[i];
      ranDeck[i] = ranDeck[j];
      ranDeck[j] = temp;
    }
    return ranDeck;
  }
    


    //Deals one card from top of deck, last array element becomes a 0$ card
  public static Big2card deal(Big2card deck[]) {
    Big2card dealt = deck[0];
    for (int k=1;k<=51;k++) {
      deck[k-1]=deck[k];
    }
    deck[51]=new Big2card(0, 1);
    return dealt;
  }

    //Arrange an array of cards by value and suit
  public static void arrangeHand(Big2card hand[][], int player) {
    for(int i = 0; i<13;i++) {
      int min = i;
      for (int j = i; j<13;j++) {
	  if(hand[player][j].value== hand[player][min].value && hand[player][j].suit < hand[player][min].suit) min = j;
	  if(hand[player][j].value < hand[player][min].value) min = j;
      }
      Big2card tmp;
      tmp = hand[player][i];
      hand[player][i]=hand[player][min];
      hand[player][min]=tmp;
    }
  }

  public String toString() {
    String suitword = "";
    switch (suit) {
      case 0:
	suitword = ".";
	break;
      case 1:
        suitword = "$";
        break;
      case 2:
        suitword = "#";
        break;
      case 3:
        suitword = "@";
        break;
      case 4:
        suitword = "!";
        break;
    }
    String valueword = "";
    switch (value) {
      case 10:
	valueword = "T";
	break;
      case 11:
        valueword = "J";
        break;
      case 12:
        valueword = "Q";
        break;
      case 13:
        valueword = "K";
        break;
      case 14:
        valueword = "A";
        break;
      case 15:
	valueword = "2";
	break;
      default:
        valueword = Integer.toString(value);
    }  
    StringBuffer buf = new StringBuffer (valueword + suitword);
    buf.setLength(2);
    return(buf.toString()+"  ");
  }
  
}
