MnMWizard icon

Black Jack Project

MnMWizard | PRO | 12/06/17 05:10:50 PM UTC | 0 ⭐ | 359 👁️ | Never ⏰ | []
text |

7.98 KB

|

None

|

0 👍

/

0 👎

import static java.lang.System.*;
import java.util.*;
import javax.swing.*;
 /**
 *
 * @author jmellen and Mason Marnell
 */
public class BlackJack {
     static int deck[];
    static int deckI;
    static ArrayList<Integer> player;
    static ArrayList<Integer> dealer;
     static int bet;
    static int money = 500;
     /**
     * Builds a deck of cards this will be done day 1
     */
    public static void build() {
      // make a new deck of 52 cards
      // set every spot in the array to a card value.
    	deck = new int[52];
    	int i = 0;
    	int p = 0;
    	for(;p<4;p++){
    		for(;i<52;){
    		deck[i] = 2;
    		i++;
    		deck[i] = 3;
    		i++;
    		deck[i] = 4;
    		i++;
    		deck[i] = 5;
    		i++;
    		deck[i] = 6;
    		i++;
    		deck[i] = 7;
    		i++;
    		deck[i] = 8;
    		i++;
    		deck[i] = 9;
    		i++;
    		deck[i] = 10;
    		i++;
    		deck[i] = 10;
    		i++;
    		deck[i] = 10;
    		i++;
    		deck[i] = 10;
    		i++;
    		deck[i] = 11;
    		i++;
    	}
    	}
    }
     /**
     * This method is done for you, and is only used to see the deck of cards, 
     * it will not be used for the final Black Jack Program
     */
    public static void displayDeck() {
        for (int i = 0; i < deck.length; i++) {
            System.out.println(i + "  " + deck[i]);
        }
    }
     /**
     * DAY 2
     * Deal the cards, this method is for day 2.  You will deal 3 cards
     * 2 to the player and 1 to the Dealer, you will then display all the cards
     */
    public static void deal() {
        player = new ArrayList();
       // create a new ArrayList() for the dealer
        dealer = new ArrayList();
         deckI = 0;  // this sets the location of the deck to the first card in the deck
         int aCard = deck[deckI];  // grabs the next card from the deck
        deckI++;  // moves the pointer to the next card in the deck
        player.add(aCard);  // deals 1 card to the player
        aCard = deck[deckI];
        deckI++;
        dealer.add(aCard);// deal 1 card to the dealer
        aCard = deck[deckI];
        deckI++;
        player.add(aCard);// deal 1 more card to the player
        aCard = deck[deckI];
        CompleteDisplay();  // display the cards
    }
         /**
         * DAY 2
         * This method will return a string of all the cards in a hand of cards
         * @param cards an ArrayList of cards
         * @return all of the cards in your hand
         */
      public static String display(ArrayList<Integer> cards) {
        String YourCards = "";   // set YourCards to an initial value of nothing
        for (int o = 0; o < cards.size();o++) {
			YourCards = YourCards + cards.get(o) + " ";
		}
        // go through all of your cards and add the value to YourCards
         return "Total value of cards is " + sumOfCards(cards) + "\n The cards are " + YourCards;
    }
      /**
       * COMPLETED METHOD USED DAY 2
       * This will display all of the cards in the dealer and players hand
       */
    public static void CompleteDisplay() {
        String dealerCards = display(dealer);
        String playerCards = display(player);
        JOptionPane.showMessageDialog(null, "HERE ARE THE PLAYERS CARDS \n" + playerCards
                + "\n  Here are the Dealer Cards \n" + dealerCards);
    }
     /**
     * DAY 3
     * Add up the value of your cards
     * This will return the sum of all cards in a hand of cards
     * @param cards an Integer of arrayList of cards
     * @return the sum of the cards
     */
    public static int sumOfCards(ArrayList<Integer> cards) {
        int sum = 0;
        // add up the value of all the cards in the ArrayList of cards
       for(int u=0;u<cards.size();u++){
    	   sum+= cards.get(u);
       }
        return sum;
    }
    /**
     * Day 4
    * This method allows the player to decide to hit of Stay in Black Jack
    */
    public static void hitOrStay() {
         String ans = JOptionPane.showInputDialog(null, "Do you want to HIT or STAY???");
         while ((ans.contains("H") || ans.contains("h")) && sumOfCards(player) < 21) {
           // deal a card see method deal
        	int aCard = deck[deckI++];
        	player.add(aCard);
            CompleteDisplay();
            if(sumOfCards(player) < 21){
            	ans = JOptionPane.showInputDialog(null, "Do you want to HIT or STAY???");
            }
            if(sumOfCards(player) >21){
            	CheckAce(player);
            }
           // check to see if the value of the cards is less than 21
                // if the value is less than 21 allow player to choose another card.
        }
    }
    /**
     * DAY 4
     * This method allows the dealer to decide if they need to hit of Stay
     */
    public static void DealersTurn() {
    	while(sumOfCards(dealer)<16){
    		int aCard = deck[deckI++];
    		dealer.add(aCard);
     	}
    	if(sumOfCards(dealer)>21){
    		CheckAce(dealer);
    	}
    	CompleteDisplay();
        // while the sum of the dealer cards are less that 16
            // add a card to the dealer
            // if the sum of the dealer cards are over 21
                // check to see if the dealer has an Ace
            // call CompleteDisplay();
    }
     /**
     * DAY 4 Check to see if there is an Ace in the hand
     * This method checks to see if an Ace (11) is in you hand
     * If there is an ace, it will change it to a 1
     * @param hand all the cards in a hand
     */
    public static void CheckAce(ArrayList<Integer> hand) {
        // loop through the hand
            // if the spot is an 11
                // set the spot to 1
                // return;
     	for(int r = 0;r<hand.size();r++){
    		if(hand.get(r) == 11){
    			hand.set(r, 1);
    		}
     	}
    	return;
     }
/**
 * Day 5
 * This method checks to see who wins the hand of black jack
 */
    public static void WhoWins() {
        CompleteDisplay();
        if (sumOfCards(player) > 21) 
        {
            money = money - bet;
            JOptionPane.showMessageDialog(null, "House wins the bet \n you have " + money);
        } else if (sumOfCards(dealer) > 21) 
        {
            money = money + bet;
            JOptionPane.showMessageDialog(null, "Player wins the bet\n you have  " + money);
        }
        else if (sumOfCards(dealer) > sumOfCards(player)) 
        {
            money = money - bet;
            JOptionPane.showMessageDialog(null, "Player loses the bet\n you have  " + money);
        }
        else if (sumOfCards(player) > sumOfCards(dealer)) 
        {
            money = money - bet;
            JOptionPane.showMessageDialog(null, "Player wins the bet\n you have  " + money);
        }
        // use 3 more else if to see who won 
    }
    /**
     * Day 5
     * Swaps every card with another card in the Deck
     * Shuffles the deck of cards
     */
    public static void shuffle() {
        for (int e = 0; e < deck.length; e++) {
            int rand = (int) (Math.random() * deck.length);
            int spare = deck[e];          // make a sparecard with card at spot i
            deck[e] = deck[rand];                      // set the value of spot i to the value of rand
            deck[rand] = spare;                 // set the value of rand to sparecard
        }
    }
     public static void main(String[] args) {
 //          //DAY 1 Build deck and display the deck
//        build();
//        displayDeck();
//        //Day 2 
//        deal();
        while (true) {
            build();
            shuffle();
            String Tbet = JOptionPane.showInputDialog("Enter your bet");
            try {
                bet = Integer.parseInt(Tbet);
            } catch (Exception E) {
                bet = 50;
            }
            deal();
            hitOrStay();
            DealersTurn();
            WhoWins();
        }
    }
}

Comments