/* CardDeck ClassName: CardDeck.java Purpose: Impements a basic 52 card deck class Date: 10/11/2000 Written By: Jason Hertzog & Mike Dise Written For: Dr. R. Webster */ import java.util.*; public class CardDeck { private Vector deck = null; public CardDeck() { } public String toString () { String strDeck = ""; Card c; for (int i = 0; i < deck.size(); i++) { c = (Card)deck.elementAt(i); strDeck = strDeck.concat(c.getSuit() + Integer.toString(c.getRank()) + ","); } if (strDeck.length() > 0) { strDeck = strDeck.substring(0,strDeck.length()-1); } return strDeck; } public int getDeckSize() { return deck.size(); } public Card dealRandomCard() { Card t = null; int nextCard; if (deck.size() > 0) { Random rand = new Random(); Calendar cal = new GregorianCalendar(); rand.setSeed(cal.get(Calendar.MILLISECOND)); nextCard = Math.abs(rand.nextInt()%(deck.size()-1)); t = (Card)deck.elementAt(nextCard); deck.removeElementAt(nextCard); return t; } else { return null; } } public Card dealTopCard() { Card t = null; if (deck.size() > 0) { t = (Card)deck.firstElement(); deck.removeElementAt(0); return t; } else { return null; } } public void newShuffledDeck() { int nextCard = 0; Random rand = new Random(); Calendar cal = new GregorianCalendar(); this.genSortedDeck(); Vector temp = (Vector)deck.clone(); deck.removeAllElements(); rand.setSeed(cal.get(Calendar.MILLISECOND)); for (int i = 52; i > 0; i--) { nextCard = Math.abs(rand.nextInt()%i); deck.addElement(temp.elementAt(nextCard)); temp.removeElementAt(nextCard); } } public void newSortedDeck() { this.genSortedDeck(); } private void genSortedDeck() { String Suits = new String("HCDS"); if (deck != null) { deck.removeAllElements(); } else { deck = new Vector(52,1); } for (int i = 0; i < 4; i++) { for (int j = 0; j < 13; j++) { deck.addElement(new Card(Suits.charAt(i),j)); } } } }