/******************************************************************** * Deck * * Member Variables: INSERT DESCRIPTION OF MEMBER VARIABLES Private Methods: * INSERT DESCRIPTION OF PRIVATE METHODS (IF ANY) Public Methods: INSERT * DESCRIPTION OF PUBLIC METHODS (IF ANY) *******************************************************************/ public class Deck { // deck constants public final static int DECK_SIZE = 52; public final static int CARDS_IN_SUIT = 13; // member variables /* INSERT MEMBER VARIABLES HERE */ Card[] deck; int top; /********************************************* * Deck Constructor * * INSERT DESCRIPTION OF CONSTRUCTOR HERE *********************************************/ public Deck() { top = 0; int i, j, index; // instantiate the deck of cards deck = new Card[DECK_SIZE]; for (i = 0; i < deck.length; i++) deck[i] = new Card(); String[] suits = { "Hearts", "Clubs", "Diamonds", "Spades" }; // initialize the deck of cards for (i = 0; i < 4; i++) { index = i * 13; for (j = 0; j < 9; j++) deck[index + j].setCard(j + 2, suits[i]); deck[index + 9].setCard("Jack", suits[i]); deck[index + 10].setCard("Queen", suits[i]); deck[index + 11].setCard("King", suits[i]); deck[index + 12].setCard("Ace", suits[i]); } } /********************************************* * cardsLeft * * INSERT DESCRIPTION OF METHOD HERE *********************************************/ public int cardsLeft() { // how many cards are left in the deck? /* INSERT CODE HERE */ return deck.length - top; } /********************************************* * shuffle * * INSERT DESCRIPTION OF METHOD HERE *********************************************/ public void shuffle() { // shuffle the deck of cards top = 0; int r1, r2, i; for (i = 0; i < 2000; i++) { r1 = (int) (Math.random() * deck.length); r2 = (int) (Math.random() * deck.length); swap(r1, r2); } } /********************************************* * swap * * INSERT DESCRIPTION OF METHOD HERE *********************************************/ public void swap(int ind1, int ind2) { // swap the items in deck[ind1] and deck[ind2] Card temp = new Card(deck[ind1].getFace(), deck[ind1].getSuit()); deck[ind1] = deck[ind2]; deck[ind2] = temp; } /********************************************* * dealFromTop * * INSERT DESCRIPTION OF METHOD HERE *********************************************/ public Card dealFromTop() { // return the top card /* INSERT CODE HERE */ if (top < deck.length) return deck[top++]; else { return deck[deck.length - 1]; } } /********************************************* * toString * * INSERT DESCRIPTION OF METHOD HERE *********************************************/ public String toString() { /* INSERT CODE HERE */ String s = ""; for (int i = top; i < deck.length; i++) s += deck[i].toString() + "\n"; return s; } public void print() { for (int i = 0; i < deck.length; i++) System.out.println(deck[i].toString()); } } // end of Deck class