// Programmer: INSERT YOUR NAME HERE // Assignment: Program 5 /******************************************************************** * 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; deck = new Card[DECK_SIZE]; for (i = 0; i < deck.length; i ++) deck[i] = new Card(); String[] suits = {"Hearts", "Clubs", "Diamonds", "Spades"}; 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]); } // instantiate the deck of cards /* INSERT CODE HERE */ // initialize the deck of cards /* INSERT CODE HERE */ } /********************************************* * 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