DiGrande.it

Non Vedenti, Braille e Tecnologie di Stampa

Questo sito usa Cookie per personalizzare contenuti e annunci, fornire funzionalità per social media e analizzare i collegamenti. Chiudendo questo banner o continuando la navigazione acconsenti al loro uso.
Leggi la Cookie Policy di DiGrande.it

Disegniamo una scacchiera con la grafica tattile, per giocare a scacchi o a dama

Pubblicato il 11/09/2020 08:00 
 

Una scacchiera è un Disegno geometrico alquanto semplice da realizzare. È costituita da una serie di quadrati che formano una griglia di 8 x 8 celle. In più si ha una alternanza tra quadrati pieni e quadrati vuoti. Un Insegnante di Programmazione a questo punto porrebbe il problema: pensare l'algoritmo e Scrivere il codice che disegna una scacchiera.
Per disegnare una scacchiera intanto si scinde il problema in tanti elementi di base, in pratica quello che ho appena fatto descrivendo la scacchiera. Chi è capace di pensare computazionalmente scinde sempre i problemi negli elementi che li costituiscono, al fine di applicare ad essi gli strumenti opportuni per risolvere il problema nella sua interezza. Può essere anche considerata una filosofia di pensiero, al fine di risolvere anche i piccoli e grandi problemi che la vita ogni giorno presenta. Il pensiero computazionale oggi è una Materia insegnata trasversalmente anche nella Scuola italiana.

Prima descrivo l'algoritmo, poi traduco l'algoritmo in codice. Per riuscire a padroneggiare questa Tecnica, un programmatore, oltre ad avere in sé il pensiero computazionale, deve padroneggiare i principi fondamentali della Programmazione, che si ripetono in ogni Linguaggio. Non siamo neanche arrivati alla sintassi e alle istruzioni, quelle sono giusto le ultime cose da imparare e sono le più semplici. Per essere programmatori si deve dominare ciò che sta prima del Linguaggio, cioè il pensiero e gli algoritmi.

  • Ho bisogno di calcolare la Dimensione di ogni quadrato della scacchiera. Mi serve conoscere la Dimensione del Foglio, quindi fare un semplice calcolo.
  • Per disegnare la scacchiera devo avvalermi di due cicli, di cui uno annidato. I cicli mi servono per le otto colonne in orizzontale per le otto righe in verticale.
  • Ho bisogno di una variabile in cui capire se disegnare un quadrato vuoto o un quadrato pieno. La metto dentro il primo ciclo e stabilisco se la riga deve iniziare con un quadrato pieno o vuoto.

L'algoritmo è alquanto semplice, non ci si lasci scoraggiare se si è alle prime armi. Certo, siamo leggermente al di là di un semplice Hello World che viene fuori sullo Schermo. Svelo una cosa: Hello World è solo un effetto scenico. Non serve a niente, giusto a testare se il Linguaggio funziona.
Ora traduciamo l'algoritmo in codice. Naturalmente per tradurlo in codice, come ho già scritto, si devono padroneggiare le fondamenta della Programmazione e infine conoscere la sintassi del Linguaggio, cioè gli strumenti del mestiere.

Il seguente codice può essere copiato e incollato in un nuovo Progetto di Grafica Tattile, quindi stampato.


// Calcolo la Dimensione più opportuna del quadrato
// Il quadrato avrà un lato per entrare correttamente e senza distorcersi sia in orizzontale che in verticale
x = width / 8
y = height / 8
// Dopo aver calcolato le dimensioni orizzontali e verticali, per il quadrato scelgo la Dimensione minore
// Se scegliessi quella maggiore, da un lato il quadrato eccederebbe le dimensioni del Foglio
// Mi avvalgo di una condizione e istanzio al suo interno la variabile l con la Dimensione corretta del quadrato
If x<y
l = x
Else
l = y
EndIf

// Predispongo i due cicli per disegnare la scacchiera
For y = 0 to 7
// Stabilisco se partire con un quadrato pieno o vuoto. Una semplice Operazione di modulo
a = (y % 2 = 1)
// Per chiarezza uso una variabile dove memorizzare la posizione y di Disegno
py = y * l
// Ciclo annidato. Al suo interno c'è l'Istruzione di Disegno
For x = 0 to 7
// Calcolo la posizione in orizzontale
px = x * l
// Disegno finalmente il quadrato
Rectangle(px,py,px+l,py+l)
// Devo disegnare un quadrato pieno?
If a=true
Fill(px+1,py+1, clBlack)
EndIf
// Alterno lo stato della variabile a
a = not a
EndFor
EndFor


Per ulteriore supporto ci si può iscrivere nel Gruppo di Biblos su Facebook.