LEZIONE 17 – L A G R A F I C A (2° Parte)

da | Dic 18, 2023 | MSX BASIC | 0 commenti

Continuiamo a parlare delle altre funzioni della grafica.

PSET/PRESET
I due comandi sono praticamente uguali, disegnano un punto alla coordinata specificata. L’unica differenza che c’è tra i due é che se si omette il codice colore, il primo cioè PSET userà il colore di primo piano, mentre il secondo quello dello sfondo. Come dire uno disegna e l’altro cancella. X e Y sono le coordinate orizzontali e verticali. Possiamo usarli solo negli schermi grafici (SCREEN 2 e 3). Se inseriamo dei valori superiori alla massima grandezza dello SCREEN non verrà visualizzato nessun messaggio d’errore.
Sintassi: PSET(X,Y)[,CodiceColore]/PRESET(X,Y)[,CodiceColore]

POINT
Restituisce il codice colore alle coordinate inserite. Se vogliamo sapere il colore in un dato punto dello schermo, scriveremo: A=POINT(X,Y). La variabile A memorizzerà il codice colore che in quel momento si trova in quel determinato punto dello schermo. Non può essere usato da solo, oltretutto non avrebbe senso.
L’MSX non segnalerà errore se si superano i limiti dello schermo, ma il suo risultato sarà errato. Come detto sopra, la X e Y sono le coordinate orizzontali e verticali.
Sintassi: VARIABILE=POINT(X,Y)

LINE
Disegna una linea o un rettangolo tra la coordinata d’inizio e quella di fine.
Per fare un esempio, se vogliamo disegnare una linea diagonale che prenda tutto lo schermo, scriveremo: LINE(0,0)-(255,191),15. Il punto 0,0 è la prima coordinata dello schermo grafico, mentre 255,191 è l’ultima. Traccerà una linea che
attraverserà tutto lo schermo di colore bianco. Spieghiamo meglio, il punto 0,0 è il punto di partenza della linea, mentre il 255,191 è quello di arrivo. Il 15 è il codice colore con cui vogliamo disegnarla. Se quest’ultima viene omessa, userà il codice colore di primo piano del comando COLOR (se ricordate, l’avevo detto nella lezione scorsa). Se invece di una retta vogliamo disegnare un rettangolo o quadrato, basta aggiungere la lettera B dopo il codice colore. La funzione LINE capirà che dovrà disegnare un Box usano il primo dato come vertice superiore sinistro ed il secondo come vertice inferiore destro: LINE(0,0)-(255,191),15,B.
Se il rettangolo che abbiamo disegnato lo vogliamo colorare, basta aggiungere la lettera F dopo la B: LINE(0,0)-(255,191),15,BF, verrà colorato usando lo stesso colore. Possiamo anche continuare a disegnare un’immagine dal punto precedente,
invece di usare il punto di partenza, useremo STEP. Facciamo un esempio disegnando un rombo:
10 SCREEN 2: COLOR 1,15,15:CLS
20 LINE (50,50)-(75,75),6: LINE -(50,100),6
30 LINE -(25,75),6: LINE -(50,50),6
40 GOTO 40
Invece dell’istruzione STEP ho usato il segno meno (-) che è la stessa cosa.
Una cosa che ho dimenticato di dire all’inizio delle lezioni sulla grafica.
Quando si lavora sugli schermi grafici, alla fine del programma ritornerà in
modo testo, ecco perché ho bloccato il programma alla linea 40, se non l’avrei
fatto il programma sarebbe uscito senza farci vedere il disegno creato.
SINTASSI: LINE [STEP][(X1,Y1)]-(X2,Y2)[,CodiceColore][,B[F]]

CIRCLE
Disegna cerchi, ellissi e linee curve, usando come centro il punto di coordinate X e Y e raggio indicato. In poche parole: CIRCLE (X,Y),Raggio, colore. Come detto sopra se si omette il colore userà quello di primo piano. Anche per il comando
CIRCLE possiamo usare STEP. Per far capire meglio prenderò il programma scritto prima aggiungendo quello detto sopra.
10 SCREEN 2: COLOR 1,15,15:CLS
20 LINE (50,50)-(75,75),6: LINE -(50,100),6
30 LINE -(25,75),6: LINE -(50,50),6
40 CIRCLE STEP(0,25),25,6
50 GOTO 50
Visto che il rombo usa 50 pixel per lato e l’ultimo punto stampato è il vertice superiore, gli abbiamo detto di spostarsi 25 pixel in basso.
Come sappiamo un cerchio è composto da 360 gradi cioè 2Pgreco radianti. Il Pgreco è uguale a 3.14159, perciò 2Pgreco è 6.28318 radianti. Se vogliamo disegnare una curva basta specificare il punto di inizio e fine. Queste due opzioni vengono
inserite subito dopo il codice colore: CIRCLE(X,Y),Raggio, Colore, inizio, fine.
Potremmo fare il calcolo in 2 modi: gradi * radianti (1 Radiante=0.01745) oppure usando il Pgreco. Per comodità userò il secondo detto. Per fare un esempio, vogliamo disegnare la parte superiore del cerchio: CIRCLE(100,100),30,1,0,3.14159.
Il punto 0 è la parte più a destra del cerchio, infatti traccerà da destra verso sinistra, mentre il secondo che è 1Pgreco, si fermerà al punto più a sinistra del cerchio, cioè a metà. Se vogliamo disegnare la parte in basso, basta variare lo 0 con 3.14159 e il 3.14159 con 0 o 6.28318 che è la stessa cosa, visto che il punto di fine 2Pgreco è il punto di partenza 0*Pgreco. C’è ancora un ultima opzione per completare il comando; il rapporto. Se questo è maggiore di 1, il cerchio sarà allungato cioè alto e stretto se invece è minore di 1 sarà schiacciato, basso e largo. Se vogliamo omettere alcune opzioni che sono prima di altre, basta inserire il campo vuoto. Ad esempio, vogliamo usare il Rapporto disegnando un cerchio intero:
CIRCLE (100,100),30,,,,.5. Così facendo abbiamo omesso il colore e il punto di partenza e fine dell’ellisse. Se disegniamo un cerchio più grande dello schermo non ci sarà nessuna segnalazione d’errore, vedremo solo la parte che rientrerà in esso.
Sintassi: CIRCLE [STEP] (X,Y), Raggio [,Colore][, Inizio, Fine][,Rapporto]

Anche per questa lezione è tutto. La prossima concluderò la parte grafica con il comando DRAW chiamato anche GML (Graphic Macro Language), Paint e come scrivere sui schermi grafici, poi si inizierà con gli Sprites.

Grazie a tutti e buon weekend.

0 commenti

Invia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

LEZIONE 26 – INTERVAL ON, RND ED ALTRI

LEZIONE 26 – INTERVAL ON, RND ED ALTRI

Buongiorno a tutti, In questa puntata parlerò di un interrupt importante, specialmente per i giochi, quando vogliamo far apparire un nemico all'improvviso o un oggetto utile, ma anche per creare un cronometro o un orologio e tante altre cose. Il COMANDO sfrutta il...

it_ITIT_IT