codice:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Bat2Nav {
private static int navi = 10;
private int[][] campoDaGioco;
// creo una nuova matrice delle dimensioni specificate
Bat2Nav(int righe, int colonne) {
campoDaGioco = new int[righe][colonne];
}
// creo una nuova matrice a partire da un array bidimensionale passato in
// input
Bat2Nav(int[][] campoDaGioco) {
this.campoDaGioco = campoDaGioco;
}
public int getRighe() {
return campoDaGioco.length;
}
public int getColonne() {
return campoDaGioco[0].length;
}
public static int ColpoRiga() throws Exception {
System.out.println("Inserire la riga del campo da gioco (da 1 a 10 ) ");
BufferedReader tastiera = new BufferedReader(new InputStreamReader(System.in));
// System.out.println("Inserire la riga del campo da gioco (da 1 a 10 ) ");
int ColpoRiga = Integer.parseInt(tastiera.readLine());
return ColpoRiga;
}
public static int ColpoColonna() throws Exception {
System.out.println("Inserire la colonna del campo da gioco (da 1 a 10 ) ");
BufferedReader tasto = new BufferedReader(new InputStreamReader(System.in));
// System.out.println("Inserire la colonna del campo da gioco (da 1 a 10 ) ");
int ColpoColonna = Integer.parseInt(tasto.readLine());
return ColpoColonna;
}
public void setColpo(int ColpoRiga, int ColpoColonna) throws Exception {
int indiceRiga= ColpoRiga-1;
int indiceColonna= ColpoColonna-1;
if (ColpoRiga >= 0 & ColpoRiga <= getRighe() & ColpoColonna >= 0 & ColpoColonna <= getColonne()) {
if (campoDaGioco[indiceRiga][indiceColonna] == 0) {
System.out.println("Acqua, non ci sono navi in questa casella!");
} else {
// Setto la casella in cui è presente la nave colpita uguale a 2
campoDaGioco[indiceRiga][indiceColonna] = 2;
//verifico se nelle righe o colonne adiacenti ci sono navi già colpite (2) in maniera tale //da poter dire con il seguente controllo se la nave è anche affondata
try{
{if (campoDaGioco[indiceRiga-1][indiceColonna-1] == 2||campoDaGioco[indiceRiga-1][indiceColonna+1] == 2||campoDaGioco[indiceRiga+1][indiceColonna-1] == 2||campoDaGioco[indiceRiga+1][indiceColonna+1] == 2){
System.out.println("Colpita e affondata!");
// decremento il numero di navi
--navi;
}
}}catch(IndexOutOfBoundsException e){
System.out.println("Colpita!Ma non mi hai affondata!");
//System.out.println("riscontrata eccezione");
}
// System.out.println("Colpita!Ma non mi hai affondata!");
}
} else {
System.out.println("inserimento impossibile: indici errati");
}
}
@SuppressWarnings("static-access")
public static void main(String[] args) throws Exception {
Bat2Nav A = new Bat2Nav(new int[][] {
{ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0 },
{ 1,1, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 1, 0, 1, 1,0, 0, 0 },
{ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 1, 1, 0, 0, 0, 1, 1, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 },
{ 0, 0, 1, 1, 0, 0, 0, 0, 1, 1 } });
for(;;){
if( navi > 0){
int riga = A.ColpoRiga();
int colonna = A.ColpoColonna();
A.setColpo(riga, colonna);
} else {
System.out.println("Complimenti, hai affondato tutte le mie navi!YOU WIN!!!");
break;
}
}
}
}
ps:il try/catch è corretto?