Page 95

cura di Maurizjo Bergami

necessario ricorrere al comando M, che ha questa forma: M <x>.<Y>

La Grafica (parte II) Il mese scorso abbiamo visto quali sono le principali caratteristiche dei computer MSX dal punto di vista grafico, esaminando tra l'altro i due versatili comandi LINE e Cl RCLE, che consentono di disegnare linee, rettangoli, archi, cerchi ed e//issi. L'argomento di questa seconda puntata sulla grafica M SX è il Graphics M acro Language (GML), un macro linguaggio per il tracciamento di linee.

Il GML è composto da una serie di comandi che fanno muovere sullo schermo una penna immaginaria. Questa penna, che si può spostare soltanto in linea retta, muovendosi lascia un segno; in altre parole disegna un segmento. Combinando fra loro più istruzioni del GML è possibile disegnare figure, anche piuttosto complesse, molto più semplicemente che non attraverso una serie di UNE. I comandi del G M L non possono essere eseguiti direttamente come le normali istruzioni del Basic, ma vanno prima inseriti in una stringa e poi mandati in esecuzione dal comando ORA W. In altre parole, per eseguire una serie di comandi del macro linguaggio grafico bisogna dare l'istruzione: DRAW "<sequenza

di comandi GML>"

A questo punto possiamo iniziare a vedere quali sono e come sono fatti questi comandi, partendo dai più semplici. Per disegnare una linea in alto, in basso, a destra o a sinistra si usano le seguenti istruzioni: U D L R

<n> <n> < n> < n>

(alto) (basso) (sinistra) (destra)

dove n è il numero che indica la lunghezza del segmento. Tutti i comandi del GML hanno questa forma, cioè una lettera maiuscola eventualmente seguita da uno o due numeri. Vediamo subito un primo esempio, per chiarire le idee: supponiamo di voler disegnare un quadrato di 55 pixel per lato. La sequenza di comandi necessaria è

Non abbiamo detto nulla però a proposito della posizione alla quale verrà disegnato il quadrato. La regola è questa: il disegno incomincia dalla posizione dell'ultimo pixel acceso; se ancora non è stato acceso nessun puntino si assume come default quello di coordinate 0,0. Il colore della figura sarà quello del corrénte colore di primo piano. Un programma completo per disegnare il quadrato voluto è riportato nel listato I; la parte fondamentale è costituita dall'istruzione ORA W appena vista, preceduta dalla chiamata allo schermo grafico numero 2 ed da un PSET (100,68) che fissa la posizione del quadrato. Per disegnare in diagonale si usano invece questi altri comandi: E F G H

< n> < n> <n> < n>

(in alto a destra) (in basso a destra) (in basso a sinistra) (in alto a sinistra)

con queste nuove istruzioni possiamo provare a disegnare un rombo; il programma relativo è riportato nel listato 2. La struttura è la stessa del programma precedente: un'istruzione ORA W preceduta da uno SCREEN e da un PSET. Dai due esempi visti finora si può comprendere che il principale vantaggio del GML rispetto all'istruzione UNE consiste in una maggiore compattezza nonché in una più facile comprensione dei comandi, che invece di fare riferimento a delle coordinate di schermo indicano semplicemente direzione e lunghezza della linea da tracciare. Le otto istruzioni che abbiamo presentato permettono tuttavia di disegnare solo in alcune direzioni ben definite; per tracciare un segmento in una direzione qualsiasi è

x e y sono le coordinate del secondo estremo del segmento; come coordinate del primo estremo si assumono, al solito, quelle dell'ultimo pixel acceso. In questo caso, come'si vede, è necessario specificare delle coordinate e si viene a perdere uno dei vantaggi sopra accennati; rimane comunque quello della compattezza. Possiamo provare a modificare il programma QUADRATO per tracciare l'ultimo segmento con un M anziché con un U; la linea da cambiare naturalmente è la 90: 90 DRAW "R55,D55L55M100,68"

Premettendo alle coordinate x e y il segno + o -, esse vengono interpretate non come coordinate assolute, ma relative; provate ad esempio a modificare la linea 90 così: 90 DRAW "R55D55L55M+100.+68"

il risultato che si ottiene è decisamente diverso! Per avere il solito quadrato bisogna invece cambiare la stessa linea in 90 DRAW "R55D55L55M + O,+ 55"

Se il concetto di coordinate relative non vi è molto chiaro vi consigliamo di rileggervi la rubrica del numero precedente, al punto in cui si parla dell'istruzione PSET STEP. Immaginiamo ora di voler disegnare non una sola ma due figure diverse, ad esempio il quadrato ed il rombo già visti. Un primo modo è questo: PSET (X1.Y1) DRAW "<comandi disegno quadrato>" PSET (X2,Y2) DRAW " < comandi disegno rombo> "

i due PSET sono necessari per posizionare opportunamente le due figure. Effettivamente così funziona (provare per credere), ma esiste una strada ancora più semplice, che permette di usare un solo ORA W e di eliminare i PSET. Per capire come si fa bisogna prima parlare del comando B: premettendo questa lettera ad un altro comando l'ipotetica penna menzionata in apertura si sposta senza disegnare. Dato che le linee vengono tracciate sempre a partire dall'ultima posizione della penna (posizione che può essere stata rag-

D

R55D55L55U55

e può essere eseguita con un'istruzione ORA W in questo modo DRAW"R55D55L55U55"

MCmicrocomputer

n. 39 - marzo 1985

OUIPU/ del programma Quadra/o.

Ou/pu/ del programma Rombo.

95

Profile for ADPware

039 MCmicrocomputer  

Marzo 1985

039 MCmicrocomputer  

Marzo 1985

Profile for adpware
Advertisement