Logo ITP-NEWS
RSS | Contatti | Login|Registrati| Home
giornali
Creare una scacchiera con il linguaggio Processing
Di Fusco Francesco::2012-04-19
Creare una scacchiera nel linguaggio di programmazione Processing non risulta difficile, anzi è abbastanza banale.

La prima cosa da fare è calcolare la dimensione di ogni casella, dividendo la dimensione della scacchiera per il numero di caselle. Si suppone che la scacchiera non abbia un bordo:


int dx=width/8;
int dy=height/8;



Dividiamo la scacchiera in 8 x 8 celle, ognuna individuata da un indice di riga i e da un indice di colonna j.
Bisogna poi disegnare le 8 x 8 caselle (una nera e una bianca, affiancate ed alternate). Per controllare se la casella da disegnare è bianca o nera verifichiamo se la somma dell'indice di riga e dell'indice di colonna è pari o dispari. Dobbiamo considerare però che la prima casella in basso a destra è sempre bianca (per convenzione), e quindi scriveremo:


if((i+j+1)%2!=0) // la somma di i+j+1 è dispari, perché non è divisibile per 2



In tal caso, cioè se la somma di i+j+1 è dispari e quindi imposteremo il colore della casella la casella come nero e creiamo il rettangolo


if((i+j+1)%2!=0) // la somma di i+j+1 è dispari, perché non è divisibile per 2
{
fill(0);
rect(j*dx,i*dy,dx-1,dx-1);
}



Come disegneremo il rettangolo della casella?
Useremo la funzione rect che chiede come argomenti le coordinate del vertice iniziale del rettangolo (basso a sinistra) , la dimensione della base e la dimensione dell'altezza.
Come calcoliamo le coordinate di ogni vertice di tutte le caselle ? Ragioniamo in questo modo.
Ogni casella è individuata da un indice di riga i e da un indice di colonna j, quindi l'ascissa del rettangolo che individua la casella (i,j) si ottiene dalla formula

j*dx

cioè moltiplicando la colonna j per il lato dx del rettangolo. Abbiamo quindi i seguenti valori:

j=0 x=0*dx=0
j=1 x=1*dx=dx
j=2 x=2*dx=2dx
j=3 x=3*dx=3dx

Lo stesso discorso si ripete per l'ordinata del vertice, che si ottiene dalla formula

i*dy

Ovviamente dx e dy dovranno essere uguali perché le caselle sono tutte quadrate.

Ed ecco la procedura completa!


// Procedura per il disegno di una scacchiera 8 x 8 bianco e nera
void scacchiera()
{
int i,j;
int dx=width/8;
int dy=height/8;
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
if((i+j+1)%2!=0)
{
fill(0);
rect(j*dx,i*dy,dx-1,dx-1);
}
}
}


Invece il programma che richiama tale procedura è il seguente:


size(600,600);
background(255);
scacchiera();


scacchiera8x10.png