Page 96

software---------I

Sprite editor

di Francesco da Re - Conegliano (TV) Questo programma è una utility che permette di semplificare la fase di progettazione e disegno delle sprite. Oltre a disegnare un reticolo della dimensione voluta, il programma stampa anche lo sprite in via di definizione a grandezza reale; questo permette di avere subito un'idea precisa del risultato che si sta ottenendo. Vi è la possibilità di ruotare la figura, di ottenere l'immagine speculare e quella in negativo. L'uso è molto semplice: una volta scelto il tipo di sprite che vuole definire (8 x 8 o 16 x 16 pixel), viene disegnata una matrice della dimensione opportuna, sulla quale è possibile muovere un cursore con i quattro

Listato

7

'0 'MM**MMMMM***MM******MMMM* 15 'M 20 'M MSX SPRITE EDITOR M 30 40 'M***MMMMM***MM******M*MMM 50 110 120 '**MMM**MM***M***MMM*MMM* 130 '* INIZIALIZZA * 140 'M VIDEO * 150 'M*M*MM**MMM*M***M******M 160 170 CLEAR 800:COLOR 15,4,4:KEYOFF:SCREEN I:CLS:WIOTH30:LOCATE,,0 190 200 '*******MMM**MMMM*M****** 210 '* SCELTA 8*8 o 16*16 220 '*************MM*MM****** 230 248 MS$="MSX SPRITE EDITOR" 250 LOCATE 6.8 :PRINT MS$ 268 LOCATE 4, 7 : PRINT" < 1 > 8 * 8 PIX EL" 278 LOCATE 4,10 :PRlNT" < 2 > 16 $ 16 PI XEL" 288 S$=INKEY$ 298 IF 5$="1" THEN DI=7:SCREEN,0:X=15:Y= 6 :GOTO 378 388 IF 5$="2" THEN DI=15:SCREEN.2:X=18:Y =2:GOTO 378 318 GOTO 280 328

*

'*

*

*

330 '************************ 340'* vARIABII & MATRICI 350 360 370 380 390 400 410 428 438 448 458

*

'************************ Z$=STRING$(DI+I,"0") XT=2:YT=22 DIMSL$(DI) DIMST$(DI) FORRI =8TOD I SC$=SC$+" , " SL$(RI )=Z$ NEXT

468 '************************ 470 ' * VIOEO PRINCIPALE' * 4B8 '************************ 490 588 CLS: LOCATE 6,8: PR I NT MS$: GOSUB1730 510 528 '**M*MMMM**************** 538 'M CICLO PRINCIPALE M 540 'M*MM**MMMMM*MMMMMMM*MM** 550 560 XI=X :VI=Y 570 REM JOYSTICK 5B8 J=STICK(8) 590 LOCATE XI, YI, I 680 IFCJ=8 OR J=I OR J=2)AND(YI>Y) THEN Yl=Yl-l 610 IFCJ=4 OR J=5 OR J=6)ANO(YI <Y+DI) TH EH Yl=Yl+1 620 IF(J=6 OR J=7 OR J=B)ANo(XI>X) THEN Xl=Xl-l 630 IF(J=2 OR J=3 OR J=4)AND(Xl<X+DI) TH EN Xl=XI+l 648 LOCATE ,,8 658 REM TASTIERA 660 S$=INKEY$

96

tasti di direzione; premendo la barra spaziatrice si modifica lo stato della casella sulla quale si trova il cursore: un pixel spento verrà quindi acceso e viceversa. I tasti C,R,M,I permettono di selezionare una delle seguenti opzioni: -Clear: pulisce la matrice. -Rotate: ruota la matrice di 90 gradi in senso orario; usando 4 volte di seguito questa opzione si ritorna nella posizione originaria. -Mirror: fornisce l'immagine speculare della matrice. -Invert: inverte lo stato di ogni casella della matrice restituendo, in pratica, il negativo della figura di partenza. A fianco della matrice vengono costantemente visualizzati i valori decimali corrispondenti al disegno; questi potranno poi essere utilizzati semplicemente inserendoli in una istruzione SPRITE$.

Elenco delle variabili del programma DI Contiene la dimensione delle sprite e delle matrici. S$ Viene usata per memorizzare il carattere letto dalla tastiera con INKEY$ in tutte le routine dove ricorre questa funzione. Z$ Contiene un numero di caratteri "O" pari a DI + l. SC$ Contiene un numero di caratteri"." pari a DI + I. SL$ Array di stringhe di lunghezza DI. ST$ Come SL$, ma viene usato solo nella routine di rotazione. X, Y Posizione di stampa della matrice sul video e posizione iniziale del cursore. X I,Y I Posizione corrente del cursore. XR,YR, Posizione del cursore all'interno dell'array SL$. J Contiene il valore letto dai tasti di spostamento del cursore.

