Consegna :
Inserire il codice che disegna un esagono reiterato in una struttura a nido d’ape.
Codice:
Classe Tela
package esagoni;
import java.awt.*;
import javax.swing.*;
public class Tela extends JPanel{
public void paintComponent(Graphics g)
{
//serve a disegnare nella finestra
super.paintComponent(g);
//viene impostato il colore dello sfondo
this.setBackground(Color.WHITE);
//viene impostato il colore di g, quindi il colore con cui appariranno
//i disegni fatti utilizzando g
g.setColor(Color.BLACK);
//inizializziamo i due vettori x e y. il vettore x contiene le ascisse dei sei punti
//dell'esagono, mentre il vettore y contiene le ordinate dei punti. l'esagono
//ha 6 punti quindi i vettori hanno 6 elementi.
int x[] = new int[6];
int y[] = new int[6];
//i vettori vengono riempiti con le coordinate dei punti
vettoreX1(x);
vettoreY(y);
//
for (int i = 0; i<10; i++){
//vengono disegnati 10 esagoni distanti 40 orizzontalmente
for (int a = 0; a < 10; a++){
esagoniX(x,y,g);
}
//il punto da cui si parte a disegnare si sposta verso il basso di 10
cambioY(x,y,g);
//si riempie il vettore x con altre coordinate quindi il punto da cui si
//inizia a disegnare si sposta di 10 in orizzontale, per evitare che
//gli esagoni si sovrappongano
vettoreX2(x);
//vengono disegnati altri 10 esagoni
for (int a = 0; a < 10; a++){
esagoniX(x,y,g);
}
//il punto da cui si parte a disegnare si sposta verso il basso di 10
cambioY(x,y,g);
//viene riutilizzato il primo vettore, con le coordinate x uguali a
//quelle della prima riga
vettoreX1(x);
}
}
public int[] vettoreX1 (int x[]){
x[0] = -40;
x[1] = x[0]+10;
x[2] = x[1]+10;
x[3] = x[2]+10;
x[4] = x[2];
x[5] = x[1];
return x;
}
public int[] vettoreX2(int x[]){
x[0] = -20;
x[1] = x[0]+10;
x[2] = x[1]+10;
x[3] = x[2]+10;
x[4] = x[2];
x[5] = x[1];
return x;
}
public int[] vettoreY (int y[]){
y[0] = 10;
y[1] = y[0]+10;
y[2] = y[1];
y[3] = y[0];
y[4] = y[0]-10;
y[5] = y[4];
return y;
}
public void esagoniX (int x[], int y[], Graphics g){
for (int i = 0; i < x.length; i++){
x[i] = x[i]+40;
}
//x = vettore che contiene 6 coordinate orizzontali
//y = vettore che contiene 6 coordinate verticali
//6 = numero dei punti
g.drawPolygon(x, y, 6);
}
public void cambioY (int x[], int y[], Graphics g){
for (int i = 0; i < y.length; i++){
y[i] = y[i]+10;
}
}
}
Classe Esagoni
package esagoni;
//importare java swing serve a poter usare i componenti che contiene, per
//esempio jframe
import javax.swing.*;
public class Esagoni {
public static void main(String[] args) {
//serve a cambiare la scritta in alto a sinistra
JFrame t = new JFrame("Esagoni");
//setDefaultCloseOperation() contiene tra parentesi l'operazione
//che il programma esegue quando viene cliccata la x in alto a destra
//la scritta tra parentesi indica che quando viene cliccata
//la x, l'operazione di default
//è chiudere la finestra
t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//l'altra classe si chiama Tela, quindi viene creato un nuovo oggetto Tela
Tela p = new Tela();
//t è il JFrame, a cui viene aggiunto l'oggetto p(tela)
t.add(p);
//dimensioni della tela(la finestra che viene aperta quando si esegue
//il programma)
t.setSize(1000, 1000);
//prima è stata solo creata, e ora è resa visibile
t.setVisible(true);
}
}
Procedimento:
Dopo aver creato un nuovo progetto chiamato disegno, abbiamo creato due classi. Quella con il main è Esagoni, mentre l’altra è Tela.
Per disegnare gli esagoni con la struttura a nido d’ape bisogna disegnare degli esagoni. E’ possibile farlo in due modi:
•g.drawPolygon(obj Polygon)
•g.drawPolygon(x[], y[], i)
Il primo metodo permette di disegnare un poligono mettendo tra parentesi l’oggetto poligono, mentre il secondo permette di farlo con due array di interi e un numero intero. Il vettore x contiene le coordinate x dei punti e quello y le coordinate y dei punti, mentre i è il numero di punti del poligono, cioè dei vertici.
Nella struttura a nido d’ape ci sono tanti esagoni di fila disposti in più righe, quindi bisogna disegnare degli esagoni uguali, nella stessa riga, disposti a una certa distanza orizzontale.
Dopo che si è disegnata la prima riga, si fa la stessa cosa per la seconda, ma in questo caso la coordinata x del primo punto dell’esagono non è la stessa di quella del primo punto del primo esagono della riga sotto, quindi bisogna partire da un punto x diverso. Nella terza riga, invece, la coordinata x del primo punto del primo esagono è uguale a quella del primo punto del primo esagono della prima riga, quindi le coordinate x dei punti sono uguali ogni due righe.