Allora in primis io non farei ricorsione, poi se è richiesto dalla consegna è un altro discorso.
Tre classi
Field
Matrix
Main e metodo main
La classe Field ti ho già detto come modellarla.
Classe Matrix
Main -- che potresti metterlo anche sotto Matrixcodice:public class Matrix { private Field[][] campo; private int counter; private Matrix (int m, int n){ inizializzi la matrice e gli oggetti contenuti counter=0; } public void createMyField(){ //inizializzi con punti di interesse randomici } public int scanAndPutTower(){ for (int i=0; i<n; i++){ for (int j=0; j<n; j++){ if (campo[i][j].isInteresting() && !(campo[i][j].isAlreadyChecked())){ campo[i][j].setTower(true); counter++; //poi controllo i vicini stando attento ai bordi //per semplicità ed per fretta evito questa parte tu ovviamente lo terrai in conto if(isCheckedField(campo[i][j+1]) break; if(isCheckedField(campo[i+1][j]) break; if(isCheckedField(campo[i-1][j]) break; if(isCheckedField(campo[i][j-1]) break; //quest'ultima si potrebbe anche evitare visto che è il tuo verso di lettura } } } return counter; } private boolean isCheckedField(int k, int w){ if(campo[k][w].isInteresting() && !(campo[k][w].isTower()) && !(campo[k][w].isAlreadyChecked())){ campo[k][w].setAlreadyChecked(true); return true; } return false; } }
codice:public class Main { public static void main(String[] args){ Matrix matrix=new Matrix(4,4); matrix.createMyField(); int towers=matrix.scanAndPutTower(); System.out.println("Torri: "+towers); }
Ho scritto di getto questo codice nei momenti di pausa del lavoro sicuramente è da affinare.
Per il resto son qua.
Ciao![]()

Rispondi quotando
