BooleanGrid
La classe BooleanGrid
rappresenta l’astrazione di una griglia composta da celle quadrate. Ogni cella della griglia può essere accesa (true
) o spenta (false
).
ROWS
e COLS
Il numero di righe e il numero di colonne della griglia sono definite da due costanti intere ROWS
(8
) e COLS
(10
).
La classe BooleanGrid
adatta automaticamente la propria rappresentazione grafica (dimensioni e centratura) in base ai parametri seguenti:
windowWidth
: la larghezza della finestra in cui è contenutawindowHeight
: l’altezza della finestra in cui è contenutaminMargin
: il margine minimo richiesto (su tutti i lati)Dati questi tre parametri, la griglia sarà sempre:
windowWidth
e windowHeight
minMargin
Le dimensioni della finestra e il margine sono fornite al costruttore personalizzato:
public BooleanGrid(int windowWidth, int windowHeight, int minMargin)
Le dimensioni della finestra e il margine possono anche essere aggiornate tramite il metodo center
che adatta la rappresentazione grafica della griglia:
public void center(int windowWidth, int windowHeight, int minMargin)
La posizione attuale e le dimensioni attuali della griglia (calcolate automaticamente) sono accessibili (read only) tramite i metodi seguenti:
public int getX()
public int getY()
public int getWidth()
public int getHeight()
Anche la dimensione della rappresentazione di ogni cella della griglia è calcolata automaticamente in base alle dimensioni del contenitore e al margine. La dimensione attuale di una cella è accessibile tramite il metodo:
public int getCellSize()
Il metodo paint
serve a disegnare la griglia. Le celle accese sono rappresentate da un quadrato NERO pieno, quelle spente da un quadrato NERO riempito di BIANCO:
public void paint(Graphics g)
ad esempio:
Inoltre la classe deve esportare i seguenti metodi utili per ricavare l’indice della riga o della colonna che contiene una coordinata fornita.
public int getColAt(int x)
Ritorna l’indice della colonna che contiene la coordinata orizzontale specificata da x
. Se la coordinata si trova all’esterno della dimensione orizzontale della griglia, ritorna -1
.
public int getRowAt(int y)
Ritorna l’indice della riga che contiene la coordinata verticale specificata da y
. Se la coordinata si trova all’esterno della dimensione verticale della griglia, ritorna -1
.
È anche possibile leggere o modificare lo stato di una cella della griglia tramite i metodi:
public boolean getValueAt(int x, int y)
Ritorna lo stato (true
: accesa; false
: spenta) della cella che contiene il punto specificato dai parametri x
e y
. Se la coordinata fornita si trova al di fuori della griglia, ritorna false
.
public void toggleValueAt(int x, int y)
Il metodo toggleValueAt
inverte lo stato della cella che contiene la coordinata fornita tramite x
e y
. Se la coordinata è valida, lo stato della cella che contiene il punto descritto da x
e y
viene negato, altrimenti il metodo non fa niente.
Iconizr
La classe Iconizr
utilizza un’istanza di BooleanGrid
per realizzare le funzionalità descritte in seguito.
Iconizr
ha una semplice interfaccia grafica che rappresenta una griglia (BooleanGrid
) su sfondo ROSSO. Ovviamente la griglia si adatta automaticamente alle dimensioni della finestra. Il margine applicato è di 50px
ed è conservato in una costante della classe Iconizr
.
È possibile accendere e spegnere ogni cella della griglia cliccandola con il tasto sinistro del mouse.