As a game begins the snark hides at a random grid point. At each step of the hunt the hunter takes a shot by indicating a grid point expressed as an x and y coordinate. The origin (0, 0) is in the bottom left hand corner of the grid. For a grid of size 10 the top right hand corner is (9, 9). If the grid point of the hunter’s shot is the same as the snark’s hiding place the snark is dead and the game is over and the hunter wins. The hunter has 5 shots to kill the snark. If the hunter fails to shoot the snark in 5 shots or gives up before all 5 shots have been used the game ends and the snark wins. After each unsuccessful shot the hunter is told where the snark is relative to the shot using compass directions as follows:
Higher y coordinate
Lower y coordinate
Higher x coordinate
Lower x coordinate
There is a console dump of a short but typical run of the application in the file called dump.txt. In this dump two games are played. In the first game the snark is shot dead which is a score for the hunter. In the second game the hunter gives up before 5 tries which is a score for the snark. In the dump the position of the snark is indicated by an “S”. This is just for testing and to make the dump clear. Obviously the final version of the application would suppress this indicator of the snark’s position. The position of the shot is indicated with an “*” and a successful shot by an “X”. Although your application is not required to reproduce the dump format exactly it should produce all the features of the dump.
The following points give more details:
1. At the start of the application (before the first game) the application’s title is displayed followed by some brief instructions on how to play a game.
2. At the start of each game an empty grid is displayed before the coordinates of the first shot of the game are prompted for.
3. The Snark is randomly located somewhere within the swamp at the start of each game.
4. In each game the hunter has five shots. The number of shots remaining at any time is displayed.
5. A successful hit should produce an appropriate message and end the current game and increment the hunter’s score.
6. An unsuccessful shot should produce hints as to the relative compass position of the shot and the snark.
7. An unsuccessful fifth shot should end the current game and increment the snark’s score.
8. A user response of -1 before or at the fifth shot should end the current game and increment the snark’s score.
9. If the player chooses to play another game at any stage all relevant game variables should be reset and a new game played. There is no need to print the application title and brief game instructions for games other than the first game.
10. If the player chooses not to play another game at any stage the scores of both the hunter and the snark accumulated over the current run of the application should be displayed along with a goodbye message.
Part 1: Program Design
As a first task read the whole assignment specification and draw a class diagram for each of the required classes. This helps develop an application’s design before plunging into the complexities of coding.
Part 2: Writing the Hunter and snark classes Class
You can write individual classes for the Snark and the Hunter classes or write a single class called Player that is used to instantiate a snark Player instance and a hunter Player instance. (........)You should also include a toString() method.
You must write a test driver to test your Snark class. Test its attributes and methods as appropriate.
Part 3: Writing the Swamp Class
Randomly positioning its snark at the start of each game
Setting the location of its hunter’s shot at each step of a game
Determining if its snark has been hit
Reporting on the relative position of its hunter’s shot and its snark
Displaying its grid
Part 4: Writing the Game Class
Write the Game class to implement all the basic program logic in its main method.