Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.security.SecureRandom;
- import java.util.ArrayList;
- public class Deck
- {
- //a Deck is an array of Card objects
- private Card[] deck;
- //index of next card to "deal" (0 - 51)
- private int currentCard;
- //number of cards in deck
- private static final int NUMBER_OF_CARDS = 52;
- //names of all the image files
- private static final String[] pics =
- {"ac.gif", "2c.gif", "3c.gif", "4c.gif", "5c.gif","6c.gif", "7c.gif",
- "8c.gif", "9c.gif", "tc.gif", "jc.gif", "qc.gif", "kc.gif",
- "ad.gif", "2d.gif", "3d.gif", "4d.gif", "5d.gif","6d.gif", "7d.gif",
- "8d.gif", "9d.gif", "td.gif", "jd.gif", "qd.gif", "kd.gif",
- "ah.gif", "2h.gif", "3h.gif", "4h.gif", "5h.gif","6h.gif", "7h.gif",
- "8h.gif", "9h.gif", "th.gif", "jh.gif", "qh.gif", "kh.gif",
- "as.gif", "2s.gif", "3s.gif", "4s.gif", "5s.gif","6s.gif", "7s.gif",
- "8s.gif", "9s.gif", "ts.gif", "js.gif", "qs.gif", "ks.gif"
- };
- // constructor fills deck of Cards
- public Deck()
- {
- int[] values = {11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10};
- String[] faces = {"Ace", "Deuce", "Three", "Four", "Five", "Six",
- "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
- String[] suits = {"Clubs", "Diamonds", "Hearts", "Spades"};
- //create array of Card objects
- deck = new Card[NUMBER_OF_CARDS];
- //start with position 0
- currentCard = 0;
- //folder for pics is cards
- //String base = "cards\\";
- //String base = "cards" + java.io.File.separator;
- // populate deck with Card objects
- for (int count = 0; count < deck.length; count++)
- {
- String picname = "cards" + java.io.File.separator + pics[count];
- deck[count] = new Card(faces[count % 13], suits[count / 13], values[count%13], picname);
- }
- }
- // shuffle deck of Cards with one-pass algorithm
- public void shuffle()
- {
- SecureRandom randomNumbers = new SecureRandom();
- // for each Card, pick another random Card (0-51) and swap them
- for (int first = 0; first < deck.length; first++)
- {
- // select a random number between 0 and 51
- int second = randomNumbers.nextInt(NUMBER_OF_CARDS);
- // swap current Card with randomly selected Card
- Card temp = deck[first];
- deck[first] = deck[second];
- deck[second] = temp;
- }
- // next call to method dealCard should start at deck[0] again
- currentCard = 0;
- }
- // deal one Card
- public Card dealCard()
- {
- // determine whether Cards remain to be dealt
- if (currentCard == deck.length)
- {
- //reshuffle deck
- shuffle();
- }
- int dealme = currentCard;
- currentCard++;
- // return current Card in array
- return deck[dealme];
- }
- }//end class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement