CISC181 S2017 DeckClass
From class_wiki
package cisc181.mylab_0;
// Christopher Rasmussen
// CISC181, University of Delaware
// March, 2015
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
public class Deck {
ArrayList<Card> myDeck;
ArrayList<ArrayList<Card>> myHands;
Random rand;
// default constructor
Deck() {
myDeck = new ArrayList<Card>();
// initialize empty hands as ArrayList of empty ArrayLists of Cards.
// at this point the number of hands has not been determined
myHands = new ArrayList<ArrayList<Card>>();
// fill deck in order
for (Suit s : Suit.values()) {
for (Rank r : Rank.values()) {
myDeck.add(new Card(r, s));
}
}
// prepare for random operations
rand = new Random();
//Collections.shuffle(myDeck);
}
// print every card in the deck
void print() {
for (Card c : myDeck) {
System.out.println(c);
}
System.out.println("");
}
// creates empty hands and deals deck to them
void deal(int numHands) {
print();
for (int i = 0; i < numHands; i++) {
myHands.add(new ArrayList<Card>());
}
// deal randomly from deck to hands until deck is gone
while (!myDeck.isEmpty()) {
for (int i = 0; i < myHands.size(); i++) {
int indexOfCardToDeal = rand.nextInt(myDeck.size());
Card c = myDeck.remove(indexOfCardToDeal);
myHands.get(i).add(c);
}
}
// print hands...the clunky way
/*
for (int i = 0; i < myHands.size(); i++) {
System.out.println("Hand " + i);
for (int j = 0; j < myHands.get(i).size(); j++) {
System.out.println(myHands.get(i).get(j));
}
System.out.println("");
}
*/
// print hands...like a boss
for (ArrayList<Card> hand : myHands) {
System.out.println("Hand " + myHands.indexOf(hand));
for (Card c : hand) {
System.out.println(c);
}
System.out.println();
}
}
}