FreeBASIC – la linea

Dopo aver visto come lavorare con il punto, con questo articolo vedremo come lavorare con un altro ente geometrico fondamentale di Euclide: la linea retta.

In realtà ciò che potremo effettivamente disegnare a video sarà soltanto una parte della linea retta: ovvero un segmento.

L’istruzione che utilizzeremo ci permetterà di costruire anche due figure geometriche: il quadrato e il rettangolo.

Istruzione line

In freeBASIC per tracciare un segmento si usa l’istruzione line.

Vediamo in un semplice programma i diversi modi di utilizzo.

screen 19, 32

''primo piano nero, sfondo bianco
color (rgb(0,0,0),rgb(255,255,255))

cls

locate 1: print "Istruzione line"

''1) segmento rosso orizzontale continuo 
locate 3: print "1)"
line (25,40)-(500,40),rgb(255,0,0)

''2) segmento blu orizzontale con tratteggio irregolare 
locate 5: print "2)" 
line (25,70)-(300,70),rgb(0,0,255),,&b1110010011100100

''3) rettangolo verde vuoto con tratteggio regolare
locate 7: print "3)"
line (25,100)-(125,120),rgb(0,255,0),B,&b1111111100000000

''4) quadrato giallo pieno con le coordinate del
''   secondo vertice relative a quelle del primo vertice
''   e diagonale magenta tratteggiata
locate 9: print "4)"
line (25,130)-step(100,100),rgb(255,255,0),BF
line (25,130)-step(100,100),rgb(255,0,255),,&b1100110011001100

sleep

Il codice più sopra riportato si spiega in gran parte da sé, ma forse è bene chiarire il funzionamento di due argomenti di questa istruzione:

  • il primo riguarda il parametro B o BF: in pratica se si vuole disegnare soltanto il perimetro della figura si indica la lettera B che sta per box (scatola), mentre se si vuole colorare l’intera figura si indicano le lettere BF che stanno per box filled (scatola riempita);
  • il secondo è quello che specifica lo stile del segmento. Lo si fa scrivendo un letterale numerico intero in forma binaria con 16 bits. Questo valore rappresenta una maschera di bits (bitmask) dove al valore 1 corrisponde un pixel acceso e al valore 0 un pixel spento. La maschera viene ripetuta per tutta la lunghezza del segmento.

Bene. Per oggi ci fermiamo qui. Nel prossimo articolo vedremo come lavorare con il cerchio e l’ellisse. 🙂

FreeBASIC – colori

In questo nuovo articolo andremo alla scoperta di come si può lavorare con i colori in FreeBASIC.

Funzione color

La prima funzione che incontriamo è la funzione color che ci permette di fare tre cose:

  • impostare il colore del primo piano (foreground)
  • impostare il colore dello sfondo (background)
  • ottenere i colori correnti del primo piano e dello sfondo

Impostare i colori del primo piano e dello sfondo

L’impostazione del colore del primo piano e dello sfondo, oltre ad avere diretto effetto sullo schermo grafico, ha effetto anche sulle figure che vengono su questo disegnate, per esempio con le funzioni line o circle, se non si specifica con queste istruzioni l’attributo relativo al loro colore.

Definire un colore con la funzione rgb

La funzione rgb permette di valorizzare distintamente i tre colori primari percepiti dal nostro occhio per sintesi additiva: rosso (red), verde (green) e blu (blue).

Nel mondo dei computer si fa largo uso del modello di colori RGB.

Vediamo un esempio:

''imposta la risoluzione dello schermo e quella grafica
screen 19, 32

''imposta il colore rosso per il primo piano e
''il colore zafferano per lo sfondo
color(rgb(255,0,0), rgb(244,196,48))

''pulisce lo schermo per rendere visibile il
''colore dello sfondo appena impostato
cls

print "Cosa sono i colori?"

sleep

Su Wikipedia è disponibile una lista dei colori molto utile per il programmatore.

Definire un colore con la tavolozza dei colori predefinita

In FreeBASIC è disponibile una tavolozza dei colori predefinita (default pallettes) che raggruppa una serie di colori visualizzabili in base alla modalità grafica scelta.

Per impostare uno di questi colori basterà specificare il relativo valore associato.

screen 12
color(1, 5) ''primo piano blu e sfondo rosa
cls
print "ciao"
sleep

In FreeBASIC è anche possibile cambiare la tavolozza dei colori attraverso l’istruzione palette, ma questa possibilità non verrà esplorata in questo articolo.

Ottenere il colore del primo piano e dello sfondo

La funzione color restituisce un valore ulong (ovvero un valore di tipo long senza però il segno) che contiene l’informazione dei valori del primo piano e dello sfondo correnti:

dim c as ulong
c = color()
print "Colori della console:"
print "primo piano:"; loword(c)
print "sfondo:"; hiword(c)

Ottenere il colore di un pixel

Oltre al colore del primo piano e dello sfondo, potremmo essere interessati a conoscere il colore di uno specifico punto dello schermo (pixel).

Per fare questo possiamo utilizzare la funzione point:

screen 12
color(1, 5) ''primo piano blu e sfondo rosa 
cls
line(10,10)-(40,10), 2 ''disegna una linea verde
locate 4,1: print "colore dello sfondo:"; point(5,5)
locate 5,1: print "colore di un pixel della linea:"; point(20,10)
sleep

Bene! Come introduzione al mondo dei colori in FreeBASIC possiamo fermarci qui.

A presto. 🙂