/*
 *      author:  Steven J. Harradine
 *
 *    filename:  BlackJack.java
 *
 *     started:  20060305
 *    finished:  200603xx
 *
 * description:  This program will simulation the effectiveness of counting cards
 *               in black jack including: high / low count
 *
 *    features:  seating position
 *               number of decks
 *               number of players
 *
 */
 
 import java.util.*;
 
 public class BlackJack {
 	public static void main (String[] args) {
 		Scanner sc = new Scanner (System.in);	// input stream
 
 		int userCount;	// the value of all the users hand
 		int dealCount;	// the value of all the dealers hand
 		 		
 		Hand userCards = new Hand(100);	// all cards delt to the user
 		Hand dealCards = new Hand();	// all cards delt to the dealer
 		
 		DeckOfCards deck = new DeckOfCards();	// the deck of cards
 		
 		System.out.println ("\t\tBlack Jack Sim");
 		System.out.println ("\t\t~~~~~~~~~~~~~~");
 		
 		deck.shuffle();	// shuffle the deck
 		
 		// print table header
 		System.out.println ("My Hand\t\tDealers Hand");
 		System.out.println ("~~~~~~~\t\t~~~~~~~~~~~~");
 		System.out.println ("");

		// hide the first card in the deck
		deck.dealCard();
		
		for (int a = 0; a < 5; a++) {
				// place bet
				if (userCards.getCount() > 10)
					userCards.bet (15);
				else if (userCards.getCount() > 0)
					userCards.bet (10);
				else
					userCards.bet (5);
				
				
				// deal user and dealer 1 card
		 		userCards.addCard(deck.dealCard());
		 		dealCards.addCard(deck.dealCard());
		 		
		 		// display table entry
				System.out.println (userCards.getLastCard() + "\t" + dealCards.getLastCard());
				
				// deal user cards
				do {
					userCards.addCard (deck.dealCard());
					System.out.println (userCards.getLastCard());
				} while (userCards.getHandValue() < 17);

				// deal dealer cards
				do {
					dealCards.addCard (deck.dealCard());
					System.out.println ("\t\t" + dealCards.getLastCard());
				} while (dealCards.getHandValue() < 17);

				// display footer
		 		System.out.println ("");
				System.out.println ("User: " + userCards.getHandValue() + "\tDealer: " + dealCards.getHandValue());
				System.out.println ("Cash: " + userCards.getCash());
				System.out.println ("\tCount: " + userCards.getCount());
				System.out.println ("");
				
				// fix bets
				System.out.println (userCards.isWinner (dealCards));
				
				// resets for new round
				userCards.reset();
				dealCards.reset();
		}
 	}
 }
@@ -817,66 +817,92 @@
 %0A %09%09
-DeckOfCards deck = new DeckOfCards();%09// the deck of cards
+int number_of_decks_in_shoe = 5;%0D%0A %09%09Shoe shoe = new Shoe (number_of_decks_in_shoe);
 %0D%0A %09
@@ -1006,20 +1006,20 @@
  %09%09%0D%0A %09%09
-deck
+shoe
 .shuffle
@@ -1249,20 +1249,20 @@
 deck%0D%0A%09%09
-deck
+shoe
 .dealCar
@@ -1292,16 +1292,42 @@
 = 0; a %3C
+ number_of_decks_in_shoe *
  5; a++)
@@ -1574,36 +1574,36 @@
 erCards.addCard(
-deck
+shoe
 .dealCard());%0D%0A%09
@@ -1624,20 +1624,20 @@
 addCard(
-deck
+shoe
 .dealCar
@@ -1819,36 +1819,36 @@
 rCards.addCard (
-deck
+shoe
 .dealCard());%0D%0A%09
@@ -2006,20 +2006,20 @@
 ddCard (
-deck
+shoe
 .dealCar

use shoe