Buenas, estoy haciendo un ejercicio de clase en el que tengo que hacer el juego de hundir la flota, estoy en el punto en el que la maquina coloca los barcos y me esta petando todo el rato, creo que es porque se me sale del array, pero el programa me peta en lo que es un intento de prueba para que si se va a salir del array no lo haga y vuelva a elegir otra posicion.
Os dejo todo el codigo, dejo asteriscos donde me salta el erro, gracias
public class cpu {
int fila;
int columna;
int direccion;
int filas;
int columnas;
int[][] tableroCpu;
int[][] tableroJugador;
public void inicializar() {
System.out.println("***Bienvenido***");
System.out.println("");
do {
filas = Teclado.pideEntero("Selecciona las filas con las que quieres jugar (Minimo 10)");
columnas = Teclado.pideEnteroPositivo("Selecciona las columnas con las que quieres jugar (Minimo10)");
} while (filas < 10 && columnas < 10);
tableroCpu = new int[filas][columnas];
tableroJugador = new int[filas][columnas];
for (int x = 0; x < filas; x++) {
for (int i = 0; i < columnas; i++) {
tableroCpu[x][i] = 0;
tableroJugador[x][i] = 0;
}
}
System.out.println(" FIN INICIALIZAR");
}
public void barcos() {
System.out.println("Colocando barcos...");
//BARCO 4 CASILLAS
do {
int fila = (int) (Math.random() * filas);
int columna = (int) (Math.random() * columnas);
direccion = (int) (Math.random() * 4);
switch (direccion) {
case 0:
***** if (tableroCpu[fila + 3][columna] <= tableroCpu.length - 1) {
if (tableroCpu[fila][columna] == 0 & tableroCpu[fila + 1][columna] == 0 & tableroCpu[fila + 2][columna] == 0 & tableroCpu[fila + 3][columna] == 0) {
tableroCpu[fila][columna] = 1;
tableroCpu[fila + 1][columna] = 1;
tableroCpu[fila + 2][columna] = 1;
tableroCpu[fila + 3][columna] = 1;
}
}
break;
case 1:
****** if (tableroCpu[fila][columna + 3] <= tableroCpu.length - 1) {
if (tableroCpu[fila][columna] == 0 & tableroCpu[fila][columna + 1] == 0 & tableroCpu[fila][columna + 2] == 0 & tableroCpu[fila][columna + 3] == 0) {
tableroCpu[fila][columna] = 1;
tableroCpu[fila][columna + 1] = 1;
tableroCpu[fila][columna + 2] = 1;
tableroCpu[fila][columna + 3] = 1;
}
}
break;
case 2:
****** if (tableroCpu[fila - 3][columna] <= tableroCpu.length - 1) {
if (tableroCpu[fila][columna] == 0 & tableroCpu[fila - 1][columna] == 0 & tableroCpu[fila - 2][columna] == 0 & tableroCpu[fila - 3][columna] == 0) {
tableroCpu[fila][columna] = 1;
tableroCpu[fila - 1][columna] = 1;
tableroCpu[fila - 2][columna] = 1;
tableroCpu[fila - 3][columna] = 1;
}
}
case 3:
***** if (tableroCpu[fila][columna - 3] <= tableroCpu.length - 1) {
if (tableroCpu[fila][columna] == 0 & tableroCpu[fila][columna - 1] == 0 & tableroCpu[fila + 2][columna - 2] == 0 & tableroCpu[fila][columna - 3] == 0) {
tableroCpu[fila][columna] = 1;
tableroCpu[fila][columna - 1] = 1;
tableroCpu[fila][columna - 2] = 1;
tableroCpu[fila][columna - 3] = 1;
}
}
}
} while (tableroCpu[fila][columna] == 0);
System.out.println("Colocado barco de 4");
}
}