### Problem Description

You are to design and implement a class to play a game called Unique Six. In this game, the player will roll a die to obtain a number from 1 to 6 and continue rolling until all six unique numbers have been generated. If a number is rolled that has appeared before, then the number is discarded until all the six required numbers are obtained. Your program will check and test if each of these numbers has appeared only once. You may also need minor modifications to the existing class(es) as you progress from Part 1 to Part 3.

### Part 1

You need to create three classes, class Die, class Player and class TestSixNumbers. class Die has the ability to roll the die and produce a new random face value. class Player creates an instance of class Die and then checks if the numbers 1, 2, 3, 4, 5 and 6, appear only once. It stops rolling the die once a set of six unique numbers from 1 to 6 has been obtained.

class TestSixNumbers creates an instance of class Player and it plays the game. class TestSixNumbers also reports the result to the user and the number of times the die has been rolled.

Some sample outputs are shown following.

Number rolled: 1
So far, you have: 1
Number rolled: 4
So far, you have: 1 4
Number rolled: 3
So far, you have: 1 3 4
Number rolled: 1
So far, you have: 1 3 4
Number rolled: 5
So far, you have: 1 3 4 5
Number rolled: 6
So far, you have: 1 3 4 5 6
Number rolled: 3
So far, you have: 1 3 4 5 6
Number rolled: 2
Congratulations, you have taken 8 rolls to get one of each number between 1 and 6.

### Part 2

You need two other classes, class DisplaySixNumbersPanel and class SixNumbersPanel to create a GUI as shown below.

The class SixNumbersPanel has 6 textfields of 3 characters to display each of the six numbers (when the number is rolled the first time), a label for instructions, a button to roll the die and a textfield of 3 characters to display the current face value of the die and a text area to display the number of rolls taken to obtain 6 unique numbers from 1 to 6. This class also creates an object of class Player that checks and reports in the text field, each time a unique number is rolled.

The code for class DisplaySixNumbersPanel is given. See image.

Some sample inputs and outputs for Part 2 are shown following.

BEFORE button click See image.

AFTER button click See image.

AFTER second button click See image.

Continue rolling the die until all six numbers are obtained

AFTER numerous button clicks and finally, See image.

### Part 3

You are encouraged to enhance the basic product in Part 2 by allowing 2 players to play the Unique Six game. Each player alternately rolls a die and the game is over when one of the players obtains a set of six unique numbers from 1 to 6; report who the winner is and the total number of rolls taken to win the game. You may consider having a “New Game” button to play another game. If you make any modifications to class SixNumbersPanel, rename it as class SixNumbersPanel2.