![]() | LEZIONE 5: | Grafica con AMOS |
Amiga ha sempre stupito per la buona grafica che è in grado di
fornire. Con AMOS è possibile programmare la grafica in maniera
molto semplice e chiara, grazie alla leggendaria versatilità dei
potenti comandi che vi illustreremo.
Questi comandi sono creati per gestire la grafica diretta, cioè
disegnare linee, punti e cerchi gestendo anche la loro colorazione. Con
AMOS è ovviamente possibile anche utilizzare schermate
preparate con programmi di disegno come Deluxe Paint o altri ancora, ma
questo è un argomento che tratteremo nelle prossime lezioni.
Ecco i comandi interessati a questo argomento:
Bar x1,y1 To x2,y2
Traccia un rettangolo e lo riempie del colore settato con il comando
Ink (spiegato di seguito in questa lezione).
Es.: Bar 0,0 TO 100,50
Traccia un rettangolo pieno che parte dall'estremo margine sinistro (0,0), di larghezza 100 ed altezza 50.
Box x1,y1 To x2,y2
Traccia un rettangolo vuoto di angolo superiore sinistro x1,y1 e
angolo inferiore destro x2,y2.
Circle x,y,r
Traccia un cerchio di centro x,y e di raggio r.
Clip x1,y1 To x2,y2
Limita tutte le operazioni di disegno impartite dai comandi grafici
all'interno del rettangolo definito. Le coordinate si inseriscono come
nei comandi Box e Bar. Clip impartito senza
coordinate annulla l'ultimo Clip eseguito.
Colour n,$RGB
Assegna ad un indice il colore definito dalle porzioni RGB selezionate.
Più precisamente, uno screen a 32 colori contiene 32 indici che
vanno( da 0 a 31) ad ognuno dei quali posso assegnare un colore a mio
piacimento interagendo con i tre valori RGB (Rosso, Verde e Blu) ognuno dei
quali varia da 0 ad F, cioè il numero 15 espresso in esadecimale.
Per chi ha esperienza di disegno con Deluxe Paint, Personal Paint o altri
programmi simili, quando si modifica un colore, dopo averlo selezionato, si
lavora con tre slider per ottenere il colore desiderato. Muovendo questi
slider, non si fa altro che cambiare i valori R-G-B di quel indice.
Es.: Colour 0,$A74
Assegna all'indice 0 il colore che risulta mescolando il valore A del rosso, il valore 7 del verde e il valore 4 del blu. Il massimo che si può raggiungere e $FFF, cioè il bianco; notare che viene usato il sistema esadecimale, che permette di inserire valori superiori al 9 sostituendoli con una lettera, quindi per esempio per indicare il valore 10 useremo la lettera A ... per indicare il valore 11 useremo la lettera B ... e così via, fino al valore massimo di 15 che indicheremo con F .
=Colour(n)
Ritorna il valore del colore assegnato all'indice n, il quale
risulterà però espresso in decimale. Per vederlo più
chiaramente espresso in esadecimale bisogna utilizzare la seguente sintassi:
Print Hex$(Colour(n))
Tale stringa nel caso che il colore dell'indice n sia bianco,
stamperà $FFF.
Draw x1,y1 To x2,y2
Traccia una linea dal pixel x1,y1 al pixel x2,y2. Dopo aver
impartito tale ordine, se noi digitiamo: Draw To x3,y3, la linea
proseguirà fino a giungere al pixel x3,y3.
Ellipse x,y,r1,r2
Traccia un ellisse col centro nel pixel x,y, con raggio orizzontale
avente valore r1 e raggio verticale avente valore r2.
Ink c[,paper][,border]
Fissa rispettivamente il colore di foreground, di backgound e il bordo
(per figure piene) per operazioni di disegno.
Es.: Ink 1,0,2
Fissa il colore 1 per il primo piano, il colore 0 per lo sfondo, ed il colore 2 per il contorno. Il secondo e terzo valore sono opzionali. I comandi grafici (Circle, Box, Bar, etc.) successivi a questa istruzione utilizzeranno il colore settato con Ink
Paint x,y,modo
Colora un area chiusa e cui appartiene il pixel x,y col colore
definito con Ink (modo può essere 1 o 0).
Palette lista colori
Fissa le porzioni RGB dei colori compresi nella lista
Es.: Palette $FFF,,$000 Cambia il colore 0 e il colore 2).
Plot x,y[,c]
Disegna un pixel di coordinate x,y e di colore c
=Point x,y
Ritorna l'indice del colore del pixel presente nelle coordinate x,y
Polygon x1,y1 To x2,y2 To ...xn,yn
Traccia un poligono pieno con colore definito da Ink unendo i pixel
definiti in x1,y1, x2,y2 fino alle coordinate xn,yn.
Polyline x1,y1 To x2,y2 to ...xn,yn
Comando analogo a Polygon con la sola differenza che traccia una
figura vuota.
Set Line maschera
Definisce una maschera, cioè un pattern di 16 bits per il tracciamento
di linee.
Es.:
Cls 0
Set Line $FFF
Draw 0,30 To 320,30
Set Line %1010101010101010
Draw 0,60 To 320,60
Traccia una linea piena ed una tratteggiata.
Set Paint n
Attiva (n=1) e disattiva (n=0) il modo Outline per il
tracciamento del bordo in figure piene usando il colore definito con
Ink
Set Pattern n
Stabilisce il tipo di riempimento per figure chiuse (sè n=0 il
riempimento è uniforme col colore di Ink; se n>0
è fissato uno dei 34 tipi di riempimento de default;
se n<0 il riempimento sarà definito da uno sprite del
banco 1, la cui larghezza non deve superare i 16 pixels e l'altezza può
essere una potenza di 2 dalla 2 elevato alla 0' alla 2 elevato alla 6'; il
numero dello sprite sarà calcolato con la formula:
=XGR
Ritorna la coordinata X del cursore grafico. Utile in operazioni di
disegno complesse.
=YGR
Ritorna la coordinata Y del cursore grafico.
Es.: Print "X= ";XGR+"Y= ";YGR
Stampa le coordinate del cursore grafico.
-IL CURSORE GRAFICO-
A differenza del cursore di testo, argomento trattato in una delle precedenti lezioni, il cursore grafico permette di posizionare qualsiasi parte grafica, quindi anche il testo, usando spostamenti mirati al singolo pixel utilizzando coordinate X orizzontali che vanno in crescendo partendo dal pixel 0 posto all'estrema sinistra proseguendo verso destra e Y verticali sempre da 0 partendo dall'alto verso il basso.
Ok! Vi è stato elencato il parco comandi di AMOS inerente
alla grafica diretta. Nella prossima lezione parleremo delle procedure,
cioè un modo per partizionare il prorprio programma dividendolo in
più parti indipendenti, col fine di muoversi meglio fra le righe del
listato, soprattutto quando questo è molto lungo.
Inoltre spiegheremo i comandi per creare strutture cicliche e blocchi
decisionali.
Questa parte potrebbe risultare un pò noiosa, ma è comunque
obbligatorio affrontarla, in quanto, senza di essa, un programma non potrebbe
aver luogo.
Una volta sbucciata:-) questa "patata bollente" ed affrontate altre
parti indispensabili come i banchi di memoria, le funzioni matematiche
e qualche altro argomento utile, saremo finalmente pronti ad affrontare
la parte più interessante del corso che prevede una gestione
avanzata della grafica mediante l'utilizzo di schermate da noi create
con altri programmi come il Deluxe Paint, l'uso degli sprite e tutto
ciò che concerne la parte audio.
Alla prossima lezione.
|