Question: - Upload a zip file, including PlayingCard.java and VideoPoker.java, to ilearn - Implement poker game program in package PJ4: Part I (40%) Implement Decks class
- Upload a zip file, including PlayingCard.java and VideoPoker.java, to ilearn
- Implement poker game program in package PJ4: 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. Submit both non-GUI and GUI versions See PJ4/PlayingCard.java and PJ4/VideoPoker.java for more info.
- Use TestVideoPoker.java to test correctness of your program
- Compile programs (you are in directory containing Readme file): javac PJ4/*.java javac TestVideoPoker.java
- Run programs (you are in directory containing Readme file):
// Run tests in PJ4 classes java PJ4.Decks java PJ4.VideoPoker
// Run main test program java TestVideoPoker
****************************************************************************************** - Sample output : java PJ4.Decks
******* Create 1 decks of cards ********
getNumberDecks:1
print deck:[Joker #1, Joker #2, 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]
Size:54 cards
******* Create 2 decks of cards ********
getNumberDecks:2 getJockers:true
************************************************
Loop # 0
Before shuffle:108 cards
[Joker #1, Joker #2, 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, Joker #1, Joker #2, 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:108 cards
[5 Clubs, 10 Hearts, 8 Hearts, J Spades, 6 Hearts, 2 Hearts, 2 Diamonds, K Spades, A Clubs, 2 Spades, 8 Hearts, 9 Hearts, 2 Diamonds, 5 Hearts, 5 Hearts, 3 Hearts, 5 Clubs, J Clubs, 9 Clubs, 3 Diamonds, 8 Clubs, 4 Hearts, Q Diamonds, 8 Clubs, 7 Diamonds, 4 Diamonds, A Spades, K Clubs, Joker #2, 3 Clubs, 3 Clubs, A Hearts, K Diamonds, A Diamonds, 5 Diamonds, 6 Spades, 7 Hearts, Joker #1, 7 Diamonds, K Clubs, 7 Clubs, K Hearts, 10 Diamonds, J Clubs, 2 Clubs, A Spades, 9 Spades, 7 Spades, 3 Spades, 10 Clubs, 5 Diamonds, 10 Spades, 3 Spades, 10 Diamonds, J Hearts, 8 Spades, Q Spades, Q Diamonds, Q Hearts, 10 Hearts, Q Clubs, A Diamonds, Joker #1, 7 Clubs, 7 Hearts, 9 Clubs, K Spades, 10 Clubs, 9 Diamonds, 4 Spades, 9 Diamonds, A Hearts, 6 Clubs, 6 Hearts, 10 Spades, 8 Spades, 6 Spades, 3 Hearts, 9 Hearts, 4 Hearts, K Hearts, A Clubs, 2 Hearts, 2 Spades, 4 Clubs, Joker #2, 4 Diamonds, 8 Diamonds, Q Hearts, 4 Clubs, 6 Diamonds, Q Spades, J Spades, J Diamonds, 7 Spades, 5 Spades, 5 Spades, 2 Clubs, 3 Diamonds, 4 Spades, 9 Spades, K Diamonds, 6 Diamonds, J Hearts, 6 Clubs, Q Clubs, 8 Diamonds, J Diamonds]
Hand 0:27 cards
[A Clubs, 2 Hearts, 2 Spades, 4 Clubs, Joker #2, 4 Diamonds, 8 Diamonds, Q Hearts, 4 Clubs, 6 Diamonds, Q Spades, J Spades, J Diamonds, 7 Spades, 5 Spades, 5 Spades, 2 Clubs, 3 Diamonds, 4 Spades, 9 Spades, K Diamonds, 6 Diamonds, J Hearts, 6 Clubs, Q Clubs, 8 Diamonds, J Diamonds]
Remain:81 cards
[5 Clubs, 10 Hearts, 8 Hearts, J Spades, 6 Hearts, 2 Hearts, 2 Diamonds, K Spades, A Clubs, 2 Spades, 8 Hearts, 9 Hearts, 2 Diamonds, 5 Hearts, 5 Hearts, 3 Hearts, 5 Clubs, J Clubs, 9 Clubs, 3 Diamonds, 8 Clubs, 4 Hearts, Q Diamonds, 8 Clubs, 7 Diamonds, 4 Diamonds, A Spades, K Clubs, Joker #2, 3 Clubs, 3 Clubs, A Hearts, K Diamonds, A Diamonds, 5 Diamonds, 6 Spades, 7 Hearts, Joker #1, 7 Diamonds, K Clubs, 7 Clubs, K Hearts, 10 Diamonds, J Clubs, 2 Clubs, A Spades, 9 Spades, 7 Spades, 3 Spades, 10 Clubs, 5 Diamonds, 10 Spades, 3 Spades, 10 Diamonds, J Hearts, 8 Spades, Q Spades, Q Diamonds, Q Hearts, 10 Hearts, Q Clubs, A Diamonds, Joker #1, 7 Clubs, 7 Hearts, 9 Clubs, K Spades, 10 Clubs, 9 Diamonds, 4 Spades, 9 Diamonds, A Hearts, 6 Clubs, 6 Hearts, 10 Spades, 8 Spades, 6 Spades, 3 Hearts, 9 Hearts, 4 Hearts, K Hearts]
==============================================
After shuffle:81 cards
[2 Diamonds, 5 Diamonds, 8 Spades, 3 Hearts, A Spades, 3 Hearts, 9 Diamonds, K Diamonds, Q Hearts, Q Diamonds, 6 Hearts, 4 Spades, 8 Clubs, A Clubs, Q Spades, 8 Hearts, A Diamonds, K Hearts, 7 Clubs, 6 Hearts, 3 Spades, 4 Hearts, A Hearts, 4 Diamonds, 8 Spades, 10 Clubs, Joker #2, 5 Clubs, 9 Spades, 6 Clubs, 2 Hearts, A Hearts, 9 Hearts, 4 Hearts, A Diamonds, Q Clubs, 8 Hearts, 7 Spades, 9 Clubs, 9 Hearts, 3 Clubs, 2 Spades, 10 Hearts, 10 Spades, 10 Diamonds, 7 Hearts, 10 Diamonds, 7 Diamonds, J Spades, 3 Clubs, 5 Diamonds, 5 Hearts, K Spades, 9 Diamonds, A Spades, 9 Clubs, 3 Spades, 3 Diamonds, Joker #1, 2 Clubs, 8 Clubs, 10 Clubs, 6 Spades, 7 Clubs, 10 Spades, Joker #1, 6 Spades, 2 Diamonds, K Clubs, K Hearts, 10 Hearts, 5 Clubs, K Clubs, K Spades, J Clubs, Q Diamonds, J Clubs, J Hearts, 7 Hearts, 5 Hearts, 7 Diamonds]
Hand 1:27 cards
[A Spades, 9 Clubs, 3 Spades, 3 Diamonds, Joker #1, 2 Clubs, 8 Clubs, 10 Clubs, 6 Spades, 7 Clubs, 10 Spades, Joker #1, 6 Spades, 2 Diamonds, K Clubs, K Hearts, 10 Hearts, 5 Clubs, K Clubs, K Spades, J Clubs, Q Diamonds, J Clubs, J Hearts, 7 Hearts, 5 Hearts, 7 Diamonds]
Remain:54 cards
[2 Diamonds, 5 Diamonds, 8 Spades, 3 Hearts, A Spades, 3 Hearts, 9 Diamonds, K Diamonds, Q Hearts, Q Diamonds, 6 Hearts, 4 Spades, 8 Clubs, A Clubs, Q Spades, 8 Hearts, A Diamonds, K Hearts, 7 Clubs, 6 Hearts, 3 Spades, 4 Hearts, A Hearts, 4 Diamonds, 8 Spades, 10 Clubs, Joker #2, 5 Clubs, 9 Spades, 6 Clubs, 2 Hearts, A Hearts, 9 Hearts, 4 Hearts, A Diamonds, Q Clubs, 8 Hearts, 7 Spades, 9 Clubs, 9 Hearts, 3 Clubs, 2 Spades, 10 Hearts, 10 Spades, 10 Diamonds, 7 Hearts, 10 Diamonds, 7 Diamonds, J Spades, 3 Clubs, 5 Diamonds, 5 Hearts, K Spades, 9 Diamonds]
==============================================
After shuffle:54 cards
[A Hearts, 7 Clubs, 10 Hearts, 2 Hearts, A Diamonds, 7 Spades, 4 Spades, Q Spades, 5 Clubs, 8 Hearts, A Diamonds, 8 Clubs, 9 Diamonds, Q Clubs, 3 Clubs, K Hearts, 9 Hearts, K Spades, K Diamonds, A Clubs, 7 Diamonds, 9 Hearts, J Spades, 8 Spades, 6 Clubs, 10 Spades, Q Hearts, 4 Hearts, 8 Hearts, 4 Hearts, 2 Diamonds, 9 Clubs, 3 Hearts, 8 Spades, 3 Hearts, 3 Clubs, A Hearts, 6 Hearts, A Spades, 4 Diamonds, 5 Diamonds, 3 Spades, 9 Spades, 5 Hearts, 9 Diamonds, 2 Spades, Q Diamonds, 7 Hearts, 5 Diamonds, 10 Diamonds, 10 Diamonds, 6 Hearts, 10 Clubs, Joker #2]
Hand 2:27 cards
[4 Hearts, 8 Hearts, 4 Hearts, 2 Diamonds, 9 Clubs, 3 Hearts, 8 Spades, 3 Hearts, 3 Clubs, A Hearts, 6 Hearts, A Spades, 4 Diamonds, 5 Diamonds, 3 Spades, 9 Spades, 5 Hearts, 9 Diamonds, 2 Spades, Q Diamonds, 7 Hearts, 5 Diamonds, 10 Diamonds, 10 Diamonds, 6 Hearts, 10 Clubs, Joker #2]
Remain:27 cards
[A Hearts, 7 Clubs, 10 Hearts, 2 Hearts, A Diamonds, 7 Spades, 4 Spades, Q Spades, 5 Clubs, 8 Hearts, A Diamonds, 8 Clubs, 9 Diamonds, Q Clubs, 3 Clubs, K Hearts, 9 Hearts, K Spades, K Diamonds, A Clubs, 7 Diamonds, 9 Hearts, J Spades, 8 Spades, 6 Clubs, 10 Spades, Q Hearts]
==============================================
After shuffle:27 cards
[A Hearts, 7 Diamonds, 9 Diamonds, A Diamonds, 8 Hearts, K Spades, 7 Spades, 8 Clubs, 4 Spades, 10 Hearts, 10 Spades, 2 Hearts, 5 Clubs, Q Spades, K Hearts, 9 Hearts, J Spades, K Diamonds, A Clubs, Q Clubs, 6 Clubs, Q Hearts, A Diamonds, 7 Clubs, 9 Hearts, 8 Spades, 3 Clubs]
Hand 3:27 cards
[A Hearts, 7 Diamonds, 9 Diamonds, A Diamonds, 8 Hearts, K Spades, 7 Spades, 8 Clubs, 4 Spades, 10 Hearts, 10 Spades, 2 Hearts, 5 Clubs, Q Spades, K Hearts, 9 Hearts, J Spades, K Diamonds, A Clubs, Q Clubs, 6 Clubs, Q Hearts, A Diamonds, 7 Clubs, 9 Hearts, 8 Spades, 3 Clubs]
Remain:0 cards
[]
==============================================
After shuffle:0 cards
[]
Hand 4:27 cards *** In catch block:PlayingCardException:Error Msg: Not enough cards to deal
************************************************
Loop # 1
Before shuffle:108 cards
[Joker #1, Joker #2, 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, Joker #1, Joker #2, 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:108 cards
[K Hearts, A Hearts, J Clubs, 6 Diamonds, 7 Diamonds, 6 Diamonds, 6 Hearts, 2 Diamonds, J Hearts, Joker #2, 6 Spades, 2 Diamonds, Joker #1, 10 Clubs, J Diamonds, 10 Hearts, 9 Hearts, 5 Hearts, 4 Spades, 3 Diamonds, 5 Clubs, 6 Clubs, 10 Diamonds, 4 Diamonds, 7 Clubs, Joker #1, Q Clubs, 4 Spades, 10 Clubs, 2 Clubs, 7 Spades, 6 Hearts, 5 Spades, 8 Clubs, K Clubs, K Hearts, 4 Hearts, 8 Diamonds, 2 Spades, K Spades, 2 Spades, 8 Spades, 4 Clubs, 4 Clubs, Q Hearts, 5 Diamonds, 2 Hearts, 9 Spades, Joker #2, 7 Diamonds, 9 Hearts, 8 Hearts, 10 Spades, 10 Spades, 3 Hearts, 9 Spades, 3 Spades, J Spades, 8 Clubs, A Diamonds, 7 Spades, 9 Clubs, 5 Spades, A Clubs, K Clubs, J Spades, 8 Spades, 10 Hearts, Q Clubs, Q Hearts, 3 Diamonds, K Diamonds, 3 Spades, Q Spades, 7 Clubs, J Diamonds, A Clubs, J Clubs, A Spades, 9 Clubs, 6 Clubs, 3 Clubs, 3 Hearts, A Diamonds, 9 Diamonds, 8 Diamonds, 7 Hearts, Q Spades, 2 Hearts, 8 Hearts, K Diamonds, A Hearts, 2 Clubs, 6 Spades, 9 Diamonds, 5 Clubs, Q Diamonds, 10 Diamonds, A Spades, 5 Hearts, K Spades, 4 Diamonds, 5 Diamonds, Q Diamonds, 4 Hearts, 3 Clubs, 7 Hearts, J Hearts]
Hand 0:27 cards
[3 Clubs, 3 Hearts, A Diamonds, 9 Diamonds, 8 Diamonds, 7 Hearts, Q Spades, 2 Hearts, 8 Hearts, K Diamonds, A Hearts, 2 Clubs, 6 Spades, 9 Diamonds, 5 Clubs, Q Diamonds, 10 Diamonds, A Spades, 5 Hearts, K Spades, 4 Diamonds, 5 Diamonds, Q Diamonds, 4 Hearts, 3 Clubs, 7 Hearts, J Hearts]
Remain:81 cards
[K Hearts, A Hearts, J Clubs, 6 Diamonds, 7 Diamonds, 6 Diamonds, 6 Hearts, 2 Diamonds, J Hearts, Joker #2, 6 Spades, 2 Diamonds, Joker #1, 10 Clubs, J Diamonds, 10 Hearts, 9 Hearts, 5 Hearts, 4 Spades, 3 Diamonds, 5 Clubs, 6 Clubs, 10 Diamonds, 4 Diamonds, 7 Clubs, Joker #1, Q Clubs, 4 Spades, 10 Clubs, 2 Clubs, 7 Spades, 6 Hearts, 5 Spades, 8 Clubs, K Clubs, K Hearts, 4 Hearts, 8 Diamonds, 2 Spades, K Spades, 2 Spades, 8 Spades, 4 Clubs, 4 Clubs, Q Hearts, 5 Diamonds, 2 Hearts, 9 Spades, Joker #2, 7 Diamonds, 9 Hearts, 8 Hearts, 10 Spades, 10 Spades, 3 Hearts, 9 Spades, 3 Spades, J Spades, 8 Clubs, A Diamonds, 7 Spades, 9 Clubs, 5 Spades, A Clubs, K Clubs, J Spades, 8 Spades, 10 Hearts, Q Clubs, Q Hearts, 3 Diamonds, K Diamonds, 3 Spades, Q Spades, 7 Clubs, J Diamonds, A Clubs, J Clubs, A Spades, 9 Clubs, 6 Clubs]
==============================================
After shuffle:81 cards
[K Hearts, 10 Spades, 4 Clubs, Q Clubs, A Clubs, 3 Spades, 2 Spades, Joker #2, 3 Diamonds, 7 Clubs, 2 Clubs, 9 Spades, 8 Spades, 6 Hearts, Q Hearts, 4 Spades, 10 Clubs, 5 Spades, 8 Spades, 10 Clubs, 5 Hearts, J Clubs, 4 Hearts, 6 Spades, 4 Diamonds, Q Hearts, 2 Diamonds, 9 Hearts, A Hearts, 7 Diamonds, 10 Hearts, 5 Diamonds, K Spades, 4 Spades, 8 Hearts, 7 Spades, A Diamonds, 9 Clubs, 2 Spades, 3 Spades, 10 Hearts, J Hearts, 3 Hearts, K Clubs, 9 Spades, A Spades, Q Clubs, 5 Spades, A Clubs, 8 Clubs, 9 Clubs, 7 Spades, 10 Diamonds, J Spades, Joker #2, 2 Hearts, 7 Diamonds, 9 Hearts, K Diamonds, J Clubs, 6 Clubs, 4 Clubs, Joker #1, 6 Hearts, 10 Spades, J Diamonds, 8 Diamonds, Q Spades, K Clubs, 7 Clubs, 6 Diamonds, 3 Diamonds, J Spades, 5 Clubs, 6 Clubs, J Diamonds, Joker #1, 8 Clubs, K Hearts, 6 Diamonds, 2 Diamonds]
Hand 1:27 cards
[Joker #2, 2 Hearts, 7 Diamonds, 9 Hearts, K Diamonds, J Clubs, 6 Clubs, 4 Clubs, Joker #1, 6 Hearts, 10 Spades, J Diamonds, 8 Diamonds, Q Spades, K Clubs, 7 Clubs, 6 Diamonds, 3 Diamonds, J Spades, 5 Clubs, 6 Clubs, J Diamonds, Joker #1, 8 Clubs, K Hearts, 6 Diamonds, 2 Diamonds]
Remain:54 cards
[K Hearts, 10 Spades, 4 Clubs, Q Clubs, A Clubs, 3 Spades, 2 Spades, Joker #2, 3 Diamonds, 7 Clubs, 2 Clubs, 9 Spades, 8 Spades, 6 Hearts, Q Hearts, 4 Spades, 10 Clubs, 5 Spades, 8 Spades, 10 Clubs, 5 Hearts, J Clubs, 4 Hearts, 6 Spades, 4 Diamonds, Q Hearts, 2 Diamonds, 9 Hearts, A Hearts, 7 Diamonds, 10 Hearts, 5 Diamonds, K Spades, 4 Spades, 8 Hearts, 7 Spades, A Diamonds, 9 Clubs, 2 Spades, 3 Spades, 10 Hearts, J Hearts, 3 Hearts, K Clubs, 9 Spades, A Spades, Q Clubs, 5 Spades, A Clubs, 8 Clubs, 9 Clubs, 7 Spades, 10 Diamonds, J Spades]
==============================================
After shuffle:54 cards
[2 Diamonds, Q Clubs, K Spades, 7 Clubs, A Clubs, 10 Clubs, 3 Hearts, A Clubs, 4 Diamonds, 3 Spades, 8 Hearts, 9 Clubs, K Hearts, 4 Spades, 8 Spades, 8 Clubs, A Diamonds, 5 Hearts, Q Hearts, 4 Clubs, 10 Hearts, Q Hearts, Joker #2, A Spades, 6 Hearts, 5 Diamonds, A Hearts, 10 Spades, K Clubs, 4 Spades, 9 Spades, 6 Spades, 9 Hearts, 8 Spades, 5 Spades, 5 Spades, 2 Clubs, 10 Diamonds, J Clubs, J Spades, 9 Spades, J Hearts, 4 Hearts, 2 Spades, 9 Clubs, 10 Clubs, Q Clubs, 3 Spades, 2 Spades, 10 Hearts, 7 Diamonds, 7 Spades, 7 Spades, 3 Diamonds]
Hand 2:27 cards
[10 Spades, K Clubs, 4 Spades, 9 Spades, 6 Spades, 9 Hearts, 8 Spades, 5 Spades, 5 Spades, 2 Clubs, 10 Diamonds, J Clubs, J Spades, 9 Spades, J Hearts, 4 Hearts, 2 Spades, 9 Clubs, 10 Clubs, Q Clubs, 3 Spades, 2 Spades, 10 Hearts, 7 Diamonds, 7 Spades, 7 Spades, 3 Diamonds]
Remain:27 cards
[2 Diamonds, Q Clubs, K Spades, 7 Clubs, A Clubs, 10 Clubs, 3 Hearts, A Clubs, 4 Diamonds, 3 Spades, 8 Hearts, 9 Clubs, K Hearts, 4 Spades, 8 Spades, 8 Clubs, A Diamonds, 5 Hearts, Q Hearts, 4 Clubs, 10 Hearts, Q Hearts, Joker #2, A Spades, 6 Hearts, 5 Diamonds, A Hearts]
==============================================
After shuffle:27 cards
[6 Hearts, 2 Diamonds, 10 Hearts, 3 Hearts, A Spades, A Diamonds, Joker #2, Q Hearts, 4 Clubs, 5 Hearts, K Spades, 3 Spades, Q Clubs, 9 Clubs, A Hearts, 10 Clubs, A Clubs, 8 Spades, K Hearts, 4 Diamonds, Q Hearts, 8 Hearts, 8 Clubs, A Clubs, 5 Diamonds, 4 Spades, 7 Clubs]
Hand 3:27 cards
[6 Hearts, 2 Diamonds, 10 Hearts, 3 Hearts, A Spades, A Diamonds, Joker #2, Q Hearts, 4 Clubs, 5 Hearts, K Spades, 3 Spades, Q Clubs, 9 Clubs, A Hearts, 10 Clubs, A Clubs, 8 Spades, K Hearts, 4 Diamonds, Q Hearts, 8 Hearts, 8 Clubs, A Clubs, 5 Diamonds, 4 Spades, 7 Clubs]
Remain:0 cards
[]
==============================================
After shuffle:0 cards
[]
Hand 4:27 cards *** In catch block:PlayingCardException:Error Msg: Not enough cards to deal
******************************************************************************************
- Sample output : java PJ4.VideoPoker
**** Test checkHands method ****
[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 Hearts] 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] One Pair! ----------------------------------- [3 Diamonds, 9 Diamonds, 3 Spades, 8 Diamonds, J Spades] One Pair! ----------------------------------- [3 Diamonds, 9 Diamonds, 6 Spades, 8 Diamonds, J Spades] Sorry, you lost! -----------------------------------
******************************************************************************************
$ java TestVideoPoker 1000
=> java TestVideoPoker 1000
Payout Table Multiplier ======================================= Royal Flush | 1000 Straight Flush | 50 Four of a Kind | 25 Full House | 10 Flush | 6 Straight | 5 Three of a Kind | 3 Two Pairs | 2 One Pair | 1
----------------------------------- Balance:$1000 Enter bet:200 Hand:[3 Diamonds, 9 Diamonds, K Clubs, 8 Hearts, J Clubs] Enter positions of cards to replace (e.g. 1 4 5 ): <---- keep all cards Hand:[3 Diamonds, 9 Diamonds, K Clubs, 8 Hearts, J 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 | 1000 Straight Flush | 50 Four of a Kind | 25 Full House | 10 Flush | 6 Straight | 5 Three of a Kind | 3 Two Pairs | 2 One Pair | 1
----------------------------------- Balance:$800 Enter bet:200 Hand:[A Clubs, 2 Clubs, 2 Spades, 4 Hearts, 4 Diamonds] Enter positions of cards to replace (e.g. 1 4 5 ):1 4 5 <--- keep 2 3 Hand:[K Clubs, 2 Clubs, 2 Spades, Q Clubs, K Spades] Two Pairs!
Your balance:$1000, one more game (y or n)?y
Want to see payout table (y or n)n ----------------------------------- Balance:$1000 Enter bet:500 Hand:[6 Clubs, 2 Spades, 5 Spades, J Hearts, 2 Hearts] Enter positions of cards to replace (e.g. 1 4 5 ):1 2 3 4 5 <---- replace all cards Hand:[4 Hearts, 2 Diamonds, 10 Clubs, 7 Hearts, 3 Spades] Sorry, you lost!
Your balance:$500, one more game (y or n)?n
Bye! ------------------------------------- package PJ4;
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 4 * Do not modify this class! */ class Card { /* constant suits and ranks */ static final String[] Suit = {"Clubs", "Diamonds", "Hearts", "Spades","Joker" }; 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-4 (see Suit[] above) */
/* Constructor to create a card */ /* throw PlayingCardException if rank or suit is invalid */ public Card(int rank, int suit) throws PlayingCardException {
// suit=4 is joker, rank must be 1 or 2 if (suit==4) { if ((rank <1) || (rank >2)) throw new PlayingCardException("Invalid rank for Joker:"+rank); cardRank=rank; cardSuit=4; } else {
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() { if (cardSuit == 4) return Suit[cardSuit]+" #"+cardRank; else 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(2,4); // Joker #2 System.out.println(c1); c1 = new Card(10,4); // 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 track of original n*52 or n*54 cards */ private List
/* this starts with copying cards from trackingDecks */ /* it is used to play the card game */ /* see reset(): resets playingDecks to trackingDecks */ private List
/* number of decks in this object */ private int numberDecks; private boolean jokers; // with or without jockers
/** * default constructor: creates one deck of 54 playing cards (with jokers) * in trackingDecks and copy them to playingDecks. * initialize numberDecks=1 * Note: You need to catch PlayingCardException from Card constructor * Use ArrayList for both trackingDecks & playingDecks */ public Decks() { // implement this method! }
/** * Constructor: Creates n decks (54 or 52 cards each deck - with or without Jokers) * of playing cards in trackingDecks and copy them to playingDecks. * initialize numberDecks=n * Note: You need to catch PlayingCardException from Card constructor * Use ArrayList for both trackingDecks & playingDecks */ public Decks(int n, boolean jokers) { // implement this method! }
/** * Task: Shuffles cards in playingDecks. * Hint: Look at java.until.Collections */ public void shuffle() { // implement this method! }
/** * Task: Deals cards from the playingDecks. * * @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 playingDecks * */ public List
/** * Task: Resets playingDecks by getting all cards from the trackingDecks. */ public void reset() { // implement this method!
}
/** * Task: Return number of decks. */ public int getNumberDecks() { return numberDecks; }
/** * Task: Return jokers. */ public boolean getJockers() { return jokers; }
/** * Task: Return number of remaining cards in playingDecks. */ public int remainSize() { return playingDecks.size(); }
/** * Task: Returns a string representing cards in the playingDecks */ public String toString() { return ""+playingDecks; }
/* Quick test */ /* */ /* Do not modify these tests: */ /* Generate 1 deck with default constructor */ /* Generate 2 decks of 54 cards */ /* Loop 2 times: */ /* Deal 27 cards for 5 times */ /* Expect exception 5th time */ /* reset() */
public static void main(String args[]) {
System.out.println("******* Create 1 decks of cards ******** "); Decks decks = new Decks(); System.out.println("getNumberDecks:" + decks.getNumberDecks()); System.out.println(" print deck:" + decks); System.out.println(" Size:"+decks.remainSize()+" cards");
System.out.println(" ******* Create 2 decks of cards ******** "); decks = new Decks(2, true); System.out.println("getNumberDecks:" + decks.getNumberDecks()); System.out.println("getJockers:" + decks.getJockers()); 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 = 5; int cardsPerHand = 27;
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(); } }
} ---------------------------------------------------- package PJ4; 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. One Pair: one pair of the same card * 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,10,25,50,1000}; private static final String[] goodHandTypes={ "One 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 gameDeck;
// holding current poker 5-card hand, balance, bet private List
/** default constructor, set balance = startingBalance */ public VideoPoker() { this(startingBalance); }
/** constructor, set given balance */ public VideoPoker(int balance) { this.playerBalance= balance; gameDeck = new Decks(1, false); }
/** 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 new 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 replace * 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() { System.out.println("**** Test checkHands method **** "); 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,2)); 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 One Pair playerHand.set(0, new Card(3,1)); System.out.println(playerHand); checkHands(); System.out.println("-----------------------------------");
// set One Pair playerHand.set(2, new Card(3,3)); System.out.println(playerHand); checkHands(); System.out.println("-----------------------------------");
// set no Pair playerHand.set(2, new Card(6,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(); } }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
