send EDITED code please Battleshipjava package part3 public
send EDITED code please
Battleship.java
package part3;
public class Battleship {
public static void main(String[] args) {
// Generate a grid of 15 columns by 10 rows.
BattleshipGrid aGrid = new BattleshipGrid(10,10);
// Print the grid.
aGrid.print();
}
}
Battleship Grid.java
package part3;
import java.util.Random;
 import java.util.Scanner;
public class BattleshipGrid {
    private char[][] grid;
    private int gridRows, gridColumns;
   
    static final int CARRIER_SIZE = 5;
    static final int BATTLESHIP_SIZE = 4;
    static final int SUB_SIZE = 3;
    static final int DESTROYER_SIZE = 3;
    static final int PATROL_SIZE = 2;
   
    static final char CARRIER_CHAR = \'C\';
    static final char BATTLESHIP_CHAR = \'B\';
    static final char SUB_CHAR = \'S\';
    static final char DESTROYER_CHAR = \'D\';
    static final char PATROL_CHAR = \'P\';
    static final char WATER_CHAR = \'.\';
   
    public BattleshipGrid(int columns, int rows){
        gridColumns = columns;
        gridRows = rows;
       
        // Make a two dimensional array of characters as the grid
        grid = new char[gridColumns][gridRows];
       
        // Clear the grid
        clear();
       
        // Assign the following ships
        assignShip(CARRIER_CHAR, CARRIER_SIZE);
        assignShip(BATTLESHIP_CHAR, BATTLESHIP_SIZE);
        assignShip(SUB_CHAR, SUB_SIZE);
        assignShip(DESTROYER_CHAR, DESTROYER_SIZE);
        assignShip(PATROL_CHAR, PATROL_SIZE);
    }
   
    // Clear the grid
    public void clear(){
        for (int row=0; row < gridRows; row++){
            for (int column=0; column < gridColumns; column++) grid[column][row] = WATER_CHAR;
        }
    }
   
