Battleshipjava package part3 public class Battleship public

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 sunk

Solution

CODE:   


/*write a for loop to iterate through the rows*/
for(int i=0;i<row;i++){
/*write a for loop to iterate through the columns*/
for(int j=0;j<column;j++){
/*if grid[column][row] is \'X\'*/
if(grid[column][row]==\'X\'){
/* print \" \"+grid[column][row] (use System.out.print)*/
System.out.print(\"Element is \" + grid[column][row]);
}
else{

/*else print \" \"+WATER_CHAR (use System.out.print)*/
System.out.print(\"element is\" + WATER_CHAR);
}
}
System.out.println(\" \");
}


/*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): \");

// read in the first integer to an integer called userCol
// read in the second integer to an integer called userRow

int userCol=sc.nextInt();
int userRow=sc.nextInt();

/* Check if column and row are with in the range of the board
Check if (userRow & userCol is less than 0) or (userRow & userCol is greater than or equal to gridRows),
use print() method to reveal location of ships
return false to end game */

if (userRow > 0 || userRow <= Row || userCol > 0 || userCol <= Col){
   BattelshipGrid.print(userRow,userCol);
}
else{
return false;
}

// Check if grid[userCol][userRow] intersects with a ship,   
// set value at userCol, userRow to \'X\'

if(grid[userCol][userRow]==grid[col][row]){
Sysem.out.print(\"User ship intersects the location of ship \'X\' \");
grid[userCol][userRow]=\'X\';
}
return true;

Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10 rows. BattleshipGrid aG
Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10 rows. BattleshipGrid aG
Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10 rows. BattleshipGrid aG
Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10 rows. BattleshipGrid aG
Battleship.java package part3; public class Battleship { public static void main(String[] args) { // Generate a grid of 15 columns by 10 rows. BattleshipGrid aG

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site