You are on page 1of 24
Neon 7 Macc Luan acon We 13) cu Mt mM MM ial Ga PROGRAMAGAO BASIC - PROGRAMACA@ mi Worcs ANG — Gi 2232 2 = NUMERO BOMBARDEIOS E EXPLOSGES Explosées e incéndios so parte integrante de mui: tos videogames de aco. Aprenda a reproduzir es: ses fendmenos no video do computador. Um pro- grama simples de bombardeios aéreos ..... 121 OS COMANDOS READ E DATA Como fazer com que o micro leia dados armaze nados internamente em declaragdes DATA, evi tando a digitagdo de longos e exaustivos progra- mas. Veja como utilizar essa técnica para a reali- zago de gréficos, listas, indices e muitas outras coisas 128 PONHA ORDEM EM SUAS CONTAS Use seu micro para fazer cAlculos e manter regis- tros financeiros. Nisso, ele 6 téo bom quanto os grandes computadores comerciais. Atualize os re- gistros, verifique 0 balanco e imprima os resulta- PLANO DA OBRA “INPUT” é uma obra editada em fasciculos semanais, e cada conjunto de 15 fasciculos compoe um volume. A capa paraenca- dernagao de cada volume estara a venda oportunamente. COMPLETE SUA COLECAO Exemplaresatrasados at seis meses aps o encerramentodacoleo, poderdo ser comprados, a pregosarualizados, dasequnte forma: I. Pessoalmente po? Incie deseu jomnaleiro ou drgindo sao distibuido local, eujoenderesa po der ser facilmenteconseguido juno a qualquer joralere de sua cidade Em ‘Sto Paulo osendereros sto Rua Brigaetro Tobias, 773 (Centro); Av Industral. 117 (Santo Andrée no Rode Janeror Rua da Passagem 93 (Botafogo). 2. Por ‘carta — Poderdosersolctados exemplars atasados amide por carta, que deve Ser enviada para DINAP — Disiribuidor Nacional dePublicagBes— Nimes Arasados — Estrada Vea de Osasco, 2 Uargim Tereza) ~ CEP 06000 — (Osasco— Sio Paulo. 3. Por telex ~ Uulze on? (Ol) 33670ABSA. Em Portw- igal.ospedidos deve ser feos Distibuidors Jardim de Publica Ltd. — (Gta, Pau Varais Azinhaga deFetais 268, Cemarate Lisbou; Te. 257 2502 wNanarado ST ~ Telex $3069 JARLISP. ‘Nao eve pagameno areca, O atendimentc ser eo peo remboso postal ‘opagamentoincluindo as despesas posta, deverd ser efetuad apse eiar ‘Lencomendana Agénca de Cora, Alenlo: Apossesteses do encerramen.o Aa coleedo, os pedidosserao atendidos, dependendo da dsponitidade dees ‘gue. Ob: Quando pediios,mencionesempre o ilo eu cautor da obra, lem do nimero da eid. COLABORE CONOSCO Encaminhe seus comentarios, criticas, sugestdes ou reclamagdes a0 Servigo de Atendimento a0 Leitor — Caixa Postal 9442, dos 134 Sao Paulo — SP. ater veToRCVTA wepacio Direlr Eater i ngs Batre a ce Ais Editor dere: Cliio AV Cavan Edterde Arte Cs faro (hele Ate Crs Batts ‘Aas de re At ve Lope hay M Sats, ‘es Marae Olvera Grace Ara, Moni enon Cord Secreta de eda Coordenadors: Sina Cena Secrets e Redo: eas agsom Jos Beestc de pea Cait Mara de Louies Cava Marsa Ses de Anrde Maur de Que ‘Steel Gre: sb nie ‘COLABORADORES ‘ona teri Repose seats ME Sas {near GoNsen eras Bona Ela tr DAO HIST Aseserseminenica 1 Cops Trdg ia ear att fore Ani Dns Santander foc deco Gorden een Seti Ashen ere Dag Ss Spe comenctat Dtr Camera ter rie (Geren Coercive Maun Geren Creag ens hiraora PRODUCIO Prepradr de Tete ordenador Fil Sera Preparadore de Tetra Mara Dgueran. Ani Faneod: Over arta Ap Veh Leon ie. Nar Tees alu Fas ee Menge Resor Coordensor bse are Ass Reisora Conte Ape abe belted (Canara Lip Ape Ren Mt Crome ore Mara ata Stes Mara ees Lope. Marshall Cavendish Limited, 1984/85, © Ealora Nova Cultural da, Sto Paulo, Bal, 1986. Edigaoorganizada pla Editora Nova Cultural Lda (Aigo 15 da Lei 5988, de 14/12/1973) Esta obra foi compostana AM Prox Gries Lida empresa na Divisio Pairs Abel. 6 PROGRAMACAODEJOGOS 6 BOMBARDEIOS E EXPLOSOES COMO CRIAR FLASHES NA TELA UM PROGRAMA SIMPLES DE CA aM, CHAMAS E EXPLOSOES Faga de seus jogos de a¢éo um eletrizante passatempo, aprendendo a obter efeitos gréficos de explosées @ incéndios na tela do micro. & relativamente fell torn gramas de jos0s mais esp Emocionantes:para isso, basta especiis, E elas nao precisam ser mic dinamismo bem diferente, muitas maneiras de produzir efeitos vi suais em BASIC. E preciso apenas sa ber usar 0 tipo certo de efeito para o jo- 0 que esti sendo programado. 5s efeitos graficos par plosdes explicados aqui sao a a todos 0s tipos de jogos que fa destruigado de objetos como ¢: ges, carros, avides, tanques, na etc, Alguns deles ficarao stimos também em jogos espaciais. nretanto, como os efeitos alvo sobre 0 qu tringido pelas dimen: Isso significa que adiciona-los a um programa qualquer; pelo contrario, essa incluso deve ser cuidadosamente planejada. Por outro lado, muitos computado. res t@m comandos idos no BASIC que permitem a o} de flashes (in- versio répida de cores no video), que sio suficientes para muitos tipos de jo: gos, como os de guerra espacial, ¢ que exigir adapta 30 determinado. Vamos mostrar aqui como micros compativeis com o Sine trum (como 0 TK-90X), o efeito visual de um incéndio provocado pela explo- so de uma bomba; depois de ir rom- pet fortemente, 0 fogo se extingue gra- dualmente, desaparecendo da tela & me- dida que o prédio desaba. Isso sera ex- Plicado mais adiante. Mas, primeito, precisamos de um avido e'de uma bomba. Portanto, digi- te 0 programa abaixo: 10 FOR NeUsA "Pp" TO UsR “a"47 20 READ a 30 POKE nia 40 Next 50 DATA 16,32 60’ DATA 0,16,16,120,28,28,0,0 Usamos aqui a técnica convencional de locos griticos definidos pelo usud- rio (UDG), disponivel no Spectrum. As- sim, criamos imagens tanto para o avido quanto para a bomba, armazenadas em uma area especial, detinida pelos ende- repos devolvidos pelas expressOes USR “3p” © USR “q"” na linha 10. Os céd g0s correspondentes estao nas declara ges DATA das linhas 50 60, ¢ sfio co- Tocadas na meméria com o POKE da li- nha 30. Ao rodar o programa, nada acontecera de inicio. Para verificar se os cédigos gréficos em DATA foram digi- tados corretamente, digite a linha de co- mando abaixo (sem precedé-la com um nimero de linha) PRINT AT 10,15;CHRS cHRS 160 — que mostrara na tela os dois blocos Bgraicos definidos Em seguida, vocé precisard de um prédio ou casa’ para bombardear. Nao ha necessidade de um novo programa para isto. Apenas modifique as linhas 10 e $0 do programa anterior. 10 FOR NcUSR "r” TO USR "F747 20 READ a 30 POKE na 40 Next 1 $0 DATA 255,153,255,153, 255, 153,255,255 Execute 0 programa de novo e teste- ©, digitando esta linha (novamente, sem colocar nimero de linha antes): PRINT AT 20,15; CHRE 161 Tendo ficado satisfeito com o resul- tado visivel na tela, digite NEW para ‘apagar o programa da meméria. Os blo- 0s graficos definidos antes ficardo ar- mazenados na meméria RAM do com- putador, a menos que vocé o desligue. Mie 32,16, 136,154,155.8, 159s" 75 Entre agora o programa do bombar- 1020 POKE 23675,n B.- por meio das linhas seguintes: 1030 PAUSE 50 (6 Programacéoneiocos 6 10 BORDER 0: PAPER 5: INK 0: CLs 20 LeT as: cs 200 PRINT PAPER 4;AT 20,0;a8; a as 210 PRINT INK 1;AT 19,12;CHRS 161; CHRS 161;cHRs 161 ‘O queestas linhas fazem, como voce vera ao executd-las com 0 comando RUN, ¢ apenas desenhar ama faixa ver- de, com dezesseis pixels de altura, na parte de baixo da tela; sobre ela ergue- Se um armazém ou coisa parecida. A forma como isso ¢ feito ilustra bem 0 uso de varidveis alfanuméricas no tra- balho com gritficos. ‘Como vocé precisa de 64 bloguinhos coloridos de verde para fazer 0 terreno gramado, a linha 20 coloca em aS uma seqiiéncia de dezesseis espacos em bran- co. Em seguida, a linha 200 a imprime na tela quatro vezes, comegando na li- nha 20 e prosseguindo na linha 21. Isso economiza a digitacao de 64 aS} ‘A construcdo é colocada na tela por meio de um quatro PRINT do caracte- re grdfico de cédigo 161 (que é 0 asso- ciado a tecla r, no computador, confor- me a definiao no programa anterior). Para fazer 0 avido voar, s6¢ preciso incluir no programa as seguintes linhas: 215 PAUSE 100 220 LET ay=6: LET by-ay 230 FOR x-0 TO 30 240 PRINT AT ay.x;" ";CHRS 159 250 LET bx=x 260 IF by<19 THEN PRINT AT by +L sbx#L;CHRS 160;AT by.bx:" * 276 Let by-by+1: LET bx-Dx+ 280 TF x29 THEN PRINT AT ay, eats 290° NEXT x Nao existe nada de incomum nessa segio do programa: apenas as técnicas convencionais de movimentacdo de um bloco grafico na tela, que temos usado em praticamente todos 0s programas de jogos para o Spectrum. Observe, entre- tanto, que as linhas 240, 260 ¢ 280 sao necessérias para apagar as tltimas po- sigdes do avido ¢ da bomba, a medida que estes so deslocados pela tela, ‘Vamos agora & parte mais importante do nosso exercicio de programaca explosio. E mais facil vé-la na tela do que tentar descrevé-la Portanto, antes de entrar o restante do programa, digite as linhas abaixo: 1000 FOR n=88 TO 80 STEP -) 1010 PRINT AT 10,15;CHRS 150 \ 1040 Next n 1050 sToP Mas, espere: ndo digite 0 comando RUN, ainda. Vocé poderia destruir a parte do programa que ja foi digitada. Ao invés disso, digite RUN 1000, para ‘comegar a executar 56 essa parte do pro- grama. Vocé vera entao uma letra G aparecer na tela e depois esvanecer-se gradualmente, até ser substituida pela le- tra F. Isso acontece porque 0 lao FOR...NEXT, que vai da linha 1000 1040, diminui de um em um o valor ar- mazenado na locagio de meméria 23675, que é 0 ponto inicial para 0 seu bloco grafico UDG. Assim, a letra exi- bida na tela retrocede gradualmente no alfabeto, O programa de explosdo usa um tr que semelhante. Para fins de seguranga de seu programa, digite: POKE 23675,88 que restaura o valor original do nime- Fo armazenado na locagao de memoria indicada. Em seguida, apague todas as linhas de 1000 a 1050 e digite o restamte do programa de bombardeio: 90 POKE 23675,88 100 FOR n=0 TO 31: READ a: POKE USR “a"+n,a: NEXT n 300 FOR e=88 TO 80 STEP 310 POKE 23675, 320 PRINT INK’ 2;AT 19,12;CHRS 145 ;CHRS 147;CHRS 145: PAUSE 6 330 PRINT INK 2;AT 19,12;CHRS 147 ;CHRS 145;CHRS 147: PAUSE 6 340 NEXT € 400 POKE 23675,86 500 GoTo 210 8000 DATA 0,0,0,0,0,0,0,0,2,128 25,126,126, 255,255,255 9000 DATA 0,0,0,0,0,0,0,0,4, 33. 144,66, 231,255, 255, 255, As linhas 100, 8000 ¢ 9000 definem 105 UDG que voc® precisa para explosao. A linha 100 Ié os dados contidos nas li- rnhas 8000 e 9000, com os codigos mu: méricos das partes dos graficos ¢ 0s co- loca na memGria através do POKE. As linhas 300 e 340 usam a técnica descrita anteriormente para retirar uma imagem substitu-la por outra. Existe, entretanto, uma diferenca muito importante. Os UDG que criam a explosio sdo baseados nos caracteres grificos Be D — respectivamente, GHRS 145 © 147. A medida que cles rem desaparecendo da tela, voce ndo vai querer que eles sejam substituidos por outras letras do alfabeto. Assim, 0s pri ‘meiros oitos elementos de cada declara~ cdo DATA, representando 0s caracteres Ae C — CHRS 144 e 146, respectiva- mente — sao todos zeros, Deste modo, ao invés de obter Ae C substituindo Be D na tela, voce obtém espagos em branco. Se voc’ quiser ver como isto funciona em "‘cémara lenta”, inclua a linha abaixo (ndo esqueca de retiréla, depois): 335 PAUSE 100 A linha 400 é necessaria, evidente- mente, para restaurar o valor original da meméria 23675, que era 88, antes ‘que 0 programa se’repita de novo. (Os computadores compativeis com essa linha tém excelentes recursos para a obtengdo de efeitos visuais dramaticos, usando programas bastante curtos. Ten- te digitar e executar o programa abai- PMODE 3,1 PcLs FOR Fei 70 1000 SCREEN 1,0 SCREEN 1,1 NEXT F cus. Observe que 0 programa coloca fai- xas coloridas que migram através da te- Ia; esse efeito ¢ causado pela alternin- cia super-répida dos diferentes conjun- tos de cores no computador. Ele pode ser usado, entre outras coisas, para as- similar 0 fim de uma fase do jogo, co- ‘mo uma blindagem que foi penetrada. ‘0 modo grifico ¢ definido pela linha 7980, ea seguir a tela gréfica é limpa pe- la linha 7990. A linha 8010 liga um con- junto de cores, enquanto a linha 8020 religa © conjunto. anterior. O lago FOR... NEXT nas linhas 8000 e 8030 al- terna os conjuntos de cores em 1000 vezes. A alternancia liga e religa os conjun- tos de cores muito rapidamente — to rapidamente, na verdade, que 0 apare- Iho de TV nunca tem tempo de mudar as cores na tela completamente antes de entrar em ago 0 outro conjunto. Co- mo conseqiiéncia, apenas uma faixa es- treita da tela é mudada para cada cor. Se vocé pretende utilizar esse progra- ‘ma na forma de uma sub-rotina dentro de outro jogo (no qual funcionaré ape- nas com um dos comandos PMODE descritos na pagina 144) ou com 0 pro- grama de batalha espacial apresentado a seguir, terd que fazer algumas altera- Oes. Primeiro, apague as linhas 7980 7990; em seguida, adicione a linha: 8500 RETURN ‘Veja agora 0 programa a seguir: 10 PMODE 1.1 20 DIM A(3} .B(3) ,M(3) 200 FoR K=1536 TO 2016 STEP 32 210 READ A,B: POKE K,A:POKE K+) 3 220 Nex 230 GET(0,0)~(15,15) .A.6 240 GET(0,16)-(15, 31} ,.m.¢ 250 PCLS 260 MX=120:M¥=191: PX~120: P¥=20 270 PUT (PX, PY) ~(PX#15,PY+15) .A :PSET 280 SCREEN 1,0 290 PUT (MX,MY)~(MX+15,MY+15) ,B :PSET 300 myemy-4 310 IF MY<36 THEN GosUR 8000:co 70 260 320 PUT (MX,MY)~ (Hx+15,MY+15) 1PSET 330 coro 290 9000 DATA 252,63,3,192,15,240,6 1,124,58,172, 245,95, 213,87,213, 37 9010 DATA 0,128,0,128,0,128,2,2 60, 10,168,0,192,3,240,15,60 programa mostra uma nave extra- terrestre na iminéncia de ser atingida por um missil. No momento que este alcan- a0 alvo, entra em aco a sub-rotina de- finida anteriormente, que move faixas coloridas pela tela. Quando usado’ com a sub-rotina, cle Yaz faixas com qualquer PMODE ‘que se queira, de modo que pode ser i cionado ao final de um programa, sem {que seja necessdrio alterar as linhas 8000 a 8040. Eis aqui uma adaptagdo do progra- ‘ma para fazer faixas que resulta em um efeito visual mais elaborado, embora os grdficos na tela ndo permanecam into- cados como anteriormente. Voce pode digité-lo e executé-lo do jeito que esta, ou incorporé-lo a um outro programa — como 0 da animagao da nave espa- cial — na forma de sub-rotina. Neste ca- so, vocé precisaré alterar o programa, japagando a linha 7990 e adicionando ao final uma linha com comando RE- TURN como foi feito anteriormente. 7990 PMODE 3,1 8000 FOR F-1 To 3 8010 FOR K-0 T0 1 8020 SCREEN 1,K 8030 FOR J=1 TO 4 8040 PcLs J 8050 NEXT J 8060 NEXT K 8070 NEXT F 8080 cLs Sob a forma de sub-rotina, ele func nara em qualquer um dos modos gra ‘cos com conjuntos de duas cores (PMODE 0, 2e4) ede quatro cores (PMODE 13). Além de mudar os conjuntos de cores, aro- tina também limpa a tela. ‘Aslnhas 8030 a 8050 sum lagoFOR.... NEXT que colore a tela com as cores dis- poniveis no conjunto ativo, ‘Uma tiltima variagao do programa: 7990 PMODE 3,1 FOR ‘SCREEN 1,0 FOR Kel TO 200: NEXT K 8030 SCREEN 1,1 8040 FOR K=l TO 200: NEXT K 8050 NEXT F 8060 CLS ‘Vocé pode escolher entre digité-to as- sim como esta (como um programa au- t6nomo) ou na forma de sub-rotina (di gitando a linha 7990 e adicionando um comando RETURN ao seu final). A tela piscaré rapidamente, pois as linhas 8020 e 8040 inserem pequenos re- tardos de tempo, dando oportunidade suficiente para a mudanga de cor entre um conjunto e outro. mm Podemos obter efeitos visuais ainda melhores através da programagao de grdficos animados. Bis aqui uma idéia para fazer a animagao grafica das cha- mas de um incéndio, que vocé poderia, por exemplo, superpor a um alvo atin’ gido por uma bomba, O programa foi escrito para o PMODE 1, ¢ ndo pode ser uusado, do jeito que esta, com jogos em outros PMODE. Digite-o e execute-o: 10 PMODE 1,1 20 DIM B(3},£1(3),£2(3) 30 FOR K=1536 To 2016 STEP 32 40 READ A,B:POKE K,A:POKE K+1,B 50 NEXT 60 GET(0,0)~(15,15) £1, 70 GET(O.16)~ (15,31) ,£2,.6 80 SCREEN 1.0 250 PCLS:HX=124:nY=146 8000 FOR Neo 0 15 )10 PUT (HX, HY+N) ~ (HX+15,HY+15 ) 1, PSET 8620’ FOR K-1 To 100:NEXT 8030 PUT (BX, HY+N) ~ (HX#15 ,HY+15 ).82,PSET 8640'FoR Kei To 100:NEXT 8050 PUT (HX, HY4N) ~ (HX+15 ,HY#15 ),B, PSET 8060 NEXT 9000 DATA 0,12,192,0,3,195,63,2 52,63,252, 255,255, 255,255, 255,2 Dois conjuntos de chamas slo colo- cados na tela pelo comando PUT. Os dados para os conjuntos de cha- mas estdo nas declaracdes DATA das li- has 9000 ¢ 9010. Eies so colocados com comandos POKE na tela, com as linhas 30 e 50. O programa esté escrito em uma modalidade grafica de quatro cores. As linhas 60¢ 70 capturam, atra- vés do comando GET, as formas grafi- ‘cas na tela e as armazenam nos conjun- tos El e E2, dimensionados na linha 20. ‘As linhas 8000 e 8060 animam as cha- ‘mas. Quando o programa passa pelo la- 50 FOR...NEXT, 0s conjuntos El e E2 Surgem na tela, e apagam quando se coloca sobre eles 0 conjunto de espagos EEE 2 Re een ne maa eRe. em branco, B, com PUT. topo das cha- ‘mas é abaixado um pouco de cada vez, pelo+N nas linhas com comando PUT. ‘Voc podeusar esse programacomo sub- rotina do programa abaixo, que simula um ‘bombardeio, mas nio se esquega de alte ‘ara linha 20 para como ela aparece no pro- ‘grama: edite-a com 0 comando EDIT ou 20 DIM AC3),B(3) ,H(3) ,B1(3) .£2( 2 200 FOR K=1536 70 2016 STEP 32 210 READ A,B:POKE K,A:POKE K+1, 3 220 NEXT 230 GET(0,0)~(15,15) .A,6 240 GET(0,16)-(15,31) 4. 250 PCLS:LINE (0, 163)~(255,191), PSET,BF 260 fixel24:ny=146:Px- ya mn 270 PUT (HX, BY) ~(HX+15,HY+15) ‘POET 280 SCREEN 1,0 290 PUT (PX, PY)~(PX+15,PY+15).B 1PSET 300 Pxepxe4 310 PUT (PX, PY) ~(PX+15, PY#15) .A, PsET 320 IF PX=20 THEN Bel: Bx=Px+8 Yepy+s 330 IF B=] THEN PRESET(BX, BY) ‘RESET (BX+2,BY) PSET (BX, BY, 4 340 IF BY=i48 THEN GosuB 6000 ¥0:GoT0 250 350 GoTo 290 8070 RETURN 9020 DATA 0,0,2,0,130,128,162,1 60,170, 170,162,160 ,130,128,2,0 9030 DATA 0,3,i2,51,60,243, 255, 255,255,255, 86,149, 86,149 Bis aqui duas versdes que permitirao usar a sub-rotina em jogos programa- dos em outras modalidades grificas (PMODE). A primeira ¢ um programa que deve ser usado com as PMODE 3 4; mude apenas o nimero apropriado. 10 PMODE 3,1 20 DIM B(6} ,£1(6) ,£2(6) 30 FOR K=1536 TO 2496 STEP 64 40 READ A,B:POKE K,A:POKE K+1, 45 POKE K+32,A:POKE K+33,B 50 NEXT 60 GET (0,0)~(15,15),E1,6 70 GET (0,16)-(15,31) ,£2,6 80 SCREEN’ 1,0 250 PCLS:Hx=124:HY*146 8000 FOR N-0 TO 15 8010 PUT (HX, HY+N) ~ (HX+15,HY+15) EL, PSET 8020 FOR K-1 To 100: NEXT 8030 PUT (HX, HY+N) ~(HX+15, HY+15 ),82,PSEr 8040 'FOR Kel TO 100:NExT 8050 PUT (HX, RY+N) ~(HX+15,HY+15) PSET 8060 Next 9000 DATA 0,12,192,0,3,195,63,2 £2-63,252, 285,255,255, 255,255, 9010 DATA 0,48,12,3,195,0,48,12 1252.63, 255,255, 255,255, 255,255, Em segundo lugar, temos um progr ‘ma adequado para uso com PMODE. 10 PMODE 2,1 20 DIM B(6} ,£1(6) ,£2(6) 30 FOR K~1536 TO 2496 STEP 32 40 READ A: POKE K,A: POKE K+16, a 50 NEXT 60 GET(0,0)~ (15,15) .£1.6 70 GET(0,16)- (15,31) ,£2,6 80 SCREEN 1,0 250 PCLS:HX=124:HY=146 8000 FOR N=0 TO 15 8010 PUT(HX, HY-+N) ~ (X15, HY+15) 1 PSET 1020 FOR K=1 TO 100:NEXT 8030 PUT (HX,HY+N)~(HX#15,HY+15 ).82,PSEr 8040'FOR K=1 TO 100: NEXT 8050 PUT (HX, HY+N) ~(HX+15, HY+15) .B, PSET 8060 Next 9000 DATA 2,128, 25,126,126,255, 255,255, 9010 DATA 4,33,144,66,231,255,2 55,255 9020 DATA 0,12,192,0,3,195,63,2 52,63,252,255,255,255,255,255,2 55 Os computadores compativeis com a linha MSX tém excelentes recursos (tais ‘como os sprites), para se conseguir efei- tos visuais dramaticos, usando-se pro- ‘gramas bastante curtos. Tente digitar € executar 0 programa abaixo: 7990 SCREEN O:xEY OFF 8000 FOR F=1 70 300 8010 COLOR 10,10,10 8020 COLOR 4,4,4 8030 NEXT F 8040 COLOR 15,4,4 (© modo de texto da tela ¢ definido pela linha 7990 (SCREEN 0). A linha 8010 estabelece uma cor de fundo (10) para a tela, com a mesma cor de mol- dura e de frente (por isso todos os ni- meros sio iguais); a linha 8020 espe: cca um segundo conjunto de cores para a tela, O lago FOR...NEXT nas linhas 8000 ¢ 8030 alterna 0s conjuntos de co- res trezentas vezes. A linha 8040 volta tudo a situagdo original de cor da tela, antes de interromper 0 programa (se vo €& interrompé-lo usando as teclas , antes de termi- nar 0 lago de repeticdo, terd que digitar pelo teclado, ou com a tecla FI, 0 co- mando existente na linha 8040). ‘Como a alternancia das cores é m to rapida, apenas uma faixa estreita da tela € mudada para cada cor. Esse efei- to 6 pode ser conseguido, no MSX, com a tela de texto. Podemos introduzi- Jo como fase final de um programa de animagdo grdfica. Acrescente as seguin- tes linhas ao program 10 SCREEN 2.2 200 FOR K-1'To 24 210 READ A:READ B 220 ASASTCHRS (A) :85~1 230 NEXT 240 AS: SPRITES (1) -BS 250 31 260 PX-120:PY-20 270 PUT SPRITE 2, (PX.PY) 280 PUT SPRITE 1, (HX,MY) 290 PUT SPRITE 1, (HX,MY) 300 MYonY-4 310 IF M¥<36 THEN GoTo 7990 320 PUT SPRITE 1, (HX.HY) Goro 290 S+CHRS (B) 8050 RUN 9000 DATA 252,0,3,0,15.0.61.2,5 8,10,24,5,0,213,3, 213,15 9610'DATA’0,0,0,0,0,0,0,0,0,0,0 20,0,0,0,0 $020’DATA 63,128,192,128,240,12 8,124,160,172,168,95,192,87,240 187,60 Os dois objetos a serem movimenta- dos na tela (um missil e uma nave) so definidos pelos cédigos graficos das li- rnhas 9000 a 9020, montadios nos sprites Te2. As linhas 270 e 290 colocam esses sprites na tela, animando 0 sprite | (0 missil) através do ciclo repetido entre 290_ 330. ‘Quando o missl atinge a nave (linha 310), 0 programa de efeito visual de fai xas comecando em 7990 é acionado. A linha 8050 manda executar o programa 39 principal desde 0 comeco, em virtude da necessidade de redefinicao da tela gré- fica na linha 10. Em seguida, temos uma adaptacao do programa para fazer faixas. Vocé po- de digité-lo e executé-lo como esta, ou adiciond-lo a outro programa, como 0 da animagdo da nave espacial. 7990 SCREEN O:KEY OFF 8000 For Fi To 15 8005 FOR Kel TO 15 8010 COLOR F.K,x 8020 Coton K.F,F 8025 NEXT K 8030 NEXT F 8040 COLOR 15.4.4 8050 RUN As linhas 8000 a 8030 formam dois lagos FOR...NEXT que colorem a tela com cores disponiveis na tela do texto MSX, A titima variagao do programa é: 7990 SCREEN 0:KEY OFF 8000 FOR Fel TO 5 8010 CoLoR 4,10,10 8015 FOR Kel" T0'150:NEXT K 8020 COLOR 10.4.4 8025 FOR K=1" 70'150: 8030 NEXT F 8040 COLOR 15,4,4 8050 RUN A tela pisca rapidamente, em cores porque as linhas 8015 e 8025 inserem pe- quenos retardos de tempo, dando opor- tunidade para o video mudar de cor en- tre um conjunto € outro. Efeitos visuais ainda melhores podem ser obtidos através da programacio de sprites nos graficos animados, Eis aqui uma idéia para fazer @ animagio grafi- ca de um incéndio. © programa foi escrito para a tela grafica SCREEN 2. Esse comando tam: bém € usado para definir 0 tamanho do sprite. Digite o comando NEW e entre as seguintes linhas: 10 SCREEN 2,2 FOR Kel 70 32 ‘40 READ A:READ B 45 AS~AS+CHRS (A) :BS=BS+CHRS ( 50 NEXT, 60 SPRITES (2)-AS 70 SPRITES (1) ~BS 25 SPRITES (0) “STRINGS (32,255) 250 HX=124:HY=145 8000 PUT SPRITE 0, (HX, HY+16) ,12 8005 FOR N=0 TO 15 8010 PUT SPRITE 2, (BX,BY+N) 6 8020 FOR K=1 TO 100:NEXT 8025 PUT SPRITE 2, (HX, HY+16) 8030 PUT SPRITE 1, (BX,HY+N) ,6 8040 FOR K=1 TO 100:NEXT 8060 NEXT 9000 DATA 0,0,192,12,3,195,63.4 8,63, 252,255,255,255,255, 255,25 5 9010 DATA 255,255,255, 255,255,2 55, 255,255, 255,255,255, 255,255, 255, 255,255, 9020 DATA 12,48,0,3,195,0,252,1 2,252,63,255,255,255, 255, 255,25 5 9030 DATA 255,255, 255, 255,255,2 55, 255,255,255, 255, 255,255,255, 255,255,255, Dois conjuntos de chamas, armaze- nados em sprites de tamanho 2 (ou se- Ja, 16 por 16 pixels), so colocados na tela pelo comando PUT. Os dados pa- Ta 08 conjuntos de chamas estdo nas de- claragdes DATA das linhas 9000 a 9030. Eles sao lidos pelas declaragdes DATA na linha 40 e colocados nas varisveis AS BS, na linha 45. Apds isso, os sprites niimeros 1 e 2 recebem o conteiido des. ses cordées. Um terceiro sprite (um blo 0 grafico uniformemente cheio) tam bém é definido na linka 75. A cor que esse bloco de sprite vai assumir ao ser colocado na tela é determinada pelo co- mando PUT na linha 8000 (no caso, azul, que é 0 cédigo 4). ‘As linhas 80002 8060 animam aschamas. Cada vez que o programa passa pelo lago FOR..NEXT, 05 dois sprites 1 ¢2sA0 colo- cados na tela. O topo das chamas ¢ abaixa- do um pouco de cada vez, pelo +N nas i- ‘has com 0 comando PUT, de modo que dd a impressio de diminuigo do fogo. Esse programa pode ser usado como uma* sub-rotina do programa a seguir, que simu- la. um bombardeio: um prédio & alvejado, Adicione as linhas: 200 210 215 220 230, 240 250 260 0 270 300 FOR K-1 TO 32 READ A:READ B DS=DS+CHRS (A) :ES=ES+CHRS (B) NEXT SPRITES (3) =DS SPRITES (4) =88, LINE (0, 163)~ (255,191) ,12,BF HX=124 !WY=146:PX=0:PY=40:B= PUT SPRITE 4, (1HX,HY) ,9 PX=Px+d 310 PUT SPRITE 3, (PX,PY) 14 320 IF Px=20 THEN BHi:BX=PX+8-B y=py+e 330 IF Bel THEN PRESET (BX,BY) PRESET (BX+2 , BY) :BX=BX+2: BY-BY+2 PSET (BX, BY) , 1: PSET(BX+2, BY) ,1. 340 IF BY=148 THEN PUT SPRITE 4 1 (HX, HY416) :PRESET (BX, BY) : PRES En (Bx+2,B¥) :GOSUB 8000:BY=0:c0 70 250 350 GoTo 300 3070 RETURN 9040 DATA 0,0,0,0,2,12,2,12,130 160,130,60, 162,255,162, 255 9050 DATA 170,255,170, 255, 162.8 5,162,85,130,86, 130,86, 2,86, 2,8 6 9060 DATA 0,3,0,3,0,52,0,52,128 1243,128, 243,160, 255,160,255 9070"DATA 170, 255,170,255, 160,8 5,160.85,128,149, i28,149,0,149, 0,149 Nesse trecho suplementar, mais dois sprites, 3 € 4, sao definidos pelas linhas 200 a 240, a partir dos cédigos grdficos armazenados nas declaragdes DATA nas linhas 9040 a 9070. ‘A linha 250 traca um retdngulo de cor verde (0 chiio gramado); a linha 270 co- loca dentro dele 0 desenho da casa. A animagdo grifica do avido e da bomba caindo é realizada pelas linhas 310 ¢ 350. Na linha 340 é chamada a sub-rotina de- finida a partir de 8000, que recebe um RETURN na linha 8070. « BEE Nao € tao facil criar efeitos visuais no Apple se © compararmos com outros micros. Ao invés de representar 0s de- senhos através de nimeros bindrios con- vertidos para decimais ¢ colocados na meméria de video (‘"1"” representaria ponto aceso, e “0”, ponto apagado), {emos que criar uma fabela que pode ter até 256 figuras, € uma vez que esteja num lugar apropriado da meméria po- de-se desenhar € mover as figuras com ‘ocomando DRAW, sendo a cor defini da por HCOLOR. O programa a seguir ‘move uma chama na base da tela 10 HOME : HGR : SCALE= 1: ROT= 20 POKE 232,0: POKE 233.3 30 FOR K = 768 TO 868 READ A: POKE K,A NEXT Wx = 124:8y FOR N= 1 HCOLOR= 5 FOR K = 1 DRAW 1 AT ~ 146 To 18 To 3 HX,HY +N: HCOL DRAW 1 AT HX,HY +N: HCOL DRAW 1 AT 2: HCOLOR= 0 8060 DRAW 1 AT 2: HCOLOR= 5 8070 NEXT K 8080 NEXT N wx + 3.nY +N + wx + 3nY +N + 8090 TEXT 9000 DATA 3,0,8,0,64,0,0,1,15 0,18,54,37,36,36,4,11,54,54,54, 46,36 9010 DATA 36,11,54,54,46, 36.4 +100,100,11,54,54,54,37,36,4,10 0,100,11,54 9020 ‘DATA $4,54,46, 36,100,100 +100,11,22,54,54,37,36,100, 100, ii, 54,54,54, 37 9030 "DATA '36,4,0,45,56,255.21 9,35,109,73,45,37,63,63,63,63,3 9,45,45,45 9040' DATA 45,45,46,44,46,45,3 763,231,219, 63,255,219, 39,64,7 3144,46,5,0 © mesmo incéndio & desenhiado apagado rapidamente em duas posi¢des diferentes, dando a impressio de fogo. ‘As chamas desaparecem lentamente na parte inferior do video. O programa funciona da seguinte maneira: ‘A tabela de figuras estd nas linhas DATA (9000 a 9040). Ela & colocada na meméria pela repetigdo do comando POKE. da linha 40, devida ao laco FOR...NEXT das linhas 30 ¢ 50. A fi- nha 20 informa onde esté a tabela de fi- guras na meméria. A linha 10 limpa a tela, estabelece o modo grafico de alta resolugdo, fixa 0 tamanho (SCALE) e a orienta¢ao (ROT) da figura. ‘As linhas 8000 a 8060 animam as cha- mas ¢ as fazem desaparecer. Cada vez que o programa repete as linhias que fi- cam entre FOR e NEXT, as chamas so desenhadas e apagadas em duas posigoes Giferentes da tela. Elas vao baixando Tentamente devido ao. +N nas linhas HPLOT, de forma que fogo parece acabar. Isso acontece porque o desenho invade o espago reservado para texto na te inferior da tela, onde podemos co- jocar dados graficos sem que eles apa- regam, Para entender melhor, experi- ‘mente introduzir a link: 15 POKE ~16302,0 a Essa linha elimina o espago reserva~ do para textos da parte inferior da tela, tornando visiveis quaisquer graficos ali colocados.. Rodando 0 programa com essa modificag&o, voc® vera as chamas ‘cuparem posigdes cada ver mais bai- xas sem desaparecer. Nao se esqueca de apagar essa linha digitando 15 e "*THENRESTORES20:6 Orolo: ELSEGOTO90 $90 DATA 203,203, 203,203,203, 20 3,203, 203,203, 203,203,203, 203,2 03,203, 203,203 606 DATA. 203, 203,203, 203,203, 20 3: 209,203, 203,203, 203,203, 203,2 03,203, 203,203 Feito o desenho, 0 computador per: guntara se voce quer uma casa com mu- Fo. Se voce pressionar qualquer tecla, 0 comando RESTORE $20 na linha 90 in. dicard, para a proxima execucao do pro- grama (a partir da linha 10), que as li nhas DATA lidas pelos comandos READ na linha 40 deverao comecar na linha $20, e ndo em $00, que é o seu ini cio fisico, De acordo com uma nova se- qiiéncia de caracteres graficos (que ter mina com as linhas adicionais $90 © 600), 0 desenho sera diferente do ante- O programa a seguir construiré um castelo 10 PCLEAR 4 20 PMODE 4,1 30 Pcs 5 40 SCREEN 1,1 50 READ SX, SY 60 LINE ~(SX, SY) .PSET 70 FOR Kel TO 18 80 READ x,y 90 LINE - (X,Y), PRESET 100 NEXT K 270 Goto 270 500 DATA 64,160 510 DATA 64,60,32,60,48,40,64,6 0, 32,60, 32, 160,110, 160,110,120 520 DATA 152,120,152, 160, 228,16 0, 228,60,212,40, 196,60, 228, 60 530 DATA’ 196, 60,196, 160,196, 74 As linhas de 10 a 40 deixam a tela pa. ra grificos de alta resolucao pronta pa- ra desenhar. A linha 270 a mantém Ii gada. As linhas 50 e 60 sao um tanto in- comuns. As coordenadas do ponto ini cial do castelo séo lidas, e uma linha em branco é desenhada em fundo branco para o ponto inicial. Algumas vezes, es sa capacidade para desenhar linhas “in visiveis” torna-se bastante itil, pois elas podem se juntar as linhas visiveis em um. esquema continuo de programacao. Da linha 70 & 100, & desenhado 0 con- torno do castelo, No final desta parte do programa foram lidos 38 itens de DA~ TA. Agora acrescente essas linhas ¢ construa algumas muralhas 110 FOR Kel To 33 120 LET X=x-4 130 LINE~ (X,Y) , PRESET 140 IF ¥-74’THEN LET ¥=78 ELSE

You might also like