    // Print the grid
    public void print(){
        for (int row=0; row < gridRows; row++){
            for (int column=0; column < gridColumns; column++) System.out.print(grid[column][row]);
            System.out.println(\"\");
        }
    }
   
    // Assign a ship horizontally on the grid
    private boolean assignShipHorizontally(char shipType, int size){
       
        /*
        1.2   If horizontal, select a random row to place the ship.
        o   Select a random column position to start “growingâ€? your ship. The column position must be less than 10-size of the ship to ensure the ship will fit.
        o   Look at the next adjacent squares on the grid row to see if they are blank.
        o   If any of the squares are not blank then the ship will not fit so go back to 1.1.
        o   If the ship does fit then mark it with its designation.
        */
       
        // Select a row and a starting column to place a ship horizontally
        Random randomGenerator = new Random();
        int chosenRow = randomGenerator.nextInt(gridRows);
        int startingColumn = randomGenerator.nextInt(gridColumns-size);
       
        // Count consecutive grid locations horizontally and see if we can accommodate ship
        int countSegments = 0;
        for (int c = startingColumn; c < startingColumn+size; c++){
            if (grid[c][chosenRow] == WATER_CHAR) countSegments++;
        }
       
        // If ship will fit then allocate the ship horizontally
        if (countSegments == size){
            for (int c = startingColumn; c < startingColumn+size; c++){
                grid[c][chosenRow] = shipType;
            }          
            return true;
        }
       return false;
    }
   
    // Assign the ship vertically on the grid
    private boolean assignShipVertically(char shipType, int size){
        /*
        1.3   If vertical, select a random column to place the ship.
        o   Select a random row position to start “growingâ€? your ship. The row position must be less than 10-size of the ship to ensure the ship will fit.
        o   Look at the next adjacent squares on the grid column to see if they are blank.
        o   If any of the squares are not blank then the ship will not fit so go back to 1.1.
        o   If the ship does fit then mark it with its designation.
        */
       
        // Select a column and a starting row to place a ship vertically
        Random randomGenerator = new Random();
        int chosenColumn = randomGenerator.nextInt(gridColumns);
        int startingRow = randomGenerator.nextInt(gridRows-size);
       
        // Count consecutive grid locations vertically and see if we can accommodate ship
        int countSegments = 0;
        for (int r = startingRow; r < startingRow+size; r++){
            if (grid[chosenColumn][r] == WATER_CHAR) countSegments++;
        }
       
        // If ship will fit then allocate the ship vertically
        if (countSegments == size){
            for (int r = startingRow; r < startingRow+size; r++){
                grid[chosenColumn][r] = shipType;
            }          
            return true;
        }
       return false;
    }
   
    // Assign a ship to the grid
    private void assignShip(char shipType, int size){
       
        Random randomGenerator = new Random();
       
        boolean status = false;
        do{
            // Randomly choose between horizontal and vertical allocation.
            // Sometimes an allocation isnÊ»t possible so roll the dice and try again.
            if (randomGenerator.nextInt(2) == 0)
                status = assignShipHorizontally(shipType, size);
            else
                status = assignShipVertically(shipType, size);
        } while(status != true);
       
    }
   
    public boolean playGame(){
        // Print the board
        // 1) write a for loop to iterate through the rows
        for (){
            // 2) write a for loop to iterate through the columns
            for (){
                // 3) if grid[column][row] is \'X\'
                if(){
                    // 4) print \" \"+grid[column][row] (use System.out.print)
                } else{
                    // 5) else print \" \"+WATER_CHAR (use System.out.print)
                }
            }
            System.out.println(\"\");
        }
       
        // Ask user for coordinate
        // 6) Create a Scanner called sc instantiate it using new Scanner(System.in)
       // Ask user to enter a coordinate
        System.out.print(\"Enter a coordinate (col,row): \");
       // 7) read in the first integer to an integer called userCol
        // 8) read in the second integer to an integer called userRow
       
        // Check if column and row are with in the range of the board
        // 9) Check if (userRow is less than 0) or (userRow is greater than or equal to gridRows),
        if(){
            // 10) use print() method to reveal location of ships
            // 11) return false to end game
        }
        // 12) Check if (userCol is less than 0) or (userCol is greater than or equal to gridColumns),
        if(){
            // 13) use print() method to reveal location of ships
            // 14) return false to end game
        }
       
        // 15) Check if grid[userCol][userRow] intersects with a ship,
        if(){
            // 16) set value at userCol, userRow to \'X\'
        }
       
        // return true to continue playing the game
        return true;
    }
}
Part 3: Modify Battleship Map Creator For this part, you will write a playGame() method that will print the board, ask a user for a coordinate, check if a ship is at this coordinate and mark an X for hit. If a coordinate entered is outside the range of the board, show the ships and end the game. In BattelshipGrid.java: » Locate the playGame() method in the BattelshipGrid.java file · write the code for steps 1-16 In Battelship.java: At line 11, comment out aGrid.print(); At line 12, add the following while loop. o while(aGrid.playGame()); » » Please note You can only have spaces between coordinates when you input them. Otherwise an exception will be thrown » » If you sink all the ships, the game will not end o For extra practice, add code that will end the game when all ships are sunkSolution
package part3;
public class Battleship {
public static void main(String[] args) {
// Generate a grid of 15 columns by 10 rows.
BattleshipGrid aGrid = new BattleshipGrid(10,10);
// Print the grid.
//       aGrid.print();
     while(aGird.playGame());
    }
}
package part3;
import java.util.Random;
 import java.util.Scanner;
public class BattleshipGrid {
    private char[][] grid;
    private int gridRows, gridColumns;
 
    static final int CARRIER_SIZE = 5;
    static final int BATTLESHIP_SIZE = 4;
    static final int SUB_SIZE = 3;
    static final int DESTROYER_SIZE = 3;
    static final int PATROL_SIZE = 2;
 
    static final char CARRIER_CHAR = \'C\';
    static final char BATTLESHIP_CHAR = \'B\';
    static final char SUB_CHAR = \'S\';
    static final char DESTROYER_CHAR = \'D\';
    static final char PATROL_CHAR = \'P\';
    static final char WATER_CHAR = \'.\';
 
    public BattleshipGrid(int columns, int rows){
        gridColumns = columns;
        gridRows = rows;
     
        // Make a two dimensional array of characters as the grid
        grid = new char[gridColumns][gridRows];
     
        // Clear the grid
        clear();
     
        // Assign the following ships
        assignShip(CARRIER_CHAR, CARRIER_SIZE);
        assignShip(BATTLESHIP_CHAR, BATTLESHIP_SIZE);
        assignShip(SUB_CHAR, SUB_SIZE);
        assignShip(DESTROYER_CHAR, DESTROYER_SIZE);
        assignShip(PATROL_CHAR, PATROL_SIZE);
    }
 
    // Clear the grid
    public void clear(){
        for (int row=0; row < gridRows; row++){
            for (int column=0; column < gridColumns; column++) grid[column][row] = WATER_CHAR;
        }
    }
 
    // Print the grid
    public void print(){
        for (int row=0; row < gridRows; row++){
            for (int column=0; column < gridColumns; column++) System.out.print(grid[column][row]);
            System.out.println(\"\");
        }
    }
 
    // Assign a ship horizontally on the grid
    private boolean assignShipHorizontally(char shipType, int size){
     
        /*
        1.2   If horizontal, select a random row to place the ship.
        o   Select a random column position to start “growingâ€? your ship. The column position must be less than 10-size of the ship to ensure the ship will fit.
        o   Look at the next adjacent squares on the grid row to see if they are blank.
        o   If any of the squares are not blank then the ship will not fit so go back to 1.1.
        o   If the ship does fit then mark it with its designation.
        */
     
        // Select a row and a starting column to place a ship horizontally
        Random randomGenerator = new Random();
        int chosenRow = randomGenerator.nextInt(gridRows);
        int startingColumn = randomGenerator.nextInt(gridColumns-size);
     
        // Count consecutive grid locations horizontally and see if we can accommodate ship
        int countSegments = 0;
        for (int c = startingColumn; c < startingColumn+size; c++){
            if (grid[c][chosenRow] == WATER_CHAR) countSegments++;
        }
     
        // If ship will fit then allocate the ship horizontally
        if (countSegments == size){
            for (int c = startingColumn; c < startingColumn+size; c++){
                grid[c][chosenRow] = shipType;
            }        
            return true;
        }
       return false;
    }
 
    // Assign the ship vertically on the grid
    private boolean assignShipVertically(char shipType, int size){
        /*
        1.3   If vertical, select a random column to place the ship.
        o   Select a random row position to start “growingâ€? your ship. The row position must be less than 10-size of the ship to ensure the ship will fit.
        o   Look at the next adjacent squares on the grid column to see if they are blank.
        o   If any of the squares are not blank then the ship will not fit so go back to 1.1.
        o   If the ship does fit then mark it with its designation.
        */
     
        // Select a column and a starting row to place a ship vertically
        Random randomGenerator = new Random();
        int chosenColumn = randomGenerator.nextInt(gridColumns);
        int startingRow = randomGenerator.nextInt(gridRows-size);
     
        // Count consecutive grid locations vertically and see if we can accommodate ship
        int countSegments = 0;
        for (int r = startingRow; r < startingRow+size; r++){
            if (grid[chosenColumn][r] == WATER_CHAR) countSegments++;
        }
     
        // If ship will fit then allocate the ship vertically
        if (countSegments == size){
            for (int r = startingRow; r < startingRow+size; r++){
                grid[chosenColumn][r] = shipType;
            }        
            return true;
        }
       return false;
    }
 
    // Assign a ship to the grid
    private void assignShip(char shipType, int size){
     
        Random randomGenerator = new Random();
     
        boolean status = false;
        do{
            // Randomly choose between horizontal and vertical allocation.
            // Sometimes an allocation isnÊ»t possible so roll the dice and try again.
            if (randomGenerator.nextInt(2) == 0)
                status = assignShipHorizontally(shipType, size);
            else
                status = assignShipVertically(shipType, size);
        } while(status != true);
     
    }
 
    public boolean playGame(){
        // Print the board
        // 1) write a for loop to iterate through the rows
        for (int row=0;row<gridRows;row++){
            // 2) write a for loop to iterate through the columns
            for (int column=0;column<gridColumns;column++){
                // 3) if grid[column][row] is \'X\'
                if(grid[column][row]=\'X\'){
                    // 4) print \" \"+grid[column][row] (use System.out.print)
                    System.out.print(\" \"+grid[column][row]);
                } else{
                    // 5) else print \" \"+WATER_CHAR (use System.out.print)
                    System.out.print(\" \"+WATER_CHAR);
                }
            }
            System.out.println(\"\");
        }
     
        // Ask user for coordinate
        // 6) Create a Scanner called sc instantiate it using new Scanner(System.in)
         Scanner sc = new Scanner(system.in);
        // Ask user to enter a coordinate
        System.out.print(\"Enter a coordinate (col,row): \");
       // 7) read in the first integer to an integer called userCol
        int userCol = sc.nextInt();
        // 8) read in the second integer to an integer called userRow
       int userRow = sc.nextInt();
        // Check if column and row are with in the range of the board
        // 9) Check if (userRow is less than 0) or (userRow is greater than or equal to gridRows),
        if(userRow<0 || userRow>=gridRows){
            // 10) use print() method to reveal location of ships
            print();
            // 11) return false to end game
            return false;
        }
        // 12) Check if (userCol is less than 0) or (userCol is greater than or equal to gridColumns),
        if(userCol<0 || userCol>=gridColumns){
            // 13) use print() method to reveal location of ships
            print();
            // 14) return false to end game
            return false;
        }
     
        // 15) Check if grid[userCol][userRow] intersects with a ship,
        if(grd[userCol][userRow]=\'C\' || grid[userCol][userRow]=\'B\' || grid[userCol][userRow]=\'S\' || grid[userCol][userRow]=\'D\' || grid[userCol][userRow]=\'P\'){
            // 16) set value at userCol, userRow to \'X\'
            grid[userCol][userRow]=\'X\';
        }
     
        // return true to continue playing the game
        return true;
    }
}
![send EDITED code please Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10 send EDITED code please Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10](/WebImages/22/send-edited-code-please-battleshipjava-package-part3-public-1052180-1761548285-0.webp)
![send EDITED code please Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10 send EDITED code please Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10](/WebImages/22/send-edited-code-please-battleshipjava-package-part3-public-1052180-1761548285-1.webp)
![send EDITED code please Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10 send EDITED code please Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10](/WebImages/22/send-edited-code-please-battleshipjava-package-part3-public-1052180-1761548285-2.webp)
![send EDITED code please Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10 send EDITED code please Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10](/WebImages/22/send-edited-code-please-battleshipjava-package-part3-public-1052180-1761548285-3.webp)
![send EDITED code please Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10 send EDITED code please Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10](/WebImages/22/send-edited-code-please-battleshipjava-package-part3-public-1052180-1761548285-4.webp)
![send EDITED code please Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10 send EDITED code please Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10](/WebImages/22/send-edited-code-please-battleshipjava-package-part3-public-1052180-1761548285-5.webp)
![send EDITED code please Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10 send EDITED code please Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10](/WebImages/22/send-edited-code-please-battleshipjava-package-part3-public-1052180-1761548285-6.webp)
![send EDITED code please Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10 send EDITED code please Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10](/WebImages/22/send-edited-code-please-battleshipjava-package-part3-public-1052180-1761548285-7.webp)
