You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.5 KiB
86 lines
2.5 KiB
// 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);
|
|
}
|
|
}
|
|
}
|