Professional Documents
Culture Documents
Input 10
Input 10
25 OR VO>INT v THEN GOTO 1060 1090 LeT 2qv: DIN a(z) 1100 FOR kel TO z 1110 LET wS="DIGITE DADOS PARA "+5TRS kt" ": GOSUB 500 1120 LET a(k)-v 1130 PRINT k.a(k) 1140 NEXT k: LET 91: PAUSE 50 RETURN 2000 REM **ROTINA PARA EDICAO D E papos** 2010 BORDER 2: PAPER 2: INK 7 2020 LET cn=1 2025 CLS : PRINT PAPER 6; INK 2iAT 0, 0;x8,¥S;TAB 31:7 ” 2030 PRINT ¢n,a(cn) 2035 PRINT #1; PAPER 6; INK 2;A 1 0,0;"EDIT para alterar valor corfente Qualquer tecla para co atinuar 2040 PAUSE 0 2050 IF INKEYS="" THEN GOTO 20 50 2060 LET cS=INKEYS 2070 TF cS=CHRS 7 THEN GOSUB 2 500 2080 1f cn=z THEN PRINT. PAPER 6; INK 2;7FIM DOS DADOS": PAUS @ 100; RETURN 2090 LET cnecntl: IF cne21 THEN ‘GOTO 2025 2100 GoTo 2030 2500 LET wS="INTRODUZIR NOVO VA on PARA “*STRE. ent": GOSUB 5 or 2510 LET afen}hi THEN LEB hina( x) 3040 IF a(k) -.00 REN LET n=0 3340 LET ns=sTRS n 3350 PRINT AT de, (6-LEN AB) in 3360 LET dc=ac+2 3370 Next n 3400 LET ink=1 3410 FOR nel To z 3420 LET ca-org 3430 LET ink=ink+l EN LET ink-2 3440 INK ink 3450 FOR m-1 TO (a(n)*ft) STEP SON a(n) f 3460 PLOT see (noi) sud*B, em: DBA w wa! PLO ner FRO TF ipkes TH 3490 NEXT n 3500 IF INKEYS<>"* THEN 500 3510 IF INKEys-"* THEN GoTo 35 io 3520 RETURN 4000 REM **GRAFICO EM TELA CHET ate 4010 BORDER 0: PAPER 0: INK 7 Lge: LET hi=0: LET 10-0 4020 FOR n=1 TO 2 4030 1F a(n)>hi THEN LET hi-a( n) 4040 1f a(n) estueniog0 1100_DIMVAWBR) PRIN PRINT Lee 8 INPUTVA (I) 1130 NEXT:007010 2000 IFNB2-OTHENLO 2010 GosuBis0 2020. TFSGN (HI) <>SGN (LO) THENHT=A BS (111) +ABS (LO) :GOTO2050 2030 HT=ABS ( (SGN (HI) =1) XABS (HI) (SGN (LO) ==1) *ABS (LO) ) 2040 IFHT-OTHENIO 2050 A~2*INT ((180-34NBE) /NBE/2) $8=3:E8"150/HT 2060 TFA>15THENA~15 2070 IFLO>~OTHENY=15:coT02100 2080 IFHI<=0THENY=5 :GOTO2100 2090 Y=INT (80+ (ABS (HI) ~ABS (LO) ) xES/2) 2100 SCREEN2:COLOR 15,4,4:P-61 2110 LINE (55,5)~ (55,158) :LINE (S2,¥)~(250,¥) 2120 FORT=1ToNBt 2130 LINE (P,¥-SGN(VA(I)))~(P*A SINT (¥- (A(T) *ES))) ,6,BF 2140 P=P+S+a:NE: 2150 OPEN "GRP: " FOR OUTPUTASS 2 2160 PRESET(O,3) 2170 FORI=1T0LEN (YS) 2180 PRINTEL,TAB(1)MIDS (¥S,I,1) NEXT 2190 PRESET (170,160) 2200 PRINT#L,xS 2210 IFSGN(LO) <>SGN (HI) THEN2250 2220 PRESET(0,¥) :PRINT#1, TAB (4) an 2230 PRESET(15, 155+ (150% (HI>0)) ) :PRINT#1, LO* (~ (SGN (LO)==1) ) +8 * (= (BON (HI) =1)) 2240 GoTo 2270 2250 PRESET (15,155) :PRINT#1,LO PRESET (15,5) :PRINT#L, HI | 5 APLICACOES 5 i5 APLICAGOES 5 — 2260 PRESET(0,¥) :PRINT#1,TAB(4) DE BARRAS,VER / EDITAR DADOS. F 1070 IF NBt > 65 THEN 1060 "or IM DE PROGRAMA 1080 DIM VACNBR) 2270 cLose 30 TAB 3; HTAB 8: PRINT ‘ME 1090 PRINT : PAINT 2280 IFINKEYS=""7HEN2260 Nu PRINCIPAL 1100 FOR T = 1 TO NBR 2290 SCREENO:GoTO10 40 FORT = 1704 1110 PRINT “VALOR DA BARRA *:I 5000 1FNBe-0THENLO 50 READ MS b_ INPUT VA(I) 3010 CLS:LOCATE1O:PRINT“MODULO 60 HTAB 10: VTAB2™ I + 8: PR 1120 NEXT : GOTO lo DE EDICKO" Int 1;7= "iM. 2000 IF NBt = 0 THEN 10 3020 PRINT:PRINTBARRAT, “VALOR” 70 NEXT. 2010 GosvB 110 3030 FORJ=1ToNBE 80. PRINT : PRINT ; HTAB 20: PR 2020 IF SGN (HI) < > SGN (L 3040 PRINTJ,VA(I) INT "OPCAO =>": 0) THEN HT = ABS (HI) + ABS ( 3050 IFINT(J/17)=J/17THENGOSUB3 90. GET RS: TF RS < "1" OR RS > LO): GOTO 2050 090 "a" THEN 90 2030 HT = ABS (( SGN (HI) = 1) 3060 NEXT 100 ON. VAL (RS) GoTO 1000,200 * ABS (HI) + ( SGN (LO) = - 3070 GosuB3090 0, 3000,.4000 1) * ABB (LO) 3080 GoTOLO 110 Lo"= Va.) ar = vac) 2040 IF ur = 0 THEN 10 3090 LOCATEO,20:PRINT*Tecle 120 FORT - 1 TO NBt 3050 Ac 2 INT ((270 - 2.* para editar ou qualquer outea 130 IF VA(I) > BI THEN HI= VA 53) \/ NBR / 2):8 = 2:E5 = 150 / tecla para continuar” @ i 3100 RSTINKEYS TFRS=""THENI100 140 IF ACI) ¢ LO THEN LO- VA 2060 If A> 15 THEN A= 15 3110 TPRSCO"E"THENLOCATEO,3:FOR (I) 3070 Ir to > = 0 THEN Y = 155 H-17019:PRINTSPC (40) :NEXT/LOCAT 150 NEXT : RETURN Goro 2100, £0, 3:RETURN 1000 “HOME : IF NEY < > 0 THEN 3080 “rf RT < = 0 THEN Y = 5120 LOCATEO,20:PRINTSPC(79) :LO __VTAB 15: PRINT TAB( 10)"CONF Goro 2100 GatEO,20:INPUT“Qual barra ";B. IRMA? (5/N)";: GET RS: IF RS < 9999 y=" INT (76 + ( ABS (BI) $130 LOCATEO,21:INPUT"Novo valo > "S* THEN 10 208%ee (L0}) * ES / 2) Fr *:vA(B) 1010" HOME: PRINT TAB( 10)"EN 3100" HGR: HCOLOR~ 7:P = 4 5140 T=B:G0suB150 TRADA DE DADOS" Zilo HPLot 2,0-T0 2.158; HPLOT 3150 GoT03090 1020, CLEAR : VTAB 4: INPUT “No 767¥ 79379,¥ 4000 CLS:LOCATE?, 14: INPUTFIM D ME DO EIKO 'X": "ix3 2130 “HcoLoR- 5 E PROGRAMA (8/N) RS 1030 x8 = LEFTS (x5,5): TF X8 3139 FORT = 1 TO NBE 4010 TFRSC>"S"THENLO = 7" THEN XS = "EIXO-X” sao Won SS LTO A 1040 etme eons 2150 HPLOT 3+ P.Y SGN (VAC 1050 ve = Lerre cvs.5): rf vs 122,30,2,* Pe NF (Y= ACD aO5* THEN YS = "EIXO“Y" ena 10 HOME : RESTORE i060 PRINT : INPUT “NUMERO De 7160 NEXT :P - P + 8 * A: NEXT 20 DATA ENTRAR DADOS,GRAFICO BARRAS: ";NBt 2170. VTAB 21 ; TAB( 34) 349. 2180. vTAB 22 UAL MAX=" HT; VAL MIN=";L0 2190. PRINT TAB( 5) ;"PRESSIONE ‘QUALQUER TECLA PARA SAIR™; 2200. GET RS: TEXT : GOTO 10 3000 IF NBt = 0 THEN GOTO 10 3010 HOME : PRINT TAB( 10)"MO DULO DE EDICAO" 3020 PRINT : PRINT "BARRA™."VA oR” 3030 3040 3050. IF osu 3090 3060 NEXT 3070 Goss 3090 3080 GoTo 10 3090 vTAB 21 TAB 1: PRINT XS PRINT * PRINT ~ RTAB 10 RTAB 25, FOR J = 1 70 NBE PRINT J,VA(J) PEEK (37) = 20 THEN RTAB 1: PRINT °T ECLE PARA EDITAR OU QUALQUE R OUTRA "h: GET RS VIAB 4 ETURN 1100 UTAB 22: TAB 1 ‘TECLA PARA CONTINUAR IF BS <> "E* THEN BAB 1: CALL PRINT "FIM DE PROGRAMA? ";: RS: IF RS < > "8" THEN 10‘CCC PL 2 PRoGeamacio asic 12 CRIE SPRITES NO MSX Entre os varios recursos gréficos do MSX, o sprite destaca-se poor servir de base ao funcionamento da maioria dos jogos de acdo Veja como é facil usdto Um sprite é um tipo especial de carac: tere grafico definido pelo usuario, dese nhado em alta resolugo ¢ extremamen. te facil de movimentar, Alguns exemplos de seu uso jé foram vistos em artigos an. teriores. Além da mobilidade, 0 sprite tem outras caracteristicas especiais, tais como a possibilidade de definir e movi ‘mentar mais de um sprite e de indicar se houve colisio na tela — ou seja, se dois sprites coincidiram no mesmo ponto. Nao surpreende, portanto, que os sp {es estejam presentes na maioria dos pro- gramas de jogos. Mas so, também, uti lizados em qualquer tipo de programa que necessite de figuras méveis em alta resolugao — por exemplo, programas fi- nanceiros que empreguem um “icone (simbolo apontando para as op¢oes). Peon ad O desenho de um sprite & definido informando-se ao computador quais pontos devem ser “‘acesos” e quais de- Vem ser “‘apagados", para que se obte. nha o padrao desejado. Existem dois ta manhos de sprite: pequeno (8x8 pontos) e grande (16x16). No decorrer deste ar tio, trataremos apenas dos sprites gran Um sprite grande ¢ formado por de zesseis linhas de dezesseis pontos cada. Em ver de se definir, ponto por ponto, quais sero acesos ou apagados, retinem-se cada oito pontos em um gru- po. Assim, a informagdo sobre o padrao de uma linha do sprite é armazenada em dois grupos de oito pontos cada. Atribuindo-se 0 algarismo ‘‘1"” para os pontos acesos e *0" para os apagados, cada grupo de oito pontos se transfor mard em um mimero bindrio (byte de 8 bits) que, convertido para a forma de cimal, dard origem a um numero entre e255, Cada sprite, portanto, ¢ forma- do por 32 grupos de oito pontos, 32 ni metos bindrios de oito digitos (8 bits ou I byte) ou, simplesmente, 32 nimeros. niimeros sao agrupados em uma li- nha DATA, ordenados como descrito adiante. Caiculam-se da mesma maneira 0s valores para sprites pequenos, ja que es sA0 formados por oito linhas de oi to pontos cada, dando origem a 8 bytes A ordem dos bytes no sprite € a se- guinte Linha 1: BYTE | BYTE 17 Linha 2: BYTE 2 BYTE 18 Linha 3: BYTE 3 BYTE 19 € assim por diante até que: Linha 15: BYTE 15 BYTE 31 Linha 16: BYTE 16 BYTE 32 sendo que os bytes foram numerados na ordem em que aparecerdo na linha DATA. Uma orientacdo para o célculo des: tes valores, uma vez definido © padrio grdfico para o sprite, ¢ dada na figura da pagina 190. Por meio do exemplo, voce teri uma idéia de como obter 0 va. lor decimal correspondente a um gru- po de oito pontos. Se todos os pontos estiveremeacesos, 0 valor decimal sera