Question: README.TXT - Upload a zip file, including PlayingCard.java and VideoPoker.java, to ilearn - Implement poker game program in package PJ3: Part I (40%) Implement Decks

README.TXT

- Upload a zip file, including PlayingCard.java and VideoPoker.java, to ilearn

- Implement poker game program in package PJ3:

Part I (40%) Implement Decks class

Part II (60%) Implement VideoPoker class

Bonus (30%) Add GUI, only after you have completed I & II

Must complete by same due date

Talk to me before you start this part.

Use Java API List<> interface and ArrayList. Reference :

https://docs.oracle.com/javase/8/docs/api/java/util/List.html

https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

some useful methods:

addAll(); size(); subList(); clear(); set()

get(); add(); remove(); isEmpty()

See PJ3/PlayingCard.java and PJ3/VideoPoker.java for more info.

- Use PlayPokerGame.java and TestCheckHands.java to test correctness of your program

- Compile programs (you are in directory containing Readme file):

javac PJ3/*.java

javac *.java

- Run programs (you are in directory containing Readme file):

java PJ3.Decks

java TestCheckHands

java PlayPokerGame

******************************************************************************************

- Sample output : java PJ3.Decks

******* Create 2 decks of cards *********

************************************************

Loop # 0

Before shuffle:104 cards

[A Clubs, 2 Clubs, 3 Clubs, 4 Clubs, 5 Clubs, 6 Clubs, 7 Clubs, 8 Clubs, 9 Clubs, 10 Clubs, J Clubs, Q Clubs, K Clubs, A Diamonds, 2 Diamonds, 3 Diamonds, 4 Diamonds, 5 Diamonds, 6 Diamonds, 7 Diamonds, 8 Diamonds, 9 Diamonds, 10 Diamonds, J Diamonds, Q Diamonds, K Diamonds, A Hearts, 2 Hearts, 3 Hearts, 4 Hearts, 5 Hearts, 6 Hearts, 7 Hearts, 8 Hearts, 9 Hearts, 10 Hearts, J Hearts, Q Hearts, K Hearts, A Spades, 2 Spades, 3 Spades, 4 Spades, 5 Spades, 6 Spades, 7 Spades, 8 Spades, 9 Spades, 10 Spades, J Spades, Q Spades, K Spades, A Clubs, 2 Clubs, 3 Clubs, 4 Clubs, 5 Clubs, 6 Clubs, 7 Clubs, 8 Clubs, 9 Clubs, 10 Clubs, J Clubs, Q Clubs, K Clubs, A Diamonds, 2 Diamonds, 3 Diamonds, 4 Diamonds, 5 Diamonds, 6 Diamonds, 7 Diamonds, 8 Diamonds, 9 Diamonds, 10 Diamonds, J Diamonds, Q Diamonds, K Diamonds, A Hearts, 2 Hearts, 3 Hearts, 4 Hearts, 5 Hearts, 6 Hearts, 7 Hearts, 8 Hearts, 9 Hearts, 10 Hearts, J Hearts, Q Hearts, K Hearts, A Spades, 2 Spades, 3 Spades, 4 Spades, 5 Spades, 6 Spades, 7 Spades, 8 Spades, 9 Spades, 10 Spades, J Spades, Q Spades, K Spades]

==============================================

After shuffle:104 cards

[9 Hearts, 7 Hearts, 6 Diamonds, K Diamonds, 8 Diamonds, 5 Hearts, 5 Diamonds, J Clubs, 2 Diamonds, 10 Spades, 4 Diamonds, A Clubs, 8 Spades, K Hearts, 9 Spades, 7 Diamonds, 6 Diamonds, K Spades, 8 Clubs, 9 Spades, 6 Clubs, 8 Clubs, 2 Hearts, A Clubs, Q Hearts, J Hearts, 2 Diamonds, Q Hearts, A Diamonds, 7 Diamonds, 5 Clubs, 6 Clubs, K Hearts, J Hearts, J Clubs, 3 Spades, 3 Diamonds, 3 Clubs, 2 Hearts, 8 Hearts, 8 Diamonds, 8 Spades, A Diamonds, 3 Clubs, 6 Hearts, 3 Hearts, 4 Spades, 4 Clubs, 8 Hearts, 2 Spades, 4 Spades, K Clubs, 5 Hearts, 5 Spades, Q Spades, K Diamonds, 5 Diamonds, 3 Diamonds, J Spades, 2 Clubs, 2 Spades, 2 Clubs, 3 Hearts, 9 Diamonds, 9 Clubs, 7 Hearts, Q Diamonds, 10 Clubs, J Diamonds, 10 Diamonds, 5 Clubs, K Spades, J Spades, 9 Hearts, K Clubs, A Hearts, 4 Hearts, 9 Clubs, 10 Spades, 6 Hearts, 10 Diamonds, 6 Spades, A Spades, J Diamonds, Q Spades, Q Clubs, A Hearts, 7 Clubs, 4 Clubs, 7 Clubs, Q Clubs, 7 Spades, A Spades, 6 Spades, 7 Spades, 4 Diamonds, 10 Hearts, 9 Diamonds, 4 Hearts, Q Diamonds, 10 Clubs, 3 Spades, 10 Hearts, 5 Spades]

Hand 0:30 cards

[5 Spades, 10 Hearts, 3 Spades, 10 Clubs, Q Diamonds, 4 Hearts, 9 Diamonds, 10 Hearts, 4 Diamonds, 7 Spades, 6 Spades, A Spades, 7 Spades, Q Clubs, 7 Clubs, 4 Clubs, 7 Clubs, A Hearts, Q Clubs, Q Spades, J Diamonds, A Spades, 6 Spades, 10 Diamonds, 6 Hearts, 10 Spades, 9 Clubs, 4 Hearts, A Hearts, K Clubs]

Remain:74 cards

[9 Hearts, 7 Hearts, 6 Diamonds, K Diamonds, 8 Diamonds, 5 Hearts, 5 Diamonds, J Clubs, 2 Diamonds, 10 Spades, 4 Diamonds, A Clubs, 8 Spades, K Hearts, 9 Spades, 7 Diamonds, 6 Diamonds, K Spades, 8 Clubs, 9 Spades, 6 Clubs, 8 Clubs, 2 Hearts, A Clubs, Q Hearts, J Hearts, 2 Diamonds, Q Hearts, A Diamonds, 7 Diamonds, 5 Clubs, 6 Clubs, K Hearts, J Hearts, J Clubs, 3 Spades, 3 Diamonds, 3 Clubs, 2 Hearts, 8 Hearts, 8 Diamonds, 8 Spades, A Diamonds, 3 Clubs, 6 Hearts, 3 Hearts, 4 Spades, 4 Clubs, 8 Hearts, 2 Spades, 4 Spades, K Clubs, 5 Hearts, 5 Spades, Q Spades, K Diamonds, 5 Diamonds, 3 Diamonds, J Spades, 2 Clubs, 2 Spades, 2 Clubs, 3 Hearts, 9 Diamonds, 9 Clubs, 7 Hearts, Q Diamonds, 10 Clubs, J Diamonds, 10 Diamonds, 5 Clubs, K Spades, J Spades, 9 Hearts]

==============================================

After shuffle:74 cards

[2 Hearts, Q Hearts, 6 Clubs, 8 Diamonds, 6 Clubs, 8 Hearts, J Spades, J Spades, 2 Diamonds, 3 Diamonds, 3 Clubs, 5 Clubs, 7 Diamonds, 9 Diamonds, 2 Diamonds, 2 Clubs, 4 Spades, K Hearts, 2 Spades, 4 Clubs, Q Diamonds, 3 Diamonds, K Clubs, 7 Diamonds, 2 Clubs, 10 Diamonds, K Spades, J Clubs, 8 Diamonds, 5 Diamonds, J Diamonds, 6 Diamonds, 8 Hearts, 4 Diamonds, 5 Hearts, J Clubs, 3 Clubs, 9 Spades, 3 Hearts, 9 Hearts, 7 Hearts, A Diamonds, 7 Hearts, 2 Hearts, J Hearts, 9 Spades, A Diamonds, 8 Spades, K Hearts, K Diamonds, 8 Spades, 10 Clubs, K Diamonds, 8 Clubs, A Clubs, 10 Spades, 5 Clubs, 5 Hearts, J Hearts, 9 Clubs, Q Spades, A Clubs, 8 Clubs, 3 Spades, 9 Hearts, 6 Hearts, 2 Spades, 3 Hearts, Q Hearts, 5 Diamonds, 4 Spades, 5 Spades, K Spades, 6 Diamonds]

Hand 1:30 cards

[6 Diamonds, K Spades, 5 Spades, 4 Spades, 5 Diamonds, Q Hearts, 3 Hearts, 2 Spades, 6 Hearts, 9 Hearts, 3 Spades, 8 Clubs, A Clubs, Q Spades, 9 Clubs, J Hearts, 5 Hearts, 5 Clubs, 10 Spades, A Clubs, 8 Clubs, K Diamonds, 10 Clubs, 8 Spades, K Diamonds, K Hearts, 8 Spades, A Diamonds, 9 Spades, J Hearts]

Remain:44 cards

[2 Hearts, Q Hearts, 6 Clubs, 8 Diamonds, 6 Clubs, 8 Hearts, J Spades, J Spades, 2 Diamonds, 3 Diamonds, 3 Clubs, 5 Clubs, 7 Diamonds, 9 Diamonds, 2 Diamonds, 2 Clubs, 4 Spades, K Hearts, 2 Spades, 4 Clubs, Q Diamonds, 3 Diamonds, K Clubs, 7 Diamonds, 2 Clubs, 10 Diamonds, K Spades, J Clubs, 8 Diamonds, 5 Diamonds, J Diamonds, 6 Diamonds, 8 Hearts, 4 Diamonds, 5 Hearts, J Clubs, 3 Clubs, 9 Spades, 3 Hearts, 9 Hearts, 7 Hearts, A Diamonds, 7 Hearts, 2 Hearts]

==============================================

After shuffle:44 cards

[J Spades, 3 Clubs, 7 Hearts, 5 Clubs, J Clubs, 4 Spades, A Diamonds, J Spades, 2 Spades, 7 Diamonds, 6 Diamonds, 9 Hearts, J Clubs, 3 Clubs, 2 Diamonds, 5 Diamonds, 2 Hearts, 2 Clubs, 8 Hearts, 2 Clubs, 10 Diamonds, 9 Spades, K Clubs, J Diamonds, Q Diamonds, 4 Diamonds, 5 Hearts, 4 Clubs, 3 Diamonds, 3 Diamonds, Q Hearts, 7 Hearts, 6 Clubs, 8 Diamonds, 2 Hearts, 6 Clubs, 7 Diamonds, 8 Diamonds, 9 Diamonds, K Spades, K Hearts, 2 Diamonds, 3 Hearts, 8 Hearts]

Hand 2:30 cards

[8 Hearts, 3 Hearts, 2 Diamonds, K Hearts, K Spades, 9 Diamonds, 8 Diamonds, 7 Diamonds, 6 Clubs, 2 Hearts, 8 Diamonds, 6 Clubs, 7 Hearts, Q Hearts, 3 Diamonds, 3 Diamonds, 4 Clubs, 5 Hearts, 4 Diamonds, Q Diamonds, J Diamonds, K Clubs, 9 Spades, 10 Diamonds, 2 Clubs, 8 Hearts, 2 Clubs, 2 Hearts, 5 Diamonds, 2 Diamonds]

Remain:14 cards

[J Spades, 3 Clubs, 7 Hearts, 5 Clubs, J Clubs, 4 Spades, A Diamonds, J Spades, 2 Spades, 7 Diamonds, 6 Diamonds, 9 Hearts, J Clubs, 3 Clubs]

==============================================

After shuffle:14 cards

[A Diamonds, 5 Clubs, 9 Hearts, 6 Diamonds, J Clubs, J Spades, 2 Spades, 3 Clubs, J Clubs, 7 Diamonds, 7 Hearts, J Spades, 3 Clubs, 4 Spades]

Hand 3:30 cards

*** In catch block:PlayingCardException:Error Msg: Not enough cards to deal

************************************************

Loop # 1

Before shuffle:104 cards

[A Clubs, 2 Clubs, 3 Clubs, 4 Clubs, 5 Clubs, 6 Clubs, 7 Clubs, 8 Clubs, 9 Clubs, 10 Clubs, J Clubs, Q Clubs, K Clubs, A Diamonds, 2 Diamonds, 3 Diamonds, 4 Diamonds, 5 Diamonds, 6 Diamonds, 7 Diamonds, 8 Diamonds, 9 Diamonds, 10 Diamonds, J Diamonds, Q Diamonds, K Diamonds, A Hearts, 2 Hearts, 3 Hearts, 4 Hearts, 5 Hearts, 6 Hearts, 7 Hearts, 8 Hearts, 9 Hearts, 10 Hearts, J Hearts, Q Hearts, K Hearts, A Spades, 2 Spades, 3 Spades, 4 Spades, 5 Spades, 6 Spades, 7 Spades, 8 Spades, 9 Spades, 10 Spades, J Spades, Q Spades, K Spades, A Clubs, 2 Clubs, 3 Clubs, 4 Clubs, 5 Clubs, 6 Clubs, 7 Clubs, 8 Clubs, 9 Clubs, 10 Clubs, J Clubs, Q Clubs, K Clubs, A Diamonds, 2 Diamonds, 3 Diamonds, 4 Diamonds, 5 Diamonds, 6 Diamonds, 7 Diamonds, 8 Diamonds, 9 Diamonds, 10 Diamonds, J Diamonds, Q Diamonds, K Diamonds, A Hearts, 2 Hearts, 3 Hearts, 4 Hearts, 5 Hearts, 6 Hearts, 7 Hearts, 8 Hearts, 9 Hearts, 10 Hearts, J Hearts, Q Hearts, K Hearts, A Spades, 2 Spades, 3 Spades, 4 Spades, 5 Spades, 6 Spades, 7 Spades, 8 Spades, 9 Spades, 10 Spades, J Spades, Q Spades, K Spades]

==============================================

After shuffle:104 cards

[2 Spades, 8 Diamonds, 7 Diamonds, 4 Diamonds, Q Hearts, A Clubs, J Spades, 9 Clubs, J Clubs, 2 Clubs, 4 Hearts, 7 Hearts, A Spades, 8 Clubs, A Diamonds, 3 Diamonds, 6 Clubs, K Diamonds, 9 Diamonds, 9 Diamonds, 6 Clubs, 7 Spades, 2 Hearts, A Clubs, 6 Hearts, 9 Clubs, K Spades, A Diamonds, 3 Diamonds, 5 Spades, K Hearts, 2 Hearts, Q Hearts, 9 Spades, 8 Spades, J Diamonds, 4 Hearts, 6 Spades, 4 Spades, Q Clubs, 3 Hearts, 3 Spades, Q Diamonds, 5 Spades, A Spades, Q Diamonds, 10 Clubs, 5 Hearts, 5 Hearts, 9 Hearts, 3 Hearts, 6 Diamonds, 2 Spades, Q Clubs, 7 Diamonds, 10 Diamonds, 2 Diamonds, 6 Diamonds, 8 Clubs, 4 Clubs, K Spades, 10 Hearts, 2 Diamonds, A Hearts, J Diamonds, 8 Hearts, 5 Clubs, A Hearts, 5 Diamonds, Q Spades, 3 Clubs, J Hearts, 3 Spades, 6 Hearts, 10 Hearts, K Diamonds, 10 Spades, 8 Hearts, J Clubs, 4 Diamonds, 10 Clubs, J Spades, 4 Clubs, 7 Clubs, 10 Spades, 5 Diamonds, 2 Clubs, 6 Spades, J Hearts, 8 Diamonds, K Clubs, 3 Clubs, 7 Spades, 9 Spades, 7 Clubs, Q Spades, K Hearts, 5 Clubs, 9 Hearts, 10 Diamonds, K Clubs, 8 Spades, 7 Hearts, 4 Spades]

Hand 0:30 cards

[4 Spades, 7 Hearts, 8 Spades, K Clubs, 10 Diamonds, 9 Hearts, 5 Clubs, K Hearts, Q Spades, 7 Clubs, 9 Spades, 7 Spades, 3 Clubs, K Clubs, 8 Diamonds, J Hearts, 6 Spades, 2 Clubs, 5 Diamonds, 10 Spades, 7 Clubs, 4 Clubs, J Spades, 10 Clubs, 4 Diamonds, J Clubs, 8 Hearts, 10 Spades, K Diamonds, 10 Hearts]

Remain:74 cards

[2 Spades, 8 Diamonds, 7 Diamonds, 4 Diamonds, Q Hearts, A Clubs, J Spades, 9 Clubs, J Clubs, 2 Clubs, 4 Hearts, 7 Hearts, A Spades, 8 Clubs, A Diamonds, 3 Diamonds, 6 Clubs, K Diamonds, 9 Diamonds, 9 Diamonds, 6 Clubs, 7 Spades, 2 Hearts, A Clubs, 6 Hearts, 9 Clubs, K Spades, A Diamonds, 3 Diamonds, 5 Spades, K Hearts, 2 Hearts, Q Hearts, 9 Spades, 8 Spades, J Diamonds, 4 Hearts, 6 Spades, 4 Spades, Q Clubs, 3 Hearts, 3 Spades, Q Diamonds, 5 Spades, A Spades, Q Diamonds, 10 Clubs, 5 Hearts, 5 Hearts, 9 Hearts, 3 Hearts, 6 Diamonds, 2 Spades, Q Clubs, 7 Diamonds, 10 Diamonds, 2 Diamonds, 6 Diamonds, 8 Clubs, 4 Clubs, K Spades, 10 Hearts, 2 Diamonds, A Hearts, J Diamonds, 8 Hearts, 5 Clubs, A Hearts, 5 Diamonds, Q Spades, 3 Clubs, J Hearts, 3 Spades, 6 Hearts]

==============================================

After shuffle:74 cards

[A Hearts, A Spades, 7 Spades, 6 Spades, 5 Diamonds, 8 Clubs, 5 Spades, 10 Diamonds, 7 Diamonds, Q Clubs, 3 Hearts, 6 Diamonds, 3 Diamonds, Q Clubs, 9 Clubs, 8 Diamonds, Q Hearts, K Spades, 2 Hearts, 6 Hearts, 3 Hearts, 8 Hearts, A Hearts, 3 Spades, K Diamonds, 10 Hearts, 7 Diamonds, 5 Spades, A Diamonds, 2 Clubs, A Clubs, A Spades, 5 Hearts, 2 Spades, 8 Spades, 2 Spades, J Spades, Q Hearts, 5 Clubs, 3 Spades, 3 Diamonds, 2 Hearts, A Diamonds, J Diamonds, 9 Hearts, 4 Hearts, J Diamonds, 4 Hearts, Q Diamonds, K Spades, 9 Spades, K Hearts, 6 Clubs, J Clubs, 4 Clubs, 9 Diamonds, 4 Spades, 2 Diamonds, 10 Clubs, 8 Clubs, 9 Diamonds, Q Diamonds, 6 Diamonds, 2 Diamonds, Q Spades, 9 Clubs, J Hearts, 6 Hearts, 7 Hearts, 3 Clubs, 6 Clubs, 4 Diamonds, 5 Hearts, A Clubs]

Hand 1:30 cards

[A Clubs, 5 Hearts, 4 Diamonds, 6 Clubs, 3 Clubs, 7 Hearts, 6 Hearts, J Hearts, 9 Clubs, Q Spades, 2 Diamonds, 6 Diamonds, Q Diamonds, 9 Diamonds, 8 Clubs, 10 Clubs, 2 Diamonds, 4 Spades, 9 Diamonds, 4 Clubs, J Clubs, 6 Clubs, K Hearts, 9 Spades, K Spades, Q Diamonds, 4 Hearts, J Diamonds, 4 Hearts, 9 Hearts]

Remain:44 cards

[A Hearts, A Spades, 7 Spades, 6 Spades, 5 Diamonds, 8 Clubs, 5 Spades, 10 Diamonds, 7 Diamonds, Q Clubs, 3 Hearts, 6 Diamonds, 3 Diamonds, Q Clubs, 9 Clubs, 8 Diamonds, Q Hearts, K Spades, 2 Hearts, 6 Hearts, 3 Hearts, 8 Hearts, A Hearts, 3 Spades, K Diamonds, 10 Hearts, 7 Diamonds, 5 Spades, A Diamonds, 2 Clubs, A Clubs, A Spades, 5 Hearts, 2 Spades, 8 Spades, 2 Spades, J Spades, Q Hearts, 5 Clubs, 3 Spades, 3 Diamonds, 2 Hearts, A Diamonds, J Diamonds]

==============================================

After shuffle:44 cards

[3 Diamonds, Q Clubs, 5 Spades, 7 Diamonds, 5 Hearts, Q Hearts, 5 Diamonds, K Spades, 2 Hearts, A Spades, 10 Diamonds, Q Hearts, 3 Hearts, A Clubs, 3 Diamonds, 3 Spades, A Hearts, 2 Hearts, 6 Diamonds, A Diamonds, 10 Hearts, J Diamonds, 6 Spades, 7 Spades, 8 Clubs, 7 Diamonds, 8 Diamonds, K Diamonds, J Spades, 8 Spades, 3 Spades, A Hearts, 5 Clubs, A Spades, 3 Hearts, 2 Spades, 2 Spades, 2 Clubs, A Diamonds, 5 Spades, 8 Hearts, Q Clubs, 6 Hearts, 9 Clubs]

Hand 2:30 cards

[9 Clubs, 6 Hearts, Q Clubs, 8 Hearts, 5 Spades, A Diamonds, 2 Clubs, 2 Spades, 2 Spades, 3 Hearts, A Spades, 5 Clubs, A Hearts, 3 Spades, 8 Spades, J Spades, K Diamonds, 8 Diamonds, 7 Diamonds, 8 Clubs, 7 Spades, 6 Spades, J Diamonds, 10 Hearts, A Diamonds, 6 Diamonds, 2 Hearts, A Hearts, 3 Spades, 3 Diamonds]

Remain:14 cards

[3 Diamonds, Q Clubs, 5 Spades, 7 Diamonds, 5 Hearts, Q Hearts, 5 Diamonds, K Spades, 2 Hearts, A Spades, 10 Diamonds, Q Hearts, 3 Hearts, A Clubs]

==============================================

After shuffle:14 cards

[5 Diamonds, A Clubs, 5 Hearts, 10 Diamonds, Q Hearts, Q Clubs, A Spades, K Spades, 3 Diamonds, 2 Hearts, Q Hearts, 7 Diamonds, 5 Spades, 3 Hearts]

Hand 3:30 cards

*** In catch block:PlayingCardException:Error Msg: Not enough cards to deal

******************************************************************************************

- Sample output : java TestCheckHands

[A Spades, 10 Spades, Q Spades, J Spades, K Spades]

Royal Flush!

-----------------------------------

[9 Spades, 10 Spades, Q Spades, J Spades, K Spades]

Straight Flush!

-----------------------------------

[9 Spades, 10 Spades, Q Spades, J Spades, 8 Diamonds]

Straight!

-----------------------------------

[9 Spades, 10 Spades, Q Spades, J Spades, 5 Spades]

Flush!

-----------------------------------

[8 Spades, 8 Clubs, Q Spades, 8 Diamonds, 8 Hearts]

Four of a Kind!

-----------------------------------

[8 Spades, 8 Clubs, Q Spades, 8 Diamonds, J Spades]

Three of a Kind!

-----------------------------------

[8 Spades, 8 Clubs, J Diamonds, 8 Diamonds, J Spades]

Full House!

-----------------------------------

[8 Spades, 9 Diamonds, J Diamonds, 8 Diamonds, J Spades]

Two Pairs!

-----------------------------------

[3 Diamonds, 9 Diamonds, J Diamonds, 8 Diamonds, J Spades]

Royal Pair!

-----------------------------------

[3 Diamonds, 9 Diamonds, 3 Spades, 8 Diamonds, J Spades]

Sorry, you lost!

-----------------------------------

******************************************************************************************

$ java PlayPokerGame 1000

Payout Table Multiplier

=======================================

Royal Flush | 250

Straight Flush | 50

Four of a Kind | 25

Full House | 9

Flush | 6

Straight | 5

Three of a Kind | 3

Two Pairs | 2

Royal Pair | 1

-----------------------------------

Balance:$1000

Enter bet:200

Hand:[7 Hearts, 9 Diamonds, K Diamonds, A Spades, J Hearts]

Enter positions of cards to keep (e.g. 1 4 5 ): <-- replace all cards

Hand:[10 Hearts, 7 Spades, 8 Diamonds, 6 Clubs, 8 Clubs]

Sorry, you lost!

Your balance:$800, one more game (y or n)?y

Want to see payout table (y or n)y

Payout Table Multiplier

=======================================

Royal Flush | 250

Straight Flush | 50

Four of a Kind | 25

Full House | 9

Flush | 6

Straight | 5

Three of a Kind | 3

Two Pairs | 2

Royal Pair | 1

-----------------------------------

Balance:$800

Enter bet:200

Hand:[10 Hearts, Q Clubs, 5 Diamonds, 4 Hearts, 2 Clubs]

Enter positions of cards to keep (e.g. 1 4 5 ):1 2 3 4 5 <-- keep all cards

Hand:[10 Hearts, Q Clubs, 5 Diamonds, 4 Hearts, 2 Clubs]

Sorry, you lost!

Your balance:$600, one more game (y or n)?y

Want to see payout table (y or n)n

-----------------------------------

Balance:$600

Enter bet:200

Hand:[6 Diamonds, 8 Hearts, J Clubs, 5 Spades, 9 Hearts]

Enter positions of cards to keep (e.g. 1 4 5 ):1 5 <-- keep 2 cards

Hand:[6 Diamonds, 5 Diamonds, 3 Diamonds, 9 Diamonds, 9 Hearts]

Sorry, you lost!

Your balance:$400, one more game (y or n)?y

Want to see payout table (y or n)200

-----------------------------------

Balance:$400

Enter bet:200

Hand:[K Spades, 4 Hearts, J Spades, J Clubs, 5 Spades]

Enter positions of cards to keep (e.g. 1 4 5 ):3 4

Hand:[9 Clubs, Q Clubs, J Spades, J Clubs, 2 Clubs]

Royal Pair!

Your balance:$400, one more game (y or n)?y

Want to see payout table (y or n)n

-----------------------------------

Balance:$400

Enter bet:400

Hand:[2 Spades, 2 Diamonds, 3 Clubs, A Diamonds, 5 Hearts]

Enter positions of cards to keep (e.g. 1 4 5 ):1 2

Hand:[2 Spades, 2 Diamonds, K Hearts, 4 Clubs, 9 Spades]

Sorry, you lost!

Your balance is 0

Bye!

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------PlayingCard.java

package PJ3;

import java.util.*;

//=================================================================================

/** class PlayingCardException: It is used for errors related to Card and Deck objects

* Do not modify this class!

*/

