// Carrier = 5 // Battleship = 4 // Cruiser = 3 // Submarine = 3 // Pilot = 2 public class Battleship{ public static final int X = 0; public static final int Y = 0; private int[][] playerBoard; private int[][] computerBoardDisplay; private int[][] computerBoardHidden; private static int playerHits; private static int ComputerHits; public Battleship(int x, int y){ this.playerBoard = new int[x][y]; this.computerBoardDisplay = new int[x][y]; this.computerBoardHidden = new int[x][y]; } public int[][] getComputerBoardHidden(){ return this.computerBoardHidden; } public int[][] getComputerBoardDisplay(){ return this.computerBoardDisplay; } public int[][] getPlayerBoard(){ return this.playerBoard; } public static void randomizingBoard(int[][] board){ int[] boundTL = {0,0}; int[] boundBR = {board[0].length, board.length}; int length; int[] lengths = { 2, 3, 3, 4, 5}; boolean placed; Ship[] ships = new Ship[5]; ships[0] = Ship.randomShip(boundTL,boundBR,lengths[0],true); for (int i = 1; i < 5; i++){ length = lengths[i]; placed = false; while (!placed){ Ship cur_ship = Ship.randomShip(boundTL,boundBR,length,i%2 == 0); boolean intersects = false; int rot = 0; int[] stationary = cur_ship.getStart().clone(); while ((rot < 4) && !placed) { // ensures ship doesn't intect with any that were previously placed for (int j = 0; j < i + 1; j++){ intersects = cur_ship.isIntersecting(ships[j]); if (intersects){ cur_ship.rotate(stationary,1); rot += 1; break; } } // ensures ship is still in bounds after rotation if (!cur_ship.isInside(boundTL,boundBR)) { cur_ship.rotate(stationary,1); rot += 1; } // nothing wrong with ship placement? place it! else if (!intersects){ ships[i] = cur_ship; placed = true; } } } } // we done, place those puppys on for real. for (int i = 0; i < 5; i++){ ships[i].placeOnBoard(board); } } }