Answered You can buy a ready-made answer or pick a professional tutor to order an original one.

QUESTION

JAVA Card Shuffling and Dealing Using the code in the book (or slides if you do not have the book), modify Fig.7.11 to deal a five-card poker hand. Then modify class DeckOfCards of Fig.7.10 to incl

JAVA

Card Shuffling and Dealing

Using  the code in the book (or slides if you do not have the book), modify  Fig.7.11 to deal a five-card poker hand. Then modify class DeckOfCards  of Fig.7.10 to include methods that determine whether a hand contains:

  1. a pair
  2. two pairs
  3. three of a kind (e.g., three jacks)
  4. four of a kind (e.g., four aces)
  5. a flush (i.e., all five cards of the same suit)
  6. a straight (i.e., five cards of consecutive face values)
  7. a full house (i.e., two cards of one face value and three cards of another face value)

Hint: Add methods getFace and getSuit to class Card of Fig.7.9

Then write an application that deals two five-card poker hands, evaluates each hand and determines which is better.

Make  your application simulate the dealer. The dealer's five-card hand is  dealt "face down," so the player cannot see it. The application should  then evaluate the dealer's hand, and, based on the quality of the hand,  the dealer should draw one, two, or three more cards to replace the  corresponding number of unneeded cards in the original hand. The  application should then reevaluate the dealer's hand.

Show more
ANSWER

public class card{

   private final String Face;

   private final String Suit;

   public card(String Cardface, String Cardsuit){

       Face = Cardface;

       Suit = Cardsuit;

   }

   public String toString(){

       return Face + " of " + Suit;

   }

   public String getFace(){

       return Face;

   }

   public String getSuit(){

       return Suit;

   }

}

//////////////////////////////// DeckOfCards.java //////////////////////////////// 

import java.util.Random;

public class DeckOfCards{

// modified to correct strings to String

   public static final String[] Faces = { "Ace", "Deuce", "Three", "Four",

   "Five", "Six", "Seven", "Eight",

                                       "Nine", "Ten", "Jack", "Queen",

   "King"};

   public static final String[] Suits = {"Hearts", "Diamonds",

   "Clubs", "Spades"};

   //shuffle

   public static void shuffle(card[] Deck){

       Random randomNumbers = new Random(); //creating random object

       for (int First = 0; First < Deck.length; First++){

           int Second = randomNumbers.nextInt(Deck.length);

           card temp = Deck[First];

           Deck[First] = Deck[Second];

           Deck[Second] = temp;

       }

   }

   public static int[] FacesIteration(card Hand[]){

int[] iteration = new int[Faces.length];

       for (int count = 0; count < 13; count++)

           iteration[count] = 0;

       for (int h = 0; h < Hand.length; h++){

           for (int i = 0; i < 13; i++){

               if (Hand[h].getFace() == Faces[i])iteration[i]++;

           }

       }

       return iteration;

   }

   public static boolean Twin(card Hand[]){

       int t = 0;

       int[] frequency = FacesIteration(Hand);

       for (int j = 0; j < frequency.length; j++){

           if (frequency[j] == 2){

               t++;

           }

       }

       return (t == 1);

   }

   public static boolean Triples(card Hand[]){

       int triple = 0;

       int[] frequency = FacesIteration(Hand);

       for (int j = 0; j < frequency.length; j++){

           if (frequency[j] == 3){

               triple++;

               break;

           }

       }

       return (triple == 1);

   }

   public static boolean Quadruple(card Hand[]){

       int[] frequency = FacesIteration(Hand);

       for (int j = 0; j < Faces.length; j++)

       {

           if (frequency[j] == 4){

               return true;

           }

       }

       return false;

   }

   public static boolean flush( card[] Hand){

  // correct the name of getSuite to getSuit

       String cardSuit = Hand[0].getSuit();

       for (int k = 1; k < Hand.length; k++){

           if (Hand[k].getSuit() != cardSuit)

               return false;

       }

       return true;

   }

   public static boolean straight(card[] Hand){

       int[] frequency = FacesIteration(Hand);

       if (frequency[0] == 1){

           for (int counts = 9; counts < frequency.length; counts++){

               if (frequency[counts] != 1)

                   return false;

           }

           return true;

       }

       else{

  // declared counts and used i , corrected to counts instead of i that not defined before

           for (int counts = 0; counts < frequency.length;counts++){

  // modified to correct if statement by removing more )

               if (frequency[counts] == 1 && (counts+4) < frequency.length )

               {

                   boolean Value = true;

                   // corrected for loop to add condition

                   for (int c = counts + 1, j = 0;j < 4 ;j++,c++){

                       if (frequency[c] != 1){

                           Value = false;

                           break;

                       }

                   }

                   return Value;

               }

           }

           return false;

       }

   }

   public static boolean FullHand(card Hand[]){

       return(Twin(Hand) && Triples(Hand));

   }

   public static boolean DoublePairs(card Hand[]){

       int[] frequency = FacesIteration(Hand);

       int t = 0;

       for (int counts = 0; counts < frequency.length; counts++){

           if (frequency[counts] == 2){

               t++;

           }

       }

       return (t == 2);

   }

   public static void main(String[] args){

       final int NUMBEROFCARDS = 52;

        // modified to correct   by removing private

         card[]Deck = new card [NUMBEROFCARDS];

       for (int Count = 0; Count < Deck.length; Count++)

       // corrected the name of count to Count

           Deck[Count] = new card (Faces[Count % 13], Suits[Count / 13]);

       shuffle (Deck);

       card[] Hand = new card[5];

       for (int counts = 0; counts < 5; counts++){

           Hand[counts] = Deck[counts];

       }

       System.out.println("The required hand is: ");

       for (int counts = 0; counts < Hand.length;counts++){

           System.out.println(Hand[counts]);

       }

       System.out.print("\nHand contains: ");

       if (Quadruple(Hand)){

           System.out.println("Quadruple ");

       }

       else if( FullHand(Hand) ){

           System.out.println("Full Hand ");

       } // modified to correct if statement by removing more )

       else if (straight(Hand)){

           System.out.println("Straight");

       }

       else if (Triples(Hand)){

           System.out.println("Triples ");

       }

       else if (straight(Hand)){

           System.out.println("Straight ");

       }else if (DoublePairs(Hand)){

           System.out.println("Double ");

       }

       else if (Twin(Hand)){

           System.out.println("Twin ");

       }

       else{

           System.out.println("No match");

       }

   }

}

LEARN MORE EFFECTIVELY AND GET BETTER GRADES!
Ask a Question