Page 97

o

0123456789101112131415

o

software 2

3

4

}

1 2 3

cordo a quanto detto parlando delle coordinate di schermo. Come abbiamo già specificato, per disegnare una figura qualsiasi bisogna immaginarIa formata da tanti puntini ed accendere sullo schermo i pixel corrispondenti. Vediamo ad esempio come si fa a tracciare un segmento orizzontale a partire dalla coordinata (50,50) e lungo 20 pixel (sullo schermo 2). Si può usare una serie di 20 PSET del tipo:

o

4 5 6 7 8 9 10 11 12 13 14 15

2 3

PSET (50,50) PSET (51,50) PSET (50,52)

4 FigLlra 2 - Vn pixe/ dello schermo pixe/ dello schermo 3.

Figura I - Pane della matrice dello schermo 2.

50 PRESET (130,90) 60 FOR 1= n0500:NEXT 70 GOTO 30

dl'! pro!:rllmma

MClllicrocolllputer

rel1lJIlKoli

a /6

mi per rendervi meglio conto di come funzioni PSET in unione a STEP.

a questo punto dovreste essere perfettamente in grado di comprendere che cosa fa: la linea IO sceglie il colore verde per lo sfondo ed il bordo, ed il colore bianco per il primo piano; la linea 30 accende il pixel (130,90) e la 50 lo colora come il fondo, cioè lo spegne. In pratica si vede un puntino lampeggiare al centro dello schermo. Vi è un altro modo di usare PSET (e PRESET), ed è questo: PSET STEP (X,Y), C (C può essere omesso). In questo modo, le coordinate specificate non sono più assolute, ma relative all'ultimo punto acceso (se ancora non è stato acceso alcun pixel si assume come ultimo acceso quello di coordinate 0,0). Cerchiamo di capire meglio: PSET (10,5) vuole dire "accendi il pixel di coordinate (10,5)", mentre PSET STEP (10,10) significa "accendi il pixel che si trova alle coordinate (A+ 10,B+5)" dove A e B sono le coordinate dell'ultimo pixel acceso. Usando STEP le coordinate del nuovo pixel vengono calcolate sommando (algebricamente) i numeri specificati alle coordinate del vecchio pixel; in questo caso è quindi possibile specificare anche X e Y negativi, che normalmente non avrebbero senso. Provate a far girare questi due progralll-

(Jwpw

3 corrisponde

/.

n. 38 - febbraio

10 20 30 40 50 10 20 30 40 50

più comodamente,

un ciclo FOR

FOR I=OT019 PSET (50+ l,50) NEXT

Entrambe le soluzioni sono abbastanza scomode; fortunatamente il Basic MSX possiede un 'istruzione che permette di tracciare comodamente qualsiasi tipo di linea (ed anche qualcosa in più).

COLOR 15,6,6 SCREEN 3 PSET (130,90) PSET (8,0), 1 GOTO 50 COLOR 15,6,6 SCREEN 3 PSET (130,90) PSET STEP (8,0),1 GOTO 50

Il comando UNE

le due linee 50 GOTO 50 servono per creare un loop infinito ed evitare che il computer, tornando in modo testo, cancelli lo schermo. Per uscire dalloop basta premere CTRL STOP. Abbiamo visto che usando PSET e PRESET si può specificare il colore del pixel da accendere. Purtroppo lo schermo 2 presenta una limitazione nell'uso del colore. Ogni riga della matrice di cui abbiamo parlato può essere vista come una successione di 64 blocchi composti da 8 pixel consecutivi; per ognuno di questi due blocchi possono essere usati soltanto due colori, uno di sfondo ed uno di primo piano. Se, con due PSET consecutivi, si tenta di colorare con colori diversi due pixel appartenenti allo stesso blocco, il secondo PSET cambierà anche il colore del puntino già acceso. I listati l e 2 sono due esempi coreografici dell'uso di PSET; come si vede i due programmi sono identici, varia solo la selezione dello schermo grafico. in ac-

()ll1put

1985

oppure, NEXT:

del pr()~ramma

L'istruzione in questione è UNE, che nella sua forma più semplice si usa così: UNE (X1,Y1)-(X2,Y2),C

X I e Y I sono le coordinate del punto di partenza, X2 e Y2 quelle del punto di arrivo e C il colore; omettendo lo la linea verrà tracciata nel colore di primo piano. Per tornare all'esempio precedente basta dunque fare: UNE (50,50)-(69,50)

Come per PSET, anche per UNE le coordinate sono interpretate relativamente alla posizione dell'ultimo punto acceso (che può benissimo essere l'ultimo punto di una linea ottenuta con UNE) se viene usato STEP. Si noti che è necessario specificare STEP per entrambe le coppie di coordinate, se si desidera che tutte e due vengano considerate relative e non assolute. Ecco tre brevi esempi: 10 COLOR 15,5,5 20 SCREEN 2 30 UNE (50,50)-(150,50) 40 GOTO 40

rl'l1l11lKo/i

l.

97

Profile for ADPware

038 MCmicrocomputer  

Febbraio 1985

038 MCmicrocomputer  

Febbraio 1985

Profile for adpware
Advertisement