class PlayingCardException extends Exception {

/* Constructor to create a PlayingCardException object */

PlayingCardException (){

super ();

}

PlayingCardException ( String reason ){

super ( reason );

}

}

//=================================================================================

/** class Card : for creating playing card objects

* it is an immutable class.

* Rank - valid values are 1 to 13

* Suit - valid values are 0 to 3

* Do not modify this class!

*/

class Card {

/* constant suits and ranks */

static final String[] Suit = {"Clubs", "Diamonds", "Hearts", "Spades" };

static final String[] Rank = {"","A","2","3","4","5","6","7","8","9","10","J","Q","K"};

/* Data field of a card: rank and suit */

private int cardRank; /* values: 1-13 (see Rank[] above) */

private int cardSuit; /* values: 0-3 (see Suit[] above) */

/* Constructor to create a card */

/* throw PlayingCardException if rank or suit is invalid */

public Card(int rank, int suit) throws PlayingCardException {

if ((rank < 1) || (rank > 13))

throw new PlayingCardException("Invalid rank:"+rank);

else

cardRank = rank;

if ((suit < 0) || (suit > 3))

throw new PlayingCardException("Invalid suit:"+suit);

else

cardSuit = suit;

}

/* Accessor and toString */

/* You may impelemnt equals(), but it will not be used */

public int getRank() { return cardRank; }

public int getSuit() { return cardSuit; }

public String toString() { return Rank[cardRank] + " " + Suit[cardSuit]; }

/* Few quick tests here */

public static void main(String args[])

{

try {

Card c1 = new Card(1,3); // A Spades

System.out.println(c1);

c1 = new Card(10,0); // 10 Clubs

System.out.println(c1);

c1 = new Card(10,5); // generate exception here

}

catch (PlayingCardException e)

{

System.out.println("PlayingCardException: "+e.getMessage());

}

}

}

