Creare una scacchiera con il linguaggio Processing

Creare una scacchiera con il linguaggio Processing

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();
via Notiziario online.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s