CISC181 S2017 DeckClass

From class_wiki
Jump to: navigation, search
 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();
         }
     }
 }