ITP3914 Programming Assignment 201819
Assignment Due Date and Time
8 December 2019 Sun 11:55 p.m.
Instructions to Students
1. Thisassignmentisweighted40oftheoverallContinuousAssessmentofthis module.
2. Thisassignmentisanindividualassignmentandshouldbedonebyyouonly. Plagiarism will be treated seriously. Any submitted assignment is found that involved wholly or partly in plagiarism no matter the assignments are from the original authors or from the plagiarists will be scored Zero mark and the students involved will be received discipline penalty set by the institute accordingly.
3. OnlyJavaprogramminglanguageisallowedtodevelopanyrequiredprogram.
4. Yourprogramsmustbewellstructured.Acommentshouldbeincludedineach class and method to state its main function. Explanation of each variable is also required. The source code must be properly indented. The first few lines in a source file must be a comment stating the name of the source file, your name, class, student number as well as the description of the purposes of the program. Marks will be deducted if any of the above mentioned comment is not included.
5. Gradingofyourprogramswillbebasedoncorrectness,quality,style,efficiency and the advanced features.
6. Youarerequiredtohandinasoftcopyoftheprogramsourcecodesuploaded to Moodle.
7. Remembertobackupallyourprograms.
8. LatesubmissionwillNOTbeaccepted.
Page 1
ITP3914 Programming Assignment 201819
Assignment Specification
You are asked to write a Battleship game in Java.
Information on the Battleship Game
The game is played on four grids, two for each player. The grids are typically squareusually 1010and the individual squares in the grid are identified by letter and number. On one grid the player arranges ships and records the shots by the opponent. On the other grid the player records their own shots.
Before play begins, each player secretly arranges their ships on their primary grid. Each ship occupies a number of consecutive squares on the grid, arranged either horizontally or vertically. The number of squares for each ship is determined by the type of the ship. The ships cannot overlap i.e., only one ship can occupy any given square in the grid. The types and numbers of ships allowed are the same for each player. These may vary depending on the rules.
There are five kinds of ships in this game:
No.
Class of ship
Size
1
Carrier
5
2
Battleship
4
3
Destroyer
3
4
Submarine
3
5
Patrol Boat
2
Page 2
ITP3914 Programming Assignment 201819
Requirements of the Assignment
Game Flow
The Battleship game will be run in console mode. For simplicity, we only use two grids, one for Player1 to set the ships, and the other one is the hidden grid for Player2 to guess the position of the ships which are set by Player1.
For Player1, she can be a human to set the ships manually or can be a CPU to set the ships randomly.
So, at the beginning, you need to choose Player1 should be a human or CPU. If Player1 is Human, then Player1 will start to set the battle ships:
Battleship Player1 0Human, 1CPU, xExit: 0
0 1 2 3 4 5 6 7 8 9 X
0 .
1 .
2 .
3 .
4 .
5 .
6 .
7 .
8 .. ..
9 .
Y
Player1: Set the ship: Carrier, ship size: 5 Orientation 0horizontal, 1vertical, xExit: 0 Position of Carrier XY: 21
0 1 2 3 4 5 6 7 8 9 X
0 .
1 ..SSSSS
2 .
3 .
4 .
5 .
6 .
7 .
8 .
9 .
Y
Set the ship: Battleship, ship size: 4
Orientation 0horizontal, 1vertical, xExit:
Page 3
ITP3914 Programming Assignment 201819
After Player1 to set all five battle ships, you need to clear the screen and then let Player2 start to guess the positions of five battle ships:
Set the ship: Patrol Boat, ship size: 2
Orientation 0horizontal, 1vertical, xExit: 0
Position of Patrol Boat XY: 68
0 1 2 3 4 5 6 7 8 9 X
0 .
1 ..SSSSS 2. . S.
3 ..S.
4 ..S.
5 ..SSSS.
6 ..S.
7 ..S.
8 ..SSS..
9 .
Y
Press Enter for Player2 to start
Clear screen with 100 System.out.println;
0 1 2 3 4 5 6 7 8 9 X
0 .
1 .
2 .
3 .
4 .
5 .
6 .
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit:00
Missed.
Launched:1, Hit: 0
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .
2 .
3 .
4 .
5 .
6 .
Page 4
ITP3914 Programming
Assignment 201819
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit:11
Missed.
Launched:2, Hit: 0
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o..
2 .
3 .
4 .
5 .
6 .
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit:21
Its a hit!!
Launched:3, Hit: 1
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o.
2 .
3 .
4 .
5 .
6 .
7 .
8 .. ..
9 .
Y
Player2: Set your missile XY, xExit:22 Its a hit!!
Launched:4, Hit: 2
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o. 2. . .
3 .
4 .
Page 5
ITP3914 Programming
Assignment 201819
5 .
6 .
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit:
Error Control
For the input 0 or 1, your program should detect the following input errors:
Battleship Player1 0Human, 1CPU, xExit: abc
Please input 0 or 1, xExit :123
Please input 0 or 1, xExit :9
Please input 0 or 1, xExit :
For the input XY, your program should detect the following input errors:
Player2: Set your missile XY, xExit:abc
Error in XY! Please input again, xExit: 123
Error in XY! Please input again, xExit: a
Error in XY! Please input again, xExit: 1
Error in XY! Please input again, xExit:
Player1 cannot set a ship over the boundary:
0 1 2 3 4 5 6 7 8 9 X
0 .
1 .
2 .
3 .
4 .
5 .
6 .
7 .
8 .
9 .
Y
Player1: Set the ship: Carrier, ship size: 5
Orientation 0horizontal, 1vertical, xExit: 1
Position of Carrier XY, xExit : 06
The ships cannot be over the boundary!
Position of Carrier XY, xExit :
Page 6
ITP3914 Programming Assignment 201819
Player1 cannot set a ship to overlap other ships:
0 1 2 3 4 5 6 7 8 9 X
0 . 1. S SSSS.
2 .
3 .
4 .
5 .
6 .
7 .
8 .
9 .
Y
Player1: Set the ship: Battleship, ship size: 4
Orientation 0horizontal, 1vertical, xExit: 0
Position of Battleship XY: 51
The ships cannot overlap!
Position of Battleship XY:
Player2 cannot fire on a repeated postion:
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o.
2
3 .
4 .
5 .
6 .
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit : 22
You have already fired this area.
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o.
2 3.
4 .
5 .
6 .
7 .
8 .
9 .
Page 7
ITP3914 Programming Assignment 201819
Y
Player2: Set your missile XY, xExit :
xExit
Your program MUST use following method to handle the xExit :
private static void xExitString x
if x.length1x.charAt0x
System.exit0;
End Game
When all ships have been hit, the game will be end:
Player2: Set your missile XY, xExit:78
Its a hit!!
Launched:22, Hit: 17
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o
2
3
4
5 ..o 6..o o..
7
8 .
9 .
Y
You have hit all battleships!
Page 8
ITP3914 Programming Assignment 201819
Testing
You can ease the testing by using input redirection rather than inputting data manually. Prepare a text file, in the folder that contains your class file, which includes all user inputs in a game run. The following data.txt is an example.
abc 9
0 bb 8
0 ab abc
21 1 22 0 35 1 56 0 68 abc a
00
11
21
22
23
24
25
26
31
41
51
61
35
36
45
Page 9
ITP3914 Programming
Assignment 201819
55
65
56
57
58
68
78
Then open a command prompt window and change to the folder that contains your class file. Type the command
java Assignmentdata.txt
Or you can use CopyPaste the above test case under the command prompt.
You can get the result automatically without the input data echoed.
Battleship Game
Battleship Player1 0Human, 1CPU, xExit: abc
9
0 bb 8 0 ab abc
60
21
1
22
0
25
35
1
56
0
68
abc
a
00
11
21
22
22
23
24
25
26
31
Page 10
ITP3914 Programming
Assignment 201819
41
51
61
35
36
45
55
65
56
57
58
68
78
Please input 0 or 1, xExit : Please input 0 or 1, xExit : Please input 0 or 1, xExit :
0 1 2 3 4 5 6 7 8 9 X
0 .
1 .
2 .
3 .
4 . 5.
6 .
7 .
8 .
9 .
Y
Player1: Set the ship: Carrier, ship size: 5
Orientation 0horizontal, 1vertical, xExit: Please input 0 or 1, xExit : Please input 0 or 1, xExit : Position of Carrier XY, xExit : Error in XY! Please input again, xExit : Error in XY! Please input again, xExit: Error in XY! Please input again, xExit: The ships cannot be over the boundary!
Position of Carrier XY, xExit :
0 1 2 3 4 5 6 7 8 9 X
0 .
1 ..SSSSS
2 .
3 .
4 .
5 .
6 .
7 .
8 .
9 .
Y
Player1: Set the ship: Battleship, ship size: 4
Page 11
ITP3914 Programming Assignment 201819
Orientation 0horizontal, 1vertical, xExit: Position of Battleship XY, xExit :
0 1 2 3 4 5 6 7 8 9 X
0 .
1 ..SSSSS
2 ..S.
3 ..S.
4 ..S.
5 ..S.
6 .
7 .
8 .
9.
Y
Player1: Set the ship: Destroyer, ship size: 3
Orientation 0horizontal, 1vertical, xExit: Position of Destroyer XY, xExit : The ships cannot overlap!
Position of Destroyer XY, xExit :
0 1 2 3 4 5 6 7 8 9 X
0 .
1 ..SSSSS
2 ..S.
3 ..S.
4 ..S.
5 ..SSSS.
6 .
7 .
8 .. ..
9 .
Y
Player1: Set the ship: Submarine, ship size: 3
Orientation 0horizontal, 1vertical, xExit: Position of Submarine XY, xExit :
0 1 2 3 4 5 6 7 8 9 X
0 .
1 ..SSSSS
2 ..S.
3 ..S.
4 ..S.
5 ..SSSS.
6 ..S.
7 ..S.
8 ..S.
9 .
Y
Player1: Set the ship: Patrol Boat, ship size: 2
Page 12
ITP3914 Programming Assignment 201819
Orientation 0horizontal, 1vertical, xExit: Position of Patrol
Boat XY, xExit :
0 1 2 3 4 5 6 7 8 9 X
0 .
1 .. SSSSS
2 ..S.
3 ..S.
4 ..S.
5 ..SSSS.
6 ..S.
7 ..S.
8 ..SSS..
9 .
Y
Press Enter for Player2 to start
100 System.out.println
0 1 2 3 4 5 6 7 8 9 X
0 .
1 .
2 .
3 .
4 .
5 .
6 .
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit : Error in XY! Please input again, xExit: Error in XY! Please input again, xExit: Missed. Launched:1, Hit: 0
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .
2 .
3 .
4 .
5 .
6 . 7.. ..
8 .
9 .
Y
Page 13
ITP3914 Programming Assignment 201819
Player2: Set your missile XY, xExit : Missed.
Launched:2, Hit: 0
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o..
2 .
3 .
4 .
5 .
6 .
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit : Its a hit!!
Launched:3, Hit: 1
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o.
2 .
3 .
4 .
5 .
6 .
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit : Its a hit!!
Launched:4, Hit: 2
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o.
2
3 .
4 .
5 .
6 .
7 .
8 .
9 .. ..
Y
Page 14
ITP3914 Programming Assignment 201819
Player2: Set your missile XY, xExit : You have already fired this area.
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o.
2
3 .
4 .
5 .
6 .
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit : Its a hit!!
Launched:5, Hit: 3
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o.
2
3
4 .
5 .
6 . 7.. ..
8 .
9 .
Y
Player2: Set your missile XY, xExit : Its a hit!!
Launched:6, Hit: 4
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o. 2. . .
3
4
5 .
6 .
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit : Its a hit!!
Page 15
ITP3914 Programming Assignment 201819
Launched:7, Hit: 5
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o.
2
3
4
5
6 .
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit : Missed.
Launched:8, Hit: 5
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o.
2 .. .
3
4
5
6 ..o.
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit : Its a hit!!
Launched:9, Hit: 6
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o
2
3
4
5
6 ..o.
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit : Its a hit!!
Launched:10, Hit: 7
Page 16
ITP3914 Programming Assignment 201819
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o..
2
3
4
5
6 ..o.
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit : Its a hit!!
Launched:11, Hit: 8
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o.
2 3.. .
4
5
6 ..o.
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit : Its a hit!!
Launched:12, Hit: 9
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o
2
3
4
5
6 ..o.
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit : Its a hit!!
Launched:13, Hit: 10
Page 17
ITP3914 Programming Assignment 201819
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o 2. . .
3
4
5 ..
6 ..o.
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit : Missed.
Launched:14, Hit: 10
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o
2
3
4
5 ..
6 ..oo
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit : Its a hit!!
Launched:15, Hit: 11
0 1 2 3 4 5 6 7 8 9 X
0 o 1.o.. .
2
3
4
5 .
6 ..oo
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit : Its a hit!!
Launched:16, Hit: 12
0 1 2 3 4 5 6 7 8 9 X
Page 18
ITP3914 Programming
Assignment 201819
0 o
1 .o
2
3
4
5
6 ..oo
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit : Missed.
Launched:17, Hit: 12
0 1 2 3 4 5 6 7 8 9 X
0 o. ..
1 .o
2
3
4
5 ..o
6 ..oo
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit : Its a hit!!
Launched:18, Hit: 13
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o
2
3 4. . .
5 ..o
6 ..oo..
7 .
8 .
9 .
Y
Player2: Set your missile XY, xExit : Its a hit!!
Launched:19, Hit: 14
0 1 2 3 4 5 6 7 8 9 X
Page 19
ITP3914 Programming
Assignment 201819
0 o 1 .o 2 3 4 5 ..o 6 ..oo.. 7 8 .. .. 9 .
Y
Player2: Set your missile XY, xExit : Its a hit!!
Launched:20, Hit: 15
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o
2
3
4
5 ..o
6 ..oo..
7
8
9 .
Y
Player2: Set your missile XY, xExit : Its a hit!!
Launched:21, Hit: 16
0 1 2 3 4 5 6 7 8 9 X
0 o
1 .o
2
3
4
5 ..o
6 ..oo.. 7. . .
8 ..
9 .
Y
Player2: Set your missile XY, xExit : Its a hit!!
Launched:22, Hit: 17
0 1 2 3 4 5 6 7 8 9 X
0 o
Page 20
ITP3914 Programming
Assignment 201819
1. o
2
3
4
5 ..o
6 ..oo..
7
8 .
9 .
Y
You have hit all battleships!
Example codes for WRONG Scanner usage
create new Scanner objects in loop
do
Scanner scnew Scanner System.in;
choicesc.nextInt;
while choice ! 1;
You are NOT allowed to use GUI such as JOptionPane in your program.
Following is an example program to use a Global Scanner to do the input.
import java.util.Scanner;
public class Test
Global declaration for Scanner
public static Scanner scnew ScannerSystem.in;
public static void mainString args
int x;
System.out.printEnter x:;
xsc.nextInt;
public static void method2
int y;
System.out.printEnter y:;
ysc.nextInt;
Page 21
ITP3914 Programming Assignment 201819
Marking Scheme
Functions
Correctly display the game board 10 Player1 can manually set the ships 10 Player1 can automatically set the ships 10 Player2 can set the bomb on the game board 5 Correctlyshowtheresultofbombhitormiss 5 Error Checking
Input Error 10 Player1 set an overlap position 5 Player1 set a ship over the boundary 5 Player2 hit on a repeated position 5
Correctly show the statistics of the game 10 Game finishes appropriately 5
Style 10 Documentation Comments 10
Deduction
Cannot pass the Java compiler 100
Do not follow the requirements in Requirements of the Assignment 30
Cannot do the Test Case in the Testing 30
More than one Scanner objects in your codes 20 Do not use Scanner as the one and only one input method in your codes 50 Cannot perform a demonstration to your lecturer 50
Page 22
Reviews
There are no reviews yet.