//=================================================================================

/** class Decks represents : n decks of 52 playing cards

* Use class Card to construct n * 52 playing cards!

*

* Do not add new data fields!

* Do not modify any methods

* You may add private methods

*/

class Decks {

/* this is used to keep track of original n*52 cards */

private List originalDecks;

/* this starts with copying cards from originalDecks */

/* it is used to play the card game */

/* see reset(): resets gameDecks to originalDecks */

private List gameDecks;

/* number of decks in this object */

private int numberDecks;

/**

* Constructor: Creates default one deck of 52 playing cards in originalDecks and

* copy them to gameDecks.

* initialize numberDecks=1

* Note: You need to catch PlayingCardException from Card constructor

* Use ArrayList for both originalDecks & gameDecks

*/

public Decks()

{

// implement this method!

}

/**

* Constructor: Creates n decks (52 cards each deck) of playing cards in

* originalDecks and copy them to gameDecks.

* initialize numberDecks=n

* Note: You need to catch PlayingCardException from Card constructor

* Use ArrayList for both originalDecks & gameDecks

*/

public Decks(int n)

{

// implement this method!

}

/**

* Task: Shuffles cards in gameDecks.

* Hint: Look at java.util.Collections

*/

public void shuffle()

{

// implement this method!

}

/**

* Task: Deals cards from the gameDecks.

*

* @param numberCards number of cards to deal

* @return a list containing cards that were dealt

* @throw PlayingCardException if numberCard > number of remaining cards

*

* Note: You need to create ArrayList to stored dealt cards

* and should removed dealt cards from gameDecks

*

*/

public List deal(int numberCards) throws PlayingCardException

{

// implement this method!

return null;

}

/**

* Task: Resets gameDecks by getting all cards from the originalDecks.

*/

public void reset()

{

// implement this method!

}

/**

* Task: Return number of remaining cards in gameDecks.

*/

public int remainSize()

{

return gameDecks.size();

}

/**

* Task: Returns a string representing cards in the gameDecks

*/

public String toString()

{

return ""+gameDecks;

}

/* Quick test */

/* */

/* Do not modify these tests */

/* Generate 2 decks of cards */

/* Loop 2 times: */

/* Deal 30 cards for 4 times */

/* Expect exception last time */

/* reset() */

public static void main(String args[]) {

System.out.println("******* Create 2 decks of cards ********* ");

Decks decks = new Decks(2);

for (int j=0; j < 2; j++)

{

System.out.println(" ************************************************ ");

System.out.println("Loop # " + j + " ");

System.out.println("Before shuffle:"+decks.remainSize()+" cards");

System.out.println(" \t"+decks);

System.out.println(" ============================================== ");

int numHands = 4;

int cardsPerHand = 30;

for (int i=0; i < numHands; i++)

{

decks.shuffle();

System.out.println("After shuffle:"+decks.remainSize()+" cards");

System.out.println(" \t"+decks);

try {

System.out.println(" Hand "+i+":"+cardsPerHand+" cards");

System.out.println(" \t"+decks.deal(cardsPerHand));

System.out.println(" Remain:"+decks.remainSize()+" cards");

System.out.println(" \t"+decks);

System.out.println(" ============================================== ");

}

catch (PlayingCardException e)

{

System.out.println("*** In catch block:PlayingCardException:Error Msg: "+e.getMessage());

}

}

decks.reset();

}

}

}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------VideoPoker.java

