{"id":6270,"date":"2023-12-18T16:32:14","date_gmt":"2023-12-18T15:32:14","guid":{"rendered":"https:\/\/msxitalia.org\/?p=6270"},"modified":"2023-12-19T08:51:11","modified_gmt":"2023-12-19T07:51:11","slug":"lezione-17-l-a-g-r-a-f-i-c-a-2-parte","status":"publish","type":"post","link":"https:\/\/msxitalia.org\/en\/lezione-17-l-a-g-r-a-f-i-c-a-2-parte\/","title":{"rendered":"LESSON 17 \u2013 LAGRAPHICS (2nd Part)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Continuiamo a parlare delle altre funzioni della grafica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PSET\/PRESET<br>I due comandi sono praticamente uguali, disegnano un punto alla coordinata specificata. L&#8217;unica differenza che c&#8217;\u00e8 tra i due \u00e9 che se si omette il codice colore, il primo cio\u00e8 PSET user\u00e0 il colore di primo piano, mentre il secondo quello dello sfondo. Come dire uno disegna e l&#8217;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\u00e0 visualizzato nessun messaggio d&#8217;errore.<br>Sintassi: PSET(X,Y)[,CodiceColore]\/PRESET(X,Y)[,CodiceColore]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">POINT<br>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\u00e0 il codice colore che in quel momento si trova in quel determinato punto dello schermo. Non pu\u00f2 essere usato da solo, oltretutto non avrebbe senso.<br>L&#8217;MSX non segnaler\u00e0 errore se si superano i limiti dello schermo, ma il suo risultato sar\u00e0 errato. Come detto sopra, la X e Y sono le coordinate orizzontali e verticali.<br>Sintassi: VARIABILE=POINT(X,Y)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">LINE<br>Disegna una linea o un rettangolo tra la coordinata d&#8217;inizio e quella di fine.<br>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 \u00e8 la prima coordinata dello schermo grafico, mentre 255,191 \u00e8 l&#8217;ultima. Traccer\u00e0 una linea che<br>attraverser\u00e0 tutto lo schermo di colore bianco. Spieghiamo meglio, il punto 0,0 \u00e8 il punto di partenza della linea, mentre il 255,191 \u00e8 quello di arrivo. Il 15 \u00e8 il codice colore con cui vogliamo disegnarla. Se quest&#8217;ultima viene omessa, user\u00e0 il codice colore di primo piano del comando COLOR (se ricordate, l&#8217;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\u00e0 che dovr\u00e0 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.<br>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\u00e0 colorato usando lo stesso colore. Possiamo anche continuare a disegnare un&#8217;immagine dal punto precedente,<br>invece di usare il punto di partenza, useremo STEP. Facciamo un esempio disegnando un rombo:<br>10 SCREEN 2: COLOR 1,15,15:CLS<br>20 LINE (50,50)-(75,75),6: LINE -(50,100),6<br>30 LINE -(25,75),6: LINE -(50,50),6<br>40 GOTO 40<br>Invece dell&#8217;istruzione STEP ho usato il segno meno (-) che \u00e8 la stessa cosa.<br>Una cosa che ho dimenticato di dire all&#8217;inizio delle lezioni sulla grafica.<br>Quando si lavora sugli schermi grafici, alla fine del programma ritorner\u00e0 in<br>modo testo, ecco perch\u00e9 ho bloccato il programma alla linea 40, se non l&#8217;avrei<br>fatto il programma sarebbe uscito senza farci vedere il disegno creato.<br>SINTASSI: LINE [STEP][(X1,Y1)]-(X2,Y2)[,CodiceColore][,B[F]]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CIRCLE<br>Disegna cerchi,\u2002ellissi 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\u00e0 quello di primo piano. Anche per il comando<br>CIRCLE possiamo usare STEP. Per far capire meglio prender\u00f2 il programma scritto prima aggiungendo quello detto sopra.<br>10 SCREEN 2: COLOR 1,15,15:CLS<br>20 LINE (50,50)-(75,75),6: LINE -(50,100),6<br>30 LINE -(25,75),6: LINE -(50,50),6<br>40 CIRCLE STEP(0,25),25,6<br>50 GOTO 50<br>Visto che il rombo usa 50 pixel per lato e l&#8217;ultimo punto stampato \u00e8 il vertice superiore, gli abbiamo detto di spostarsi 25 pixel in basso.<br>Come sappiamo un cerchio \u00e8 composto da 360 gradi cio\u00e8 2Pgreco radianti. Il Pgreco \u00e8 uguale a 3.14159, perci\u00f2 2Pgreco \u00e8 6.28318 radianti. Se vogliamo disegnare una curva basta specificare il punto di inizio e fine. Queste due opzioni vengono<br>inserite subito dopo il codice colore: CIRCLE(X,Y),Raggio, Colore, inizio, fine.<br>Potremmo fare il calcolo in 2 modi: gradi * radianti (1 Radiante=0.01745) oppure usando il Pgreco. Per comodit\u00e0 user\u00f2 il secondo detto. Per fare un esempio, vogliamo disegnare la parte superiore del cerchio: CIRCLE(100,100),30,1,0,3.14159.<br>Il punto 0 \u00e8 la parte pi\u00f9 a destra del cerchio, infatti traccer\u00e0 da destra verso sinistra, mentre il secondo che \u00e8 1<em>Pgreco, si fermer\u00e0 al punto pi\u00f9 a sinistra del cerchio, cio\u00e8 a met\u00e0. Se vogliamo disegnare la parte in basso, basta variare lo 0 con 3.14159 e il 3.14159 con 0 o 6.28318 che \u00e8 la stessa cosa, visto che il punto di fine 2<\/em>Pgreco \u00e8 il punto di partenza 0*Pgreco. C&#8217;\u00e8 ancora un ultima opzione per completare il comando; il rapporto. Se questo \u00e8 maggiore di 1, il cerchio sar\u00e0 allungato cio\u00e8 alto e stretto se invece \u00e8 minore di 1 sar\u00e0 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:<br>CIRCLE (100,100),30,,,,.5. Cos\u00ec facendo abbiamo omesso il colore e il punto di partenza e fine dell&#8217;ellisse. Se disegniamo un cerchio pi\u00f9 grande dello schermo non ci sar\u00e0 nessuna segnalazione d&#8217;errore, vedremo solo la parte che rientrer\u00e0 in esso.<br>Sintassi: CIRCLE <a href=\"http:\/\/X,Y\">[STEP]<\/a> (X,Y), Raggio [,Colore][, Inizio, Fine][,Rapporto]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Anche per questa lezione \u00e8 tutto. La prossima concluder\u00f2 la parte grafica con il comando DRAW chiamato anche GML (Graphic Macro Language), Paint e come scrivere sui schermi grafici, poi si inizier\u00e0 con gli Sprites.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Grazie a tutti e buon weekend.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Continuiamo a parlare delle altre funzioni della grafica. PSET\/PRESETI due comandi sono praticamente uguali, disegnano un punto alla coordinata specificata. L&#8217;unica differenza che c&#8217;\u00e8 tra i due \u00e9 che se si omette il codice colore, il primo cio\u00e8 PSET user\u00e0 il colore di primo piano, mentre il secondo quello dello sfondo. Come dire uno disegna [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":6311,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"off","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[14],"tags":[],"dipi_cpt_category":[],"class_list":["post-6270","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-msx-basic"],"_links":{"self":[{"href":"https:\/\/msxitalia.org\/en\/wp-json\/wp\/v2\/posts\/6270","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/msxitalia.org\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/msxitalia.org\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/msxitalia.org\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/msxitalia.org\/en\/wp-json\/wp\/v2\/comments?post=6270"}],"version-history":[{"count":3,"href":"https:\/\/msxitalia.org\/en\/wp-json\/wp\/v2\/posts\/6270\/revisions"}],"predecessor-version":[{"id":6315,"href":"https:\/\/msxitalia.org\/en\/wp-json\/wp\/v2\/posts\/6270\/revisions\/6315"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/msxitalia.org\/en\/wp-json\/wp\/v2\/media\/6311"}],"wp:attachment":[{"href":"https:\/\/msxitalia.org\/en\/wp-json\/wp\/v2\/media?parent=6270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/msxitalia.org\/en\/wp-json\/wp\/v2\/categories?post=6270"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/msxitalia.org\/en\/wp-json\/wp\/v2\/tags?post=6270"},{"taxonomy":"dipi_cpt_category","embeddable":true,"href":"https:\/\/msxitalia.org\/en\/wp-json\/wp\/v2\/dipi_cpt_category?post=6270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}