001 package ps0.optional;
002
003
004 /**
005 * Represents one of 13 values (2-10, Jack, Queen, King, Ace) that appear
006 * on a playing card. This class is immutable.
007 */
008 public enum CardValue {
009
010 //
011 // CONSTANTS
012 //
013
014 // The 13 acceptable card values.
015
016 /**
017 * The card value representing 2.
018 */
019 TWO("two", "2"),
020
021 /**
022 * The card value representing 3.
023 */
024 THREE("three", "3"),
025
026 /**
027 * The card value representing 4.
028 */
029 FOUR("four", "4"),
030
031 /**
032 * The card value representing 5.
033 */
034 FIVE ("five", "5"),
035
036 /**
037 * The card value representing 6.
038 */
039 SIX ("six", "6"),
040
041 /**
042 * The card value representing 7.
043 */
044 SEVEN ("seven", "7"),
045
046 /**
047 * The card value representing 8.
048 */
049 EIGHT ("eight", "8"),
050
051 /**
052 * The card value representing 9.
053 */
054 NINE("nine", "9"),
055
056 /**
057 * The card value representing 10.
058 */
059 TEN ("ten", "10"),
060
061 /**
062 * The card value representing a Jack.
063 */
064 JACK ("Jack", "J"),
065
066 /**
067 * The card value representing a Queen.
068 */
069 QUEEN("Queen", "Q"),
070
071 /**
072 * The card value representing a King.
073 */
074 KING ("King", "K"),
075
076 /**
077 * The card value representing an Ace.
078 */
079 ACE ("Ace", "A");
080
081 //
082 // MEMBER VARIABLES
083 //
084
085 /**
086 * The name of this card value.
087 */
088 private String name;
089
090 /**
091 * The symbol representing this card value that appears on a playing card. For
092 * the values 2-10, this symbol is simply the digits themselves; for JACK, QUEEN,
093 * KING, and ACE values, the symbols are "J", "Q", "K", and "A" respectively.
094 */
095 private String letterOnCard;
096
097 //
098 // METHODS
099 //
100
101 //-------------------------------------------
102 /**
103 * Creates a new card value.
104 *
105 * @param valueName the name of this value
106 * @param letter the symbol representing this card value that appears
107 * on a playing card
108 *
109 *
110 *
111 * @modifies this
112 * @effects creates a new <code>CardValue</code> object
113 */
114 CardValue(String valueName, String letter) {
115 name = valueName;
116 letterOnCard = letter;
117 }
118
119 //-------------------------------------------
120 /**
121 * Returns the name of this value.
122 * <p>
123 * The value names can be either "2", "3", ..., "10", "Jack", "Queen", "King", or "Ace".
124 *
125 *
126 * @effects returns the name of this value
127 */
128 public String getName() {
129 return name;
130 }
131
132 //-------------------------------------------
133 /**
134 * Returns the symbol representing this card value.
135 * <p>
136 * For the values 2-10, this symbol is simply the digits themselves; for JACK, QUEEN,
137 * KING, and ACE values, the symbols are "J", "Q", "K", and "A" respectively.
138 *
139 *
140 * @effects returns the symbol representing this card value
141 */
142 public String getLetterOnCard() {
143 return letterOnCard;
144 }
145
146
147 //-------------------------------------------
148 /**
149 * Returns a description of this value.
150 *
151 *
152 * @effects returns a description of this value
153 */
154 public String toString() {
155 return getName();
156 }
157
158 }