Advertisement
Guest User

deck

a guest
Apr 23rd, 2014
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public class Foothill
  2. {
  3. public static void main(String[] args)
  4. {
  5. Deck deck1;
  6.  
  7. deck1 = new Deck(1);
  8.  
  9. System.out.println(deck1.toString());
  10.  
  11. }
  12. }
  13.  
  14. class Card
  15. {
  16. public enum Suit
  17. {
  18. clubs, diamonds, hearts, spades
  19. }
  20.  
  21. static char DEFAULT_VAL = 'A';
  22. static Suit DEFAULT_SUIT = Suit.spades;
  23.  
  24. private char value;
  25. private Suit suit;
  26. private boolean errorFlag;
  27.  
  28. public Card(char value, Suit suit)
  29. {
  30. set(value, suit);
  31. }
  32.  
  33. public Card(char value)
  34. {
  35. this(value, Suit.spades);
  36. }
  37.  
  38. public Card()
  39. {
  40. this(DEFAULT_VAL, DEFAULT_SUIT);
  41. }
  42.  
  43. public Card(Card card)
  44. {
  45. this(card.value, card.suit);
  46. }
  47.  
  48. public boolean set(char value, Suit suit)
  49. {
  50. char upVal;
  51.  
  52. upVal = Character.toUpperCase(value);
  53.  
  54. if ( !isValid(upVal, suit))
  55. {
  56. errorFlag = true;
  57. return false;
  58. }
  59.  
  60. errorFlag = false;
  61. this.value = upVal;
  62. this.suit = suit;
  63. return true;
  64. }
  65.  
  66. public char getVal()
  67. {
  68. return value;
  69. }
  70.  
  71. public Suit getSuit()
  72. {
  73. return suit;
  74. }
  75.  
  76. public boolean getErrorFlag()
  77. {
  78. return errorFlag;
  79. }
  80.  
  81. private static boolean isValid(char value, Suit suit)
  82. {
  83. char upVal;
  84. String legalVals = "23456789TJQKA";
  85.  
  86. upVal = Character.toUpperCase(value);
  87.  
  88. if ( legalVals.indexOf(upVal) >= 0 )
  89. return true;
  90. else
  91. return false;
  92. }
  93.  
  94. public boolean equals(Card card)
  95. {
  96. if (this.value != card.value)
  97. return false;
  98. if (this.suit != card.suit)
  99. return false;
  100. if (this.errorFlag != card.errorFlag)
  101. return false;
  102. return true;
  103. }
  104.  
  105. public String toString()
  106. {
  107. String retVal;
  108.  
  109. if (errorFlag)
  110. return "Invalid";
  111.  
  112. retVal = String.valueOf(value);
  113. retVal += " of ";
  114. retVal += String.valueOf(suit);
  115.  
  116. return retVal;
  117. }
  118. }
  119.  
  120. class Hand
  121. {
  122. public static final int MAX_CARDS = 30;
  123.  
  124. private Card[] myCards;
  125. private int numCards;
  126.  
  127. public Hand()
  128. {
  129. myCards = new Card[MAX_CARDS];
  130. resetHand();
  131. }
  132.  
  133. public void resetHand()
  134. {
  135. numCards = 0;
  136. }
  137.  
  138. public boolean takeCard(Card card)
  139. {
  140. if (numCards >= MAX_CARDS)
  141. return false;
  142.  
  143. if (myCards[numCards] == null)
  144. myCards[numCards] = new Card();
  145.  
  146. myCards[numCards++].set(card.getVal(), card.getSuit());
  147. return true;
  148. }
  149.  
  150. public Card playCard()
  151. {
  152. Card errorReturn = new Card('E', Card.Suit.spades);
  153.  
  154. if (numCards == 0)
  155. return errorReturn;
  156. else
  157. return myCards[--numCards];
  158. }
  159.  
  160. Card inspectCard(int k)
  161. {
  162. Card errorReturn = new Card('E', Card.Suit.spades);
  163.  
  164. if (k < 0 || k >= numCards)
  165. return errorReturn;
  166. else
  167. return new Card (myCards[k]);
  168. }
  169.  
  170. public String toString()
  171. {
  172. int k;
  173. String retVal = "Hand = ( ";
  174.  
  175. for (k = 0; k < numCards; k++)
  176. {
  177. retVal += myCards[k].toString();
  178. if (k < numCards - 1)
  179. retVal += ", ";
  180. }
  181. retVal += " )";
  182. return retVal;
  183. }
  184.  
  185. int getNumCards()
  186. {
  187. return numCards;
  188. }
  189. }
  190.  
  191. class Deck
  192. {
  193. private static final int MAX_PACKS = 6;
  194. private static final int NUM_CARDS_PER_PACK = 52;
  195. private static final int MAX_CARDS_PER_DECK = MAX_PACKS * NUM_CARDS_PER_PACK;
  196. private static Card[] masterPack;
  197.  
  198. private Card[] cards;
  199. private int topCard;
  200. private int numPacks;
  201.  
  202. public Deck(int numPacks)
  203. {
  204. this.numPacks = numPacks;
  205.  
  206. allocateMasterPack();
  207. init(numPacks);
  208. }
  209.  
  210. public Deck()
  211. {
  212. this(1);
  213. }
  214. public boolean init(int numPacks)
  215. {
  216. int deckNum = NUM_CARDS_PER_PACK*numPacks;
  217.  
  218. cards = new Card[deckNum];
  219.  
  220. if ( numPacks <= MAX_PACKS )
  221. {
  222. for (int i = 0; i < deckNum; i++ )
  223. cards[i] = masterPack[i % NUM_CARDS_PER_PACK];
  224. return true;
  225. }
  226. else
  227. return false;
  228. }
  229.  
  230. private static void allocateMasterPack()
  231. {
  232. masterPack = new Card[NUM_CARDS_PER_PACK];
  233. int k, j;
  234. Card.Suit st;
  235. char val;
  236.  
  237. if (masterPack[0] == null)
  238. {
  239. for (k = 0; k < masterPack.length; k++)
  240. masterPack[k] = new Card();
  241.  
  242. for (k = 0; k<4; k++)
  243. {
  244. switch(k)
  245. {
  246. case 0:
  247. st = Card.Suit.clubs; break;
  248. case 1:
  249. st = Card.Suit.diamonds; break;
  250. case 2:
  251. st = Card.Suit.hearts; break;
  252. case 3:
  253. st = Card.Suit.spades; break;
  254. default:
  255. st = Card.Suit.spades; break;
  256. }
  257.  
  258. masterPack[13*k].set('A', st);
  259. for (val='2', j = 1; val<='9'; val++, j++)
  260. masterPack[13*k + j].set(val, st);
  261. masterPack[13*k+9].set('T', st);
  262. masterPack[13*k+10].set('J', st);
  263. masterPack[13*k+11].set('Q', st);
  264. masterPack[13*k+12].set('K', st);
  265. }
  266.  
  267. for (k = 0; k < 52; k++)
  268. System.out.println(masterPack[k].toString());
  269. System.out.println();
  270. }
  271. }
  272.  
  273. public void shuffle()
  274. {
  275. for ( int i = cards.length-1; i > 0; i-- )
  276. {
  277. int rand = (int)(Math.random()*(i+1));
  278. Card temp = cards[i];
  279. cards[i] = cards[rand];
  280. cards[rand] = temp;
  281. }
  282. topCard = 0;
  283. }
  284. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement