Settaggio variabile

di il
5 risposte

Settaggio variabile

Salve a tutti, sto cercando di creare una classe SudokuBoard in grado di darmi "suggerimenti" per la risoluzione del classico gioco del Sudoku. La classe prima citata a sua volta si appoggia ad un'altra classe chiamata SudokuCell che rappresenta una delle 9 celle 3x3. Nella classe SudokuCell ho creato una variabile intera costituita da due array in modo da poter inserire le coordinate x ed y della cella 3x3, in modo da poterne individuare la posizione, e fin qui nessun problema. Terminata la costruzione di questa classe mi dedico alla costruzione della classe che prende in considerazione tutto il tabellone del Sudoku e quindi nove caselle della Classe SudokuCell e qui sorge il mio problema:

Nella classe SudokuCell ho creato il campo
int [][] pos = new int [3][3];
in modo da poter appunto considerare ogni singola cella delle 9 totali.

Nella classe SudokuBoard invece ho creato il campo
 SudokuCell [][] pos = new SudokuCell [3][3];
così da prendere in considerazione 9 celle 3x3 (l'intero tabellone)
Quello che non riesco a capire è come settare ora la variabile del campo Sudokuboard, dato che mettendo ad esempio pos[x][y] setterei solo una delle tabelle ma io oltre a settare quello dovrei anche settare la posizione della tabella selezionata, mi spiego meglio:

Supponiamo che voglio prendere una delle 9 tabelle, ad esempio quella in alto a sinistra, a sua volta la tabella selezionata si divide in 9 tabelline contenenti i numeri. Come faccio a settare quella posizione?

5 Risposte

  • Re: Settaggio variabile

    Ciao, penso di aver capito cosa vuoi fare, ma se non è così dimmelo.
    Secondo me puoi fare una cosa del genere: nella classe SudokuBoard (cioè l'intero tabellone del sudoku) puoi mettere un metodo
    SudokuCell getCellAt(int x, int y) {...}
    che ti restituisce un oggetto di tipo SudokuCell, cioè una delle tabelle 3x3 di cui è composto il tabellone.
    All'interno della classe SudokuCell puoi mettere dei metodi tipo
    int getValueAt(int x, int y) {...}
    void setValue(int x, int y, int val) {...}
    Quindi poi dovresti essere in grado di fare una cosa del genere:
    SudokuBoard myBoard = new SudokuBorad(...);
    myBoard.getCellAt(0, 0).setValue(0, 0, 1); 
    Con questo codice dovresti aver settato a 1 il valore della casellina in alto a sinistra del tabellone.

  • Re: Settaggio variabile

    Ciao inizio a ringraziarti per la disponibilità, innanzitutto hai centrato in pieno quello che volevo far capire

    Nella classe SudokuCell avevo già creato i metodi GetValue() e SetValue() quindi tutto ok, ma ho un problema nel creare il metodo SudokuCell GetCellAt (int x, int y) {..}
    Come faccio a fargli ritornare una variabile di tipo SudokuCell? Ho provato in questo modo:
    public SudokuCell getCellAt (int x, int y) {
    	 return new SudokuCell[x][y]; 	 
     }
    Ma mi dice che dovrei cambiare SudokuCell con SudokuCell[][], non ho capito come far ritornare una variabile di tipo SudokuCell se devo inserirgl da qualche parte la x e la y
  • Re: Settaggio variabile

    Ciao,
    presumo che tu nella tua SudokuBoard mantenga un array di SudokuCell fatto più o meno come
    SudokuCell[][] myCells = new SudokuCell[3][3];
    In questo modo il tuo tabellone conosce le 9 caselle 3x3. A quel punto la funzione di cui stavamo parlando potrebbe essere
    
    public SudokuCell getCellAt (int x, int y) {
        return myCells[x][y];     
    }
  • Re: Settaggio variabile

    Ok sotto questo punto di vista il problema è risolto, ma quando nel main provo a eseguire mi da un'eccezione

    Exception in thread "main" java.lang.NullPointerException
    at UsoClassi.ProvaSudokuBoard.main(ProvaSudokuBoard.java:10)

    Il programma è cosi scritto (una prova per vedere se funzionava):
    package UsoClassi;
    
    import CreazioneClassi.*;
    
    public class ProvaSudokuBoard {
    	
    	public static void main(String[] args) {
    		
    	SudokuBoard s = new SudokuBoard();
    	s.getCellAt(1,1).setNumero(4,2,2);
    	System.out.println(s);
    		
    	}
    } 
    Qualche idea del motivo?
  • Re: Settaggio variabile

    Nel costruttore di SudokuBoard c'è l'inizializzazione dell'array di SudokuCell? Se mai prova a postarlo. O puoi postare anche tutta la classe della Board.
    O puoi postare tutto quello che vuoi...
Devi accedere o registrarti per scrivere nel forum
5 risposte