670 IF 5$=" " THEN GOSUB 760 6B0 IF S$="R" OR S$="r" THEN GOSUB938 690 IF S$="M" OR S$="m" THEN GOSUBI258 700 IF 5$="1" OR 5$='';'' THEN GOSUBII18 718 IF S$="C" OR S$="c" THEN GOSUBI418 720 GOTD 578 730 REM FINE CICLO PRINCIPALE 740 750 ' MMMMMMMMMMMMMMM**MMMMMM* 768 'M GESTIONE CURSORE * 770 'MMMM***MMMM*MMMMMMMMMM** 7B8 790 XR=Xl-X:YR=YI-Y 880 IFMIO$(SL$(YR), XR+I, 1 )="0"THEN818ELS E840 810 MIO$(SL$(YR),XR+l,I)="I" 820 LOCATE XI, Yl :PRINT"I" 830 GOT0868 848 MID$(SL$(YR), XR+I, 1 )="0" 858 LOCATE XI,VI :PRINT"," 868 GOSUBI 830 870 LOCATEX-4, Yl :PRINTUSING"MM*" :VAL( "&B "+LEFT$(SL$(YR), 8)) . 888 IFDI=7THEN RETURN 890 LOCATEX+16, Yl :PRINTVAU "&B"+RIGHT$(S L.$(YR), 8));" ":RETURN 908 REM END GESTIONE CURSDRE 910 928 ' MMMMMMMMMMMMMMMMMMMMMMMM 930 'M ROTAZIONE MATRICE M 948 'MMMMMMMMMMMMMMMMMMMMMMMM 958 960 DM=DI+l 970 FDRRI=0TODI 988 ST$(RI)=Z$ 990 FDRCO=0TODI 1008 MID$(ST$(RI), DM-CO, 1 )=MID$(SL$(CO), l;1:I+1, 1) 1818 NEXT :NEXT 1828 FDRRI =8TOD I 1838 SL$(RI)=ST$(RI) 1848 NEXT 1858 GOSUBI838 1868 GOSUBI548 1878 RETURN 1888 REM FINE ROTAZIONE 1890 1188 ' MMMMMMMMMMMMMMMMMMMMMMM 1118 'M NEGAZIONE MATRICE M 1128 ' MMMMMMMMMMMM*MMMMMMMMMM 1138 1148 I FD I =7THENN=255ELSEN=-1 1158 FOR RI=0 TODI "&B"+SL$(RI))) 1168 R$=BIN$(N-VAU 01+1) 1178 SL$(RI )=RIGHT$(2$+R$. 1188 NEXT 1198 GDSUB1838 1288 GOSUBI540 1218 RETURN 1228 REM FINE NEGAZIONE 1230 1248 'MMMMMMMMMMMMMMMMMMMMMMM 1258 'M INVERSIONE MATRICE M 1268 'MMMMMMMMMMMMMMMMMMMMMMM 1278 1280 FOR RI=8TODI 1298 R$=Z$ 1388 FOR CO=0TODI ,DI+l-C 1318 MIO$(R$, CD+l, 1 )=MIO$(SL$(RI) 0,1 ) 1320 NEXT 1330 SL$(RlJ=R$ 1340 NEXT

1358 GOSUBI838 1368 GDSUBI540 1378 RETURN 1388 REM FINE INVERSIONE 1398 1480 'MM**MMM*M**MM*MMMMMMMM* 1418 'M CANCELLA MATRICE * 1420 '*M**MMM***MMMM*MMMMM**M 1430 1440 ERASE SL$:DIM SL$COI) 1458 FORRI=0TODI :SL$(RI )=Z$ :NEXT 1468 Xl=)(:vl=Y 1470 GOSUB1730 1480 GOSUBI830 1490 RETURN 1508 REM FINE CANCELLA MATRICE 1518 RETURN 1528 1538 '*MMMMMM***MMMMMMMMM*MMM 1548 , M AGGIORNA V IDEO * 1550 , MMMMMMMMMMMMMMMMMMMMMMM 1560 1578 FORRI=8 TO DI 1588 R$=SL$(RI) 1590 LOCATEX, Y+RI 1600 RI$='''' 1618 FOR CD=! TO 01+1 1620 IF MID$(R$. CO, 1 )=" 1"THENRI$=RU+"I" ELSE RI$=RI$+"·" 1630 NEXT 1648 PRINTRU 1650 IFDI=15THENI680 1660 LDCATEX-4, Y+RI :PRINTUSING"MMM" :VAL( "&B"+R$) 1678 NEXT: RETURN 1680 LOCATEX-4, Y+RI :PRINTUSING"MMM" :VAU "&B"+LEFT$(R$, 8)) :LOCATEX+16, Y+RI ;PRINTU AU "&B"+RIGHT$(R$, 8));" 1690 NEXT 1700 RETURN 1710 1720 , *MMMMMMMMMMMMMMMMMMMM 1738 , M DISEGNA MATRICE M 1740 , MMMMMMMMMMMMMMMMMMMMM 1750 1768 FORRI=0 TODI 1778 LOCATEX-4, Y+RI 1780 PRINT" e "+SC$+" 0 1790 NEXT 1880 LOCATEXT, YT Invert 1810 PRINT"Rota.te Mirror Cledr" 1820 RETURN 1830 1840 , MMMMMMMMMMMMMMMMMMMMM 1850 , M STAMPA SPRITE M 1868 , MMMMMMMMMMMMM**MMMMMM 1870 1880 55$="" lB98 FORRI=0TDDI 1900 SS$=SS$+CHR$CUAL( "&B"+LEFT$(SL$(RI)

-

, 8)))

1910 NEXT 1928 IFDI=15THENI960 1938SPRITE$(I)=SS$ 1940 PUT SPRITE0,(60,72).15.1 1958 RETURN 1960 FORRI=0TODI 1970 SS$=SS$+CHR$CUAU "&B"+RIGHT$(SL$(RI ) ,8)))

1988 1998 2800 2010

NEXT SPRITE$C\ )=55$ PUT SPRITE8,(24,70).15,1 RETURN

MCmicrocomputer

n. 40 - aprile 1985

Profile for ADPware

040 MCmicrocomputer  

Aprile 1995

040 MCmicrocomputer  

Aprile 1995

Profile for adpware
Advertisement