package PJ3;

import java.util.*;

/*

* Ref: http://en.wikipedia.org/wiki/Video_poker

* http://www.freeslots.com/poker.htm

*

*

* Short Description and Poker rules:

*

* Video poker is also known as draw poker.

* The dealer uses a 52-card deck, which is played fresh after each playerHand.

* The player is dealt one five-card poker playerHand.

* After the first draw, which is automatic, you may hold any of the cards and draw

* again to replace the cards that you haven't chosen to hold.

* Your cards are compared to a table of winning combinations.

* The object is to get the best possible combination so that you earn the highest

* payout on the bet you placed.

*

* Winning Combinations

*

* 1. Jacks or Better: a pair pays out only if the cards in the pair are Jacks,

* Queens, Kings, or Aces. Lower pairs do not pay out.

* 2. Two Pair: two sets of pairs of the same card denomination.

* 3. Three of a Kind: three cards of the same denomination.

* 4. Straight: five consecutive denomination cards of different suit.

* 5. Flush: five non-consecutive denomination cards of the same suit.

* 6. Full House: a set of three cards of the same denomination plus

* a set of two cards of the same denomination.

* 7. Four of a kind: four cards of the same denomination.

* 8. Straight Flush: five consecutive denomination cards of the same suit.

* 9. Royal Flush: five consecutive denomination cards of the same suit,

* starting from 10 and ending with an ace

*

*/

