Create a Python program that allows the user to input coordi
Create a Python program that allows the user to input coordinates onto a 5x5 2D list in order to
locate and destroy a hidden enemy ship. Make a game board similar to the one below:
A B C D E
1 - - - - -
2 - - - - -
3 - - - - -
4 - - - - -
5 - - - - -
The game begins with a blank board. Randomly
create
the location of a 2x2 enemy ship
but do not display it on the board (Hint:
create a list that stores the location of the upper
left
corner of the ship,
you can calculates the
location of the rest of the ship from that).
The user fires a shot by specifying the row (1
-
5) and column (A
-
E) values. Check to
make sure that the input is a valid entry, within the bounds of the
list
, and that it is not a
location that has already been
chosen. If the shot hits the ship then display a ‘*’ symbol
in that location to designate a ‘hit’. If the shot does not hit the ship, then display an ‘x’ in
that location to designate a ‘miss’.
When the user has hit all four spots that the ship
occupi
es
then the user has won. Reset
the board and re
-
randomize the ship so that the user can play again. Give the user the
option to give up, which reveal
s
the location of the enemy ship. Once the user has seen
the solution, you
should
reset the game.
Cre
ate the following functions at the top of your program:
1.
displayBoard
–
display the board with row and column headings.
2.
resetBoard
–
clear the board and reset position of ship [(0
-
3),(0
-
3)].
3.
displayMenu
–
display the menu.
4.
getMenuInput
–
get the menu inpu
t, return the valid input.
5.
getRow/getColumn
–
get the row/col input, return valid input (0
-
4).
6.
fireShot
–
using the user’s input, and ship location, place an x or * on the board.
Check all user inputs for validity.
Do not create global variables, instead,
pass the
lists
and other
v
ariables to functions as needed, return values back to where they were calle
Solution
import java.util.Scanner; public class assignment17 { static Scanner in = new Scanner(System.in); public static void main(String[] args) { System.out.println(\" A B C D E\"); System.out.println(\" 1 - - - - -\"); System.out.println(\" 2 - - - - -\"); System.out.println(\" 3 - - - - -\"); System.out.println(\" 4 - - - - -\"); System.out.println(\" 5 - - - - -\"); final int ROWS = 6; final int COLS = 6; char [] [] values = { {\' \', \'A\', \'B\', \'C\', \'D\', \'E\'}, {\'1\', \'-\', \'-\', \'-\', \'-\', \'-\'}, {\'2\',\'-\', \'-\', \'-\', \'-\', \'-\'}, {\'3\',\'-\', \'-\', \'-\', \'-\', \'-\'}, {\'4\',\'-\', \'-\', \'-\', \'-\', \'-\'}, {\'5\',\'-\', \'-\', \'-\', \'-\', \'-\'}}; for (int row = 0; row < ROWS; row++) { for (int col = 0; col < COLS; col++) { System.out.print(\" \" + values[row][col]); } System.out.println(\"\ \"); } final int shipROW = 2; final int shipCOL = 2; int [] [] shipValues = new int [(int)Math.random() * values.length][(int)Math.random() * values[0].length]; System.out.println(\"Enter a Row Number: \"); int guessRow = in.nextInt(); System.out.println(\"Enter a Column Letter: \"); int guessColumn = in.nextInt(); //I am having problem with this if statement if ([guessRow][guessColumn] = shipValues){ values [guessRow][guessColumn] = \'*\'; System.out.println(\"hit\"); for (int row = 0; row < ROWS; row++) { for (int col = 0; col < COLS; col++) { System.out.print(\" \" + values[row][col]); } System.out.println(\"\ \"); } }else{ values [guessRow][guessColumn] = \'x\'; System.out.println(\"miss\"); for (int row = 0; row < ROWS; row++) { for (int col = 0; col < COLS; col++) { System.out.print(\" \" + values[row][col]); } System.out.println(\"\ \"); } } } }

