Devo sviluppare il famoso gioco campo minato senza alcuna grafica.
L'eserzio che devo fare mi fa sviluppare man mano i metodi che mi servono per poter alla fine simulare una partita.
Ho crato una classe CampoMinato.java descritta di seguito:
il problema che ho riscontrato fin ora è che non riesco ad implementare il metodo getCelleScoperte() perchè mi restituisce sempre 0. Ed ovviamente anche il metodo che segue mi restituisce un numero sbagliato.codice:public class CampoMinato { private int[][] matr; // matrice che rappresenta il campo private int righe; // numero delle righe private int colonne; // numero delle colonne private int mine; // numero delle mine private int celleScoperte; // numero delle cellescoperte private static final int NONSC = -1; // si puo' scegliere un qualunque valore k<0 private static final int MINA = -2; private static char NONSC_CHAR = '-'; // carattere per rappresentare una cella non scoperta private static char MINA_CHAR = '*'; // carattere per rappresentare una cella con mina public CampoMinato(int r, int c){ matr = new int[r][c]; for(int i=0;i<matr.length;i++) for(int j=0;j<matr.length;j++) matr[i][j] = NONSC; righe = r; colonne = c; } public CampoMinato(int dim){ this(dim,dim); } public int getRighe(){ return righe; } public int getColonne(){ return colonne; } public int getMine(){ return mine; } public int getCelleScoperte(){ for(int i=0;i<righe;i++){ for(int j=0;j<colonne;j++){ if(matr[i][j] == NONSC_CHAR) celleScoperte++; } } return celleScoperte; } public int getCelleDaScoprire(){ int celleDaScoprire = (righe * colonne) - getCelleScoperte(); return celleDaScoprire; } public static void setMinaChar(char ch){ MINA_CHAR = ch; } public static void setNonscChar(char ch){ NONSC_CHAR = ch; } private void stampa(char cMina){ MINA_CHAR = cMina; //prima riga System.out.print(" "); for (int i=0; i<colonne; i++) { System.out.printf("%3d", i); } System.out.println(); //righe successive for (int j=0; j<matr.length; j++) { System.out.printf("%2d", j); for (int g=0; g<matr[0].length; g++) { if (matr[j][g] == MINA){ System.out.printf(" %2c", MINA_CHAR); } else { System.out.printf(" %2c", NONSC_CHAR); } } System.out.println(); } } public void stampaSenzaMine(){ stampa(NONSC_CHAR); } public void stampaTutto(){ stampa(MINA_CHAR); } public boolean inCampo(int r, int c){ if(r<=this.righe && c<=this.colonne) return true; return false; } public void mettiMina(int r, int c){ if((r<=this.righe && c<=this.colonne) && (MINA_CHAR == '*')){ matr[r][c] = MINA; mine++; } } public boolean contieneMina(int r, int c){ if((r<=this.righe && c<=this.colonne) && (matr[r][c] == MINA)) return true; return false; } }
Dove sbaglio?
Questa è la stampa del campo anche se nn si vede bene cmq è allineata
codice:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 * - - - - - - * - * - - - - - 1 - - - * * - - * - * - - - - * 2 - - - - - * - - - * - * - - - 3 - - - - - * - - - - - - - - - 4 * * * - - - - * - * - - - * - 5 * - * - - - - * - - - - * - - 6 * * * - - - * * * * - - - - - 7 - - - - - - - - - - - - - - * 8 - * - * - * - - - * - - - - - 9 * - - - - - - - - - - * - - - 10 - - * - * - - * - - - - - - * 11 - - - - - - - - - * - - - - -

Rispondi quotando