/* This is the video poker game class.

* It uses Decks and Card objects to implement video poker game.

* Please do not modify any data fields or defined methods

* You may add new data fields and methods

* Note: You must implement defined methods

*/

public class VideoPoker {

// default constant values

private static final int startingBalance=100;

private static final int numberOfCards=5;

// default constant payout value and playerHand types

private static final int[] multipliers={1,2,3,5,6,9,25,50,250};

private static final String[] goodHandTypes={

"Royal Pair" , "Two Pairs" , "Three of a Kind", "Straight", "Flush ",

"Full House", "Four of a Kind", "Straight Flush", "Royal Flush" };

// must use only one deck

private final Decks oneDeck;

// holding current poker 5-card hand, balance, bet

private List playerHand;

private int playerBalance;

private int playerBet;

/** default constructor, set balance = startingBalance */

public VideoPoker()

{

this(startingBalance);

}

/** constructor, set given balance */

public VideoPoker(int balance)

{

this.playerBalance= balance;

oneDeck = new Decks(1);

}

/** This display the payout table based on multipliers and goodHandTypes arrays */

private void showPayoutTable()

{

System.out.println(" ");

System.out.println("Payout Table Multiplier ");

System.out.println("=======================================");

int size = multipliers.length;

for (int i=size-1; i >= 0; i--) {

System.out.println(goodHandTypes[i]+"\t|\t"+multipliers[i]);

}

System.out.println(" ");

}

/** Check current playerHand using multipliers and goodHandTypes arrays

* Must print yourHandType (default is "Sorry, you lost") at the end of function.

* This can be checked by testCheckHands() and main() method.

*/

private void checkHands()

{

// implement this method!

}

/*************************************************

* add additional private methods here ....

*

*************************************************/

public void play()

{

/** The main algorithm for single player poker game

*

* Steps:

* showPayoutTable()

*

* ++

* show balance, get bet

* verify bet value, update balance

* reset deck, shuffle deck,

* deal cards and display cards

* ask for positions of cards to keep

* get positions in one input line

* update cards

* check hands, display proper messages

* update balance if there is a payout

* if balance = O:

* end of program

* else

* ask if the player wants to play a new game

* if the answer is "no" : end of program

* else : showPayoutTable() if user wants to see it

* goto ++

*/

// implement this method!

}

/*************************************************

* Do not modify methods below

/*************************************************

/** testCheckHands() is used to test checkHands() method

* checkHands() should print your current hand type

*/

public void testCheckHands()

{

try {

playerHand = new ArrayList();

// set Royal Flush

playerHand.add(new Card(1,3));

playerHand.add(new Card(10,3));

playerHand.add(new Card(12,3));

playerHand.add(new Card(11,3));

playerHand.add(new Card(13,3));

System.out.println(playerHand);

checkHands();

System.out.println("-----------------------------------");

// set Straight Flush

playerHand.set(0,new Card(9,3));

System.out.println(playerHand);

checkHands();

System.out.println("-----------------------------------");

// set Straight

playerHand.set(4, new Card(8,1));

System.out.println(playerHand);

checkHands();

System.out.println("-----------------------------------");

// set Flush

playerHand.set(4, new Card(5,3));

System.out.println(playerHand);

checkHands();

System.out.println("-----------------------------------");

// "Royal Pair" , "Two Pairs" , "Three of a Kind", "Straight", "Flush ",

// "Full House", "Four of a Kind", "Straight Flush", "Royal Flush" };

// set Four of a Kind

playerHand.clear();

playerHand.add(new Card(8,3));

playerHand.add(new Card(8,0));

playerHand.add(new Card(12,3));

playerHand.add(new Card(8,1));

playerHand.add(new Card(8,2));

System.out.println(playerHand);

checkHands();

System.out.println("-----------------------------------");

// set Three of a Kind

playerHand.set(4, new Card(11,3));

System.out.println(playerHand);

checkHands();

System.out.println("-----------------------------------");

// set Full House

playerHand.set(2, new Card(11,1));

System.out.println(playerHand);

checkHands();

System.out.println("-----------------------------------");

// set Two Pairs

playerHand.set(1, new Card(9,1));

System.out.println(playerHand);

checkHands();

System.out.println("-----------------------------------");

// set Royal Pair

playerHand.set(0, new Card(3,1));

System.out.println(playerHand);

checkHands();

System.out.println("-----------------------------------");

// non Royal Pair

playerHand.set(2, new Card(3,3));

System.out.println(playerHand);

checkHands();

System.out.println("-----------------------------------");

}

catch (Exception e)

{

System.out.println(e.getMessage());

}

}

/* Quick testCheckHands() */

public static void main(String args[])

{

VideoPoker pokergame = new VideoPoker();

pokergame.testCheckHands();

}

}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

PlayPokerGame.java

/*************************************************************************************

*

* This program is used to test PJ3.VideoPoker class

* More info are given in Readme file

*

* PlayPokerGame class allows user to run program as follows:

*

* java PlayPokerGame // default credit is $100

* or java PlayPokerGame NNN // set initial credit to NNN

*

* Do not modify this file!

*

**************************************************************************************/

import PJ3.VideoPoker;

class PlayPokerGame {

public static void main(String args[])

{

VideoPoker pokergame;

if (args.length > 0)

pokergame = new VideoPoker(Integer.parseInt(args[0]));

else

pokergame = new VideoPoker();

pokergame.play();

}

}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------TestCheckHands.java

/*************************************************************************************

*

* This program is used to test PJ3.VideoPoker class

* More info are given in Readme file

*

* Do not modify this file!

*

**************************************************************************************/

import PJ3.VideoPoker;

class TestCheckHands {

public static void main(String args[])

{

PJ3.VideoPoker.main(null);

}

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!