All pastes #427251 Raw Edit

Something

public text v1 · immutable
·published 2007-04-06 18:20 UTC
rendered paste body
import java.util.*;

public class Card {
  /* Data members ********************************************************/

  public enum Rank { ACE, DEUCE, THREE, FOUR, FIVE, SIX,
    SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING }

  public enum Suit { HEART, SPADE, DIAMOND, CLUB }

  public enum Face { UP, DOWN }
  
  /* the final makes rank and suit immutable which a card should be like */
  private final Rank rank;
  private final Suit suit;
  /* careful to allow face to be changeable so that we can flip cards */
  private Face face;

  /* the linked list that the constructor should return containing 
     a whole deck of cards */
  private static final List<Card> CardDeck = new ArrayList<Card>();

  /* Methods *************************************************************/

  /* Card( ... ) purpose: The constructor is private to prevent it being
                          called from outside of the class. It assigns
                          the instance variables rank and suit values. */
  private Card( Rank rank, Suit suit  )
  {
    /* assigns the rank and suit of the class some values */
    this.rank = rank;
    this.suit = suit;
    this.face = Face.DOWN;
  }
  
  /* Basic information methods */
  public Rank getRank() { return this.rank; }
  public Suit getSuit() { return this.suit; }
  public Face getFace() { return this.face; }
  public String toString() { return rank + " of " + suit + " face: " + face; }

  /* flip a card so that it faces up instead of down */
  public void flip() 
  {
    if( face == Face.DOWN )
      face = Face.UP;
    else
      face = Face.DOWN;
  }

  static {
    /* go through each Suit and Rank value so as to create every combination
      of the two enumerations and add it to the CardDeck */
    for( Suit suit : Suit.values() )
      for( Rank rank : Rank.values() )
        CardDeck.add(new Card( rank, suit ) );
  }

  /* getDeck() purpose: Creates a copy of CardDeck which it returns
               returns: A CardDeck linked list with 52 Card objects in it.*/
  public static final ArrayList<Card>  getDeck()
  {
    /* Return a copy of CardDeck */
    return new ArrayList<Card>( CardDeck );
  }

}