You are on page 1of 24
Wt ‘ie | 1 i “me A ite PROGRAMACAO EM CODIGO DE MAQUINA Para programat jogos, é fundamental conhecero c6- digo de maquina e, Pearticularment a a Assembler. eae ANIMACAOE SINAIS GRAFICOS Produza seuspréprios “sesenhos animados’, taba, Ihando com caracteres gréficos NUMEROS AO ACASO Muitos programas de jogos sao criados segundo a formula dos ntimeros aleatérios. Veja como isso acontecee aprendaa usar variéveisea fazer compa, rages IF... THEN ESCREVA CARTAS SEM ESFORGO Como produzir cartas em série, a0 mesmo tempo pa- PLANO DA OBRA. “INPUT" é uma obra editada em fasciculos semanais, e cada ‘conjuntode 15 fasciculos compe um volume. A capa paraenca- demnagao de cada volume estara a venda oportunamente. - COMPLETE SUA COLECAO Exemplaresatrasados, até seismeses ap6so encerramentoda colesda poderio ser comrades, a preyosatualzados da segunt forma: 1. Pessoalmente— Pot mode seu jornaeio ou dtigindo-se ao distibuidor lel, cujo enderexo o- eraser failmenteconseguido junto a qualquer jornaleo de sua cidade Em ‘So Paulo os endeeyossdo: Rua Brigade Tobias, 773 (Centro. A Industri, 117 (Santo Anaréeno Riode Janeiro: RuadaPassagem, 93 (BotafOE0). 2. Por carta — Poder er sclichadosexemparesatrasads amb por carta, que dee ‘Serenviada para DINAP —Distribuidor Nacional de Publicagoes — Numeros ‘Atrasados — Estrada Velha de Osasc, 132 Jardim Tereza) CEP 06000. Gua Pau Vai, AzinhapadeFetais— 2685, Cararate— Lisboa, Tel. 257-2542 <"kpartado $7 ~ Teet 43069 IARLIS P. ‘Nao ere pagamentoantecipad.Oatendmnento ser feito plo remibolso posal «0 pagamentoinluindo as despess postin, deverd ser efetuado ao se retrar SLencomenda a Associa do Correo, Aten: Apr ch meses doencerramento ‘4 coleg, os pedidos sero atendids, dependendo da dsponibiidade de es toque Obs: Quando pel lvros mencioneserpreottuloe/ou oautor da obra, alm do numero de edgdo. COLABORE CONOSCO Encaminhe seus comentarios, criticas, sugestdes ou reclamagdes Postal 9442, dronizadas.e personalizadas. 217: ator ‘COLABORADORES ‘Prepradoreade Tet: As ira iri, Anon (Conor Eoral Remponsive Reso Seta) alin JC Rara Ap Gh, en abs, dL. | vcroncva (Dre oN de rasa Bais ‘ar Tea Gallia Pa elie Mere ei Universe sta Cais) vigor Ceordemdor scare Asis i Earls DAQUEST Aseszem nba Revinrs Cio fps bi, bbe Lee Lis Campinas Se (aman ga Aprecn eeta Nari Carmo ee epacho Also {Does de Bars Marae Note Naa aia Ses Maria ees Maris apes Sabha Martel Sons Maco Detar: ara Rhiges ‘Aspiagi programa ee: Xi Dor de ee ‘anos Hae Pres orem alec ee or cht: Paso de Ales (oordenclo eae Flat Stat Etre etl AV Corkant ‘atte Area Baap Er de Arte aro are Chee de Arte Cas Le Bica ‘comercial ‘Ntltentes de Arte: ion Olvera pes Dic SS, bare Oe, eae A ah, DiretorComerda ober Maris Sea Gerete Comer Pierce rls ana eran Cr erent de Cela Dense Uae Eigdo organizada pela Etora Nova Cultural ‘Serene Redago/Coordenador Stefan Cas : rr SSanedeteceindacluetin eter nopucho (Artigo 15 da Lei 5 988, de 14/12/1973) (eOlveeaDania Maa ceLoucesCavaiaMarsaoures_Gerente de Produ a Sung Esta obra fl compasta na AM Produc: (e Andrde Me Queer Coordenador empress: Aho otro ozon Gress Ltda. empresa na Divino? aie da Seretiri Gr At dito Preparer de Tent Coordenafer eva Cue aitora Abell (© Marshall Cavencish Limited, 1984/85, ‘© Eatora Nova Cultural Lida, Sa0 Pale, Bras, 1986, Utilizado na programagao de jogos, © cédigo de maquina proporciona uma agao rapida e continua, Antes de empregé-lo, porém, vocé deve saber como ele afeta 0 desempenho do seu computador. © BASIC constitui sem diivida a mais difundida e popular linguagem de pro: gramacdo. Universalmente-conhecido, ele é facil de aprender e pode ser adap: tado a diferentes maquinas. Seus pro gramas, contudo, ocupam grandes espa 0s de meméria permitem apenas um movimento de cada vez. Assim, se um canhao atira, num jogo de guerra, o res. to da acdo tem que esperar, mesmo que © seja por uma fracao de segundo. OBASIC usa palavras da lingua humana, tiradas do inglés, e operacoes semelhantes as da aritmética, faceis di ‘compreender. Mas seu computador. pensa em ingiés nem entende os simbo- los aritméticos. Ele opera baseado em impulsos elétricos que representam nii- meros. E essa conversio é a causa de sua lentidéo ao trabalhar com o BASIC. Cédigo de maquina é uma linguagem computacional composta apenas de nii meros equivalentes aqueles que o com putador utiliza, Assim, quando voce emprega esse cédigo ndo deve esperar que o computador responda em lingua gem. humana. Consideremos um exemplo extraido dos computadores compativeis com 0 Sinclair Spectrum; 0 cédigo de maqui na se parecer com isto: 29 28 08 Em BASIC o equivalente é: 100 IF Asc THEN GoTo 190 0 cédigo de maquina consiste, desse modo, numa série de nimeros de dois digitos. A letra B da linha acima é, na realidade, um simbolo. Ela representa ‘© miimero 11, em notagao hexadecimal Esses niimeros hexadecimais so in- troduzidos na meméria do computador. Instrugdes de operagdo, dados, niime- ros, letras, palavras ¢ enderegos de me- méria so representados por sinais de dois digitos. E computador identifica a diferenga entre essas informagdes pe. la ordem em que eles ocorrem no pro- grama. Por exemplo, o primeiro mime- Fo em qualquer programa precisa repre- sentar uma instrugdo, Se, por engano, voc? digitar um nimero qualquer nesse ponto, representando um dado ou um enderego de algum dado, o computador tentara interpretd-lo como uma instru- ¢ao valida. A digitacdo desses nimeros xige, portanto, uma preciso absoluta; aso contrario,'o programa nao funcio: (ey Quando vocé digita uma linha em BASIC, o computador tem que transpo- Ja para sua propria linguagem, antes de ‘executé-la. Este é um processo trabalho- ‘$0 que toma muito tempo, pois uma ins trugao em BASIC raramente ¢ tradu da para um 6 comando ou declaragao ‘em cédigo de maquina. Ela resulta, com fregiéncia, em varios cédigos de ope ragao. ME VANTAGENS EM RELACAO AO BASIC. COMO COMPREENDER CODIGO DE COPERACAO E LINGUAGEM ASSEMBLER. Quando se executa u completo escrito em BASIC tem que ser interpretada seqiencialmen te. O computador nao armazena 0s re- sultados dessa tradugao; se a mesma li nha for executada novamente, 0 com putador tera que interpreté-la outra vez. ‘Sempre que 0 computador encontra uma instrugdo em BASIC, executa as se- intes tarefas: ‘* reconhecer a instrugao em BASIC; * traduzir essa instrugo para uma sé rie de outras em cédigo de maquina; © executar as instrugdes, uma a u * passar para a proxima linha do pro grama em BASIC Repetido muitas vezes, esse proces- so torna-se lento e moroso. E possivel, porém, compilar um programa em BA. SIC, isto €, traduzi-lo integralmente pa- ra cbdigo de maquina, de uma s6 vez, antes de executé-lo, armazenando a tra dugdo. A compilacao é mais eficiente en eee ne ee ss ee que a interpretagdo, mas os programas resultantes sao ainda bastante lentos. Em contrapartida, a traducao do programa em eédigo de maquina dire- tamente para a operagdo interna do ‘computador quase nao consome tempo. Nesse caso, ha uma simples conversi0 de um niimero em outro, ¢ nao a tradu- ‘¢4o de um comando de'linguagem em Varios outros de cédigo de maquina. Os programas tornam-se, assim, mais cur- tos e eficientes Os programas abaixo fazem a mes ma coisa, usando BASIC e cédigo de mequina. Compare suas velocidades re- lativas. 10 CLEAR 200, 32000 20 DEFUSRO=31000 30 FOR N=31000 To 31015 40 READ A 50 POKE N,A 60 NEXT: 70 cLs0 80 PRINT @0,"ISTO ESTA EM BASIC 90 FOR Nel TO 500:NEXT 100 FOR N=1056 TO 1535 110 POKE N, PEEK (N+34000) 120 NEXT. 130 FOR Nel To 1000:NEXT 140 cLso 150 PRINT @0,"18T0 ESTA EM coor Go DE MAQUINA.” 160 FOR N=1 TO 1000:NEXT 170 N=USRO (0) 180 FOR Nel To 2000:NExt 190 DATA 206,136, 240,142.4,32,1 66,192,167,128,140,6,0,38,247,5 7 Atengo: o programa abaixo esta es- crito em BASIC para computador ‘com o sistema DOS (disquete) e nao se- 4 aceito pelo BASIC nivel II normal (cassete). Ao ligar a maquina, responda com 0 niimero 60000 a pergunta !Mem.usa- da?”, ou ainda “Memory size?” (para ‘computadores com 48 Kbytes de mem6- ia apenas), 10 cLs 20 DEFUSRO=~4536 30 FOR N=-4356 To -4523 40 READ A 50 POKE N,A 60 NEXT N 70 cLs 80 PRINT "ISTO ESTA EM BASIC" 90 FOR T=1 TO 500:NEXT 100 FOR N-15360 TO 16383 110 POKE N,65 120 NEXT 6 130 FOR Nel To 1000:NEXT 1490 150 ous PRINT “ISTO ESTA’ EM GUAGEM DE MAQUINA™ FOR N-1 To 1000:NExT N-UsRO(0) FOR I=] TO 2000:NExt DATA 33,0,60,17,1,60,1,255, 3,54,65,237,176, 201 10 CLEAR 29999 20 FoR n=30000 30 READ a 40 POKE na 50 NEXT n 60 PRINT "Isto 70 FOR n=16384 80 POKE n, PEEK 90 NEXT a 100 CLs 110 PRINT “rato esta em Codio de Maquina” 120 PAUSE 100 130 RAND USR 30000 140 STOP 150 DATA 33,0,0,17,0,64,1,0,24 +237,176, 201, MW 10 CLEAR200, LHDFFF 20 DEFINTA~Z 30 AD=&HE000 :DEFUSR-AD 40 FOR 1-07010 50 READAS| 60 POKE AD+1,VAL("RH"+AS) 70 NEXT 80 DATAOE,98,£D,68,0,1,06,FF,ED :B3,09, $0 és 100 PRINT "Ito esta em BASIC 110 FOR [-1 TO 1000:NEXT 120 SCREEN 2 130 PSET (0,0) 140 FOR I=1'TO 6144 150 OUT_152,RND(1)*255 160 NEXT 1 170 cLs 180 SCREEN 0 190 PRINT"Isto esta em cédigo 4 e maquina” 200 FOR [=0 TO 1000:NEXT 210 SCREEN 2 220 PSET(0,0) 230 FoR I=i to 25 240 A-USR(B) 250 NEXT 260 GoTo260 (#)(S) 5 HOR : HOME : VTAB 24 10 FOR T = 800 70 836 a5 READ N 20. POKE I,N 25 NEXT. 30 PRINT "Isto esta em BASIC” 35 FOR I= 1 To 300: NEXT 40 FoR 1 = 8100 To 14000 45 POKE 1, RND (1) * 256 LIN- 160 170 180 1s0 To 30011 esta em BASIC" 0 22527 (n-16384) 50. NEXT 55 TEXT : HGR : HOME : UTAB 24 PRINT “Isto esta em linguagen de maquina” 60° FOR I'= 1 TO 3000: Next 65 CALL 800 70 DATA 169,0,133,20,133,22,1 69,32 80° DATA 133,21,169,193,133,23 160,255 90. DATA 177,22,145,20,136, 208 +249, 165 400 ‘DATA _21,201,63,208,1,96,2 30,21,230,23,76,46,3 ‘Como voce vai ver, tudo que o pro- grama faz é encher a tela de caracteres a0 acaso (“lixo”, na giria dos progra. madores). Entretanto, a velocidade com que a versdo em linguagem de maquina faz isso ¢ incomparavelmente maior do que a do programa em BASIC. Me) A grande dificuldade do cédigo de maquina surge quando se quer escrevé- lo ou depurd-lo de erros. Poucas pessoas conseguem lembrar-se de todos 0s c6- digos numéricos ¢ instrugdes. Para com: plicar ainda mais, os cédigos de opera- io (opcodes) nao so distinguiveis dos Outros niimeros que alimentam 0 com: putador. Assim, yoo nao consegue en- {ender um trecho de programa, a nao ser que © acompanhe desde 0 comeco — 0 que no ajuda quando se esta procuran: do erfos no programa, (Os cédigos numéricos de operacio, além disso, diferem consideravelmente entre si, conforme 0 microprocessador que € usado no computador, de modo que traduzir programas em ‘c6digo de ‘maquina de um tipo de computador pa- ra outro pode ser bastante dificil Uma forma de contornar esses obs- taculos é subir um pouco mais de nivel € escrever 0 programa em uma lingua- ‘gem mais fill de se utilizar do que 0 c6- Lee essen I digo de maquina. Essa linguagem é co- nhecida como Assembly, ou linguagem ‘Assembler (que vem do inglés, monta. gem). Em Assembler, 0s cédigos operacio- nais sdo representados por abreviagdes mnemdnicas (isto é, fadceis de lembrar). Por exemplo, a operagdo de carregar (oad, em inglés) uma meméria com um nimero, tem a abreviatura LD. Uma instrugdo de desvio (jump) pode ser cha- mada de J, JP, ou IMP, conforme asin: taxe do Assembler em uso. Com algum treino, é possivel ler programas em As- sembly to facilmente quanto em BA- SIC, embora entendé-los seja algo mais complicado. ‘A desvaniagem da linguagem Assem- bler é que o computador nao pode uti lizé-la diretamente, como no caso do codigo de maquina. Antes disso, 0 pro- ‘gram precisa ser montado por um As- sembler, ou tradutor, que ¢ um outro programa escrito em linguagem de ma. quina, ou mesmo em BASIC. Mas o processo de montagem é bem ‘mais simples, quando comparado com a interpretacdo de linhas em BASIC. A linguagem Assembler € equivalente ao cédigo de maquina, ou seja, cada ins- trugdo em Assembly corresponde a uma instrugdo em cédigo de maquina, As- sim, a tradugao do programa se proces- sa palavra por palavra, nimero por riimero, etc. diretamente para cédigo de maquina. O Assembler também traduz 0 pro- grama como um todo, antes que 0 com- putador 0 execute, ao invés de interpreté-lo linha por linha, enquanto © programa esta rodando. Isto da van- tagens adicionais de velocidade de exe. cugao. ‘Alguns computadores, como 0 Ap- ple Il, ja vém com um programa embu. tido, chamado monitor, que permite a entrada de cédigos de maquina e dados em hexadecimal. Computadores com programas Assembler embutidos em sua ROM, entretanto, jd sao mais raros, No Brasil, o TK-2000, da Microdigital, ¢ um exemplo. Para 0s outros computadores (inka TRS-80, TRS-Color, MSX, Sin- clair Spectrum e ZX-81), existem pro- gramas Assembler" disponiveis comercialmente, em fita ou disquete. Voce poderd utilizar também, as versoes de Assembler para cada maquina, que serdo fornecidas mais adiante. Mas, se vocé ndo tem acesso a um ‘programa Assembler, pode fazer uma montagem manual. Mesmo para os pro- ‘gramas mais simples, é mais facil esere- vé-los em Assembly, e depois traduzi-los manualmente para'cédigo de maquina em hexadecimal, usando as tabelas for- necidas com os manuais de programa- do Assembler. Tudo isto pode parecer muito abor- recido; mas, antes de decidir que € isso mesmo, experimente esses programas ‘em codigo de maquina. Eles so intro: duzidos via declaragdes DATA em pro- gramas BASIC. Os dados (DATA) cs tao listados no fim de cada programa. 10 CLEAR 200,31000 20 DEFUSRO=31000 30 FOR N=31000 70 31020 40 READ A 50 POKE N,A 60 NEXT 70 N=USRO(O) 80 POKE 32767, RND(256)-1 90 FOR N=1 TO'100:NEXT 100 GoTo 70 110 DATA 142,4,0, 206,136, 104.16 6,192, 164,127, 255,138,129,167,1 28,140,6,0, 38,242.57 As restrigdes na configuracao da ma quina para rodar o programa abaixo sio as mesmas do primeiro programa. 20 DEFUSRO™ -4536 50 FoR N=-4536 TO 40 READ A 50 POKE N.A 60 NEXT N) 70 N=USR(O) 80 POKE -4534,RND(20) 90 GoTo 70 100 DATA 33,0,0,17,0,60,2,0 237,176,201, 4525 10 CLEAR 29999 20 FOR n=30000 70 30020 30 READ a 40 POKE na 50 NEXT 60 RAND Usa 30000 20 GOTO 60 80 DATA 17,0,88,46,0,237,95 71,58, 140, 92,128, 230,63,103,1 +0,3,237,176,201 mM 10 CLEAR200, LHDFFF 20 DEFINTA-~Z 30 AD=LHE000: DEFUSR=AD 40 FOR 1-07010 50 READAS 60 POKE AD#T,VAL("AH™+AS) 70 NEXT 80 DATAOE,98,ED,6B,0,1,06,FF,ED 183,09, 90 FOR 1-0 TO 1000:NEXT 100 SCREEN 3 110 PSET(0.0) 120 A=USR(B) 130 GoTo 120 200 FOR 1=0 TO 1000:NEXT 210 SCREEN 3 220 PSET(0,0) 240 a-uSR(B) 260 GoTo 240 we Um aviso para quem for utilizar 0 programa acima: o programa em lingua gem de maquina altera alguns endere- {gos importantes da meméria de traba- Tho do micro. Por isso, € impossivel listd-lo depois de rodar uma vez. Assim, vocé deve digitar o programa e grava lo em fita ou disquete, antes de rodé-lo. Para rodar no TK-2000, € necessario fazer as seguintes modificagdes: todos ‘9s valores 17, que aparecem dentro das. declaragdes DATA, devem ser mudados todas os valores 18, para 21. nodo ele nao se autodestroi FOR I = 800 TO 840 READ N POKE 1,N NEXT oR CALL 800 DATA 169,0,133,17,169,193, 133,18, 160 80. ‘DATA 5, 32,100 90. DATA. 248,138, 32,0,248,136, 208,242,202, 100" paTA 208,239,169,254,197, 18, 208,1,96,230,16,76,40,3 Agora, apenas para comparar, tente escrever um programa similar em BA- SIC. Acreditamos que voct entendera nossas razdes. E mais tarde, veremos 0| que acontece aqui. 40,162,40,177,17,41,1 ANIMACAO E SINAIS GRAFICOS Programar jogos pode se revelar uma atividade fascinante. Mas ndo é certa- ‘mente das mais fdceis. Por isso, voce de- ve comerar com coisas simples ¢ ir avan- gando pouco a pouco. Esse procedimen- to Ihe ensinard a pensar de maneira Ié- gica, melhorando suas qualidades de programador. E 0 que vamos aprender nesta série de ligdes, até chegar ao de= senvolvimento de jogos profissionais ¢ complexos. ‘A primeira coisa que voce pre aprender para programar jogos, afora a linguagem BASIC, é a técnica de ani- macdo, pois a maioria dos jogos mais interessantes é do tipo “‘videogame”’, is- to & tem algum tipo de aca. Para criar a ilusdo de movimento, 0 programador usa praticamente as me ‘mas técnicas empregadas na elaboracio de desenhos animados. Ele cria duas ou mais imagens e as alterna rapidamente — cerca de 24 vezes por segundo. Existe, porém, uma diferenca impor- tante, Na animagdo de um desenho, 0 projetor é responsavel pela eliminagao das imagens desnecessarias. © mesmo ‘no acontece com a animacao por com- putador: neste caso, qualquer segmen- to de um desenho que voc “‘projete”” permanecerd na tela, a nao ser que vo- & imprima alguma coisa sobre ele, pois © computador ndo pode colocar, simul- taneamente, duas imagens na mesma Posicao. Por exemplo, se a linha 10 diz a0 computador para colocar um A em um. determinado lugar, qualquer linha im- pressa posteriormente — digamos um B = no mesmo local, apagard 0 A. Mas, e se nao hotiver nada que voce queira imprimir no lugar do caractere indesejado? Entao voce deve se lembrar de incluir no seu programa uma linha que coloque um espago em branco na posigdio de interesse. Caso isso no seja feito, seu video logo estard repleto de in- cOmodos pedagos de bragos, pernas € corpos! Hi grandes diferengas entre os com- putadores na maneira de se obter os ca- racteres (sinais) graficos na tela. Os ca~ racteres graficos padronizados variam muito em tipo ¢ disposicao, assim como a maneira como sdo impressos na tela, € como so movimentados, Uma animagao muito simples, que ilustra os principios da producdo de efei- tos de movimentacdo na tela do micro, €a do pequeno “‘inseto rastejante” (ve- ja abaixo). Nas paginas seguintes mos- traremos como conseguir esse efeito pa- 808 tipos de computadores. d or } »» dy 00 « 100 < vy vy Para criar a figura do inseto na tela, programe o TRS-Color ou compativel (por exemplo, o Prolégica CP-400), co- ‘mo segue abaixo. A declaracdo PRINT @ (pronuncia-se “print arroba’” ow “print em") é a maneira que o BASIC do Color tem para exibir um ou varios cearacteres em um ponto especifico da te la, O nuimero que se segue apds 0 sinal G@ € a posigdo na tela, que comeca de 0, no canto superior direito, e aumenta de um em um da esquerda para direita € de cima para baixo. Como a tela do Color tem apenas 32 colunas, a primei- ralinha tem posigdes @ indo de 0a 31 ‘A posicdo 32 ja se situa na primeira co- luna da segunda linha © assim por diante. 5 cus 10 PRINT 8238, 7000" 20 PRINT €206,")))" 30 PRINT €241,"<" 40 PRINT €270,")))7 Este programa é uma forma bastan. te elaborada de criar uma imagem mui- to simples, mas ele ilustra alguns pon. tos interessantes: Em primeiro lugar, ele the dé uma idéia a respeito das posigdes relativas na tela. O meio do inseto esta, aproxima- damente, no centro do video, na locali- zagao 239. Como voce vé, estamos usan- do caracteres ‘‘normais” (isto 6, dispo- niveis no préprio teclado padréo, como aletra O, o sinal de parénteses, etc.) pa- ra compor a figura do “*bicho”. Além disso, ele mostra 0 que acon- tece quando fazemos com que 0 com- putador imprima mais que um caracte- Te em uma tiniea posigao de tela — ele simplesmente vai em frente e coloca os proximos caracteres nas posigdes subse- aqiientes (de numeraco maior). Isto ex- a OS < er See ) 00 < } Pree Se vocé quer dar mais vida aos seus jogos, comece a trabalhar ‘com os caracteres graficos mai simples, que j4 vém programados na do seu computador. plica por que as “‘antenas’” da linha 30 esto em 241. As posigdes 238-240 ja es- to ocupadas pelo corpo do inseio. Existe uma maneira melhor de dese- nhar 0 inseto, que € condensar 0 pro- grama acima ¢m uma tinica linha. E, se voc® ainda nao descobriu, o TRS-Color tem uma abreviagao para PRINT: o ca- ractere ‘*?"", Quando 0 programa ¢ lis- tado, a maquina mostraré PRINT ao in- vés de 2" ( programa simplificado fica assim: 20 PRINT €238,"000<": PRINT @21 +7)))": PRINT €270,")))" Se vocé acrescentar mais duas tinhas, obterd alguma animacao: 20 PRINT €238,"000<": PRINT £7 CCC™PRINT 62705" (((" 30 Goro 10 A execugao deste programa uma imagem tremida e pouco nitida ndo se parece nem um pouco com ani- mago. A razao disso é que as imagens esto sendo trocadas rapido demais. Se voeé inserir um lago FOR...NEXT no programa, ele fard com que o compu- tador pare e conte, deixando a anima- cdo mais clara. Qualquer mimero pode ser usado com os laos FOR... NEXT (i- nhas 15 € 25) endo apenas 15. Outros niimeros resultardo em uma espera maior ou menor. Experimente adicionar estas linhas: 15 FOR L=1 TO 15 17 Next L. 25 FOR L=1 To 15 27 NEXT L Agora voc8 tem um inseto que esper- neia incessantemente, um tanto sem ra- 240; apesar disso, a tela nos mostra uma animagao convincente. Ciieraens Voeé pode usar os caracteres grificos de baixa resolugao do seu computador para criar figuras animadas mais inte- ressantes. O Manual do Usuario mos- tra quais sao esses caracteres. Cada um deles tem um eédigo (um valor de 128 a. 143 para os micros da linha TRS. Color). Para mostra-los no video voce usa a fungdo CHRS seguida do codigo do caractere entre parénteses. Por exemplo, para imprimir o carac- tere representado pelo cédigo 138 no meio da tela, digite: 10 PRINTe 239, cHRS(138) =QWO00W0 »O00N000 oo Sti) >> ili) (D9) APRA A) he @@OU008 »UU0EO00 Como construir o seu satétte © programa seguinte utiliza caracte- Fes grificos de baixa resolugao para ani- mar um satélite rotatério (a fig. 1 mos- tra 0s dois desenhos que sao alternados no programa), 10 CLEAR 500:CLS 20 PRINT €174,CHAS (143) #cHRS (14 1) :PRINTE178, CHRS(14 30 PRINT @206,CHRS (140) +CHRS (13 2)+cHRs (241 40 PRINT @236,cHRS (137) +cHRS (12 9) +CHRS (1.29) +CHRS (129) +CHRS (129 )+CHRE (129) +cHRS (141) 50 PRINT €268,CHRS (135) +CHRS (13 2) +cHRS (132) +CHRS (132) +CHRS (132 }+CHRS (133) +CHRS (135) 60 PRINT @300,CHRS (143) :PRINTe3 03,CHRS(133) :PRINT €305,cHRS (14 3)4cung(143) 70 FOR X=1 TO 20 80 NEXT x 90 PRINT @173,CHRS (141) :PRINT@L 77 ,CHRS (141 100 PRINT €205,CHRS (139) +CHRS (1 40)-+cHRs (140) +cuRS (137) 110 PRINT €236,cHRS (138) +cHRS (1 30) +cHRS (130) ¥CHRS (130) +CHRS (13 0) +CHRS (130) +cHRS(143) 120 PRINT €268,cHRS(139) +cHRS (1 36) +CHRS (136) #CHRS(136) +CHRS (13 66) +cHRS (137) +CHRS (143) J MOVIMENTE AS FIGURAS NO VIDEO IMO NUM DESENHO ANIMADO _ "APRENDA A USAR —CARACTERES GRAFICOS 130 PRINT €300,cHRS (137) :PRINTe 303,CHRS (143) :PRINT €305,CHRS(1 39) +cHRS (141) 140 FOR x-1 TO 20 150 NEXT x 160 GoTo 10 Nio se preocupe com a linha 10 do programa. CLEAR 500 reserva espaco na memoria para as cadeias de caracte- res dos e6digos CHRS e CLS. Examine (03 sinais grificos representados pelos c6- digos apos CARS no programa e tente entender como a espaconave foi cons- truida, A instrugio ‘+ CHRS (_)’ sig- nifica ‘PRINT CHRS ( ) na proxima posigao de tela’ PO Eis aqui o programa que anima o in- seto, movendo-o pela tela: 10 cus 20 FOR N=0 70 28 30 PRINT @192+N,")))":PRINT @22 44N,"000<" : PRINT @2564N,")))™ 40 FOR X-1 TO 10 50 NEXT x 60 PRINT @192+N." *:PRINT @22 43M," | ":PRINT @2564N,"* 70 PRINT @1924N," (((":PRINT @22 44N, "000" : PRINT @2564N,"(((" 80 FOR X=1 TO 10 90 NEXT x 100 PRINT @1924N," *:PRINT @2 244N," | ":PRINT @256+N,”—* 110 Next w 120 GoTo 20 Existem trés lagos FOR...NEXT no programa. Os dois que utilizam X dim: rhuem a rapidez de impressdo fazendo 0 computador contar até dez; 0 que usa N faz com que o inseto se mova na tela. Vocé pode nao ter entendido por que linha 20 mostra FOR N = 0'TO 28 se existem 32 posicdes disponiveis em ca da linha da tela. A razdo para isso € que ‘0 inseto tem quatro espagas de compri- mento, e, se houvesse mais que 28 na li- nha 20, a antena apareceria no lado oposto do video, uma linha abaixo. Is. to acontece devido ao modo com que as posigdes de tela slo numeradas. A po- sigdo 32, por exemplo, ¢ a primeira da segunda linha, a partir do topo da tela. ‘As linhas 60 ¢ 100 parecem ndo estar imprimindo nada; elas s4o as linhas} “apagadoras’” descritas anteriormente. oS PROGRAMACAO DEJOGOS 5 o EE EE Para os micros da linha TRS-80 os programas acima podem ser modifica dos com facilidade, bastando alterar o: niimeros apds os comandos PRINT @ jd que nesses micros uma linha tem 64 colunas, ao invés das 32 da linha Color O meio da tela fica mais ou menos nna posigdo 450. Subtraindo 64 dessa po- sigdo temos 386 para a posigao inicial das perninhas de cima, ¢ somando 64, obtemos 514 (para as perninhas de bai Xo). Finaimente, 453 nos da a posigdo das antenas. O programa final fic 7 NEXT L. 10 PRINT €450,"000<" :PRINT@386 *(C(*: PRENT@514," (((" 25 FOR L=1 TO 15 27 NEXT L. 30 GoTo 10 Penne keane Estude agora com atengao tudo o que estd dito na segio sobre o uso de carac- teres gréficos no TRS-Color. Ela se apli- ‘ca exatamente aos micros da linha ‘TRS-#0, que tem apenas caracteres er Os truques para desenhar figuras e novimenti-las so iguais aos ensinados para o TRS-Color, ou seja, basicamen comando PRINT @, ¢ a funci0 CHR§ usada em conjunto com os e6d gos numéricos dos caract ificos. As duas tinicas diferengas sdo as se © conjunto de caracteres graficos do TRS-80 & bem maior, pois cobre os cédigos de 129 a 191. Cada caractere & ‘a combinagao de seis pontos em uma trés de altura por dois de lar (© TRS-Color possui caracteres ificos em uma grade de 2 x 2, ou se Ja, com combinagdes de quatro pontos por caractere). — Como dissemos acima, 0 mimero de posigdes @ na tela também é maior 1024 (dezesseis linhas de 64 colunas cada) s efeitos grificos de baixa resolugto no TRS-80 sao potencialmente mais ti 05 ¢ detalhados do que o Color (com apenas uma desvantagem para o’primei 0: no podemos escolher a cor dos ca- racteres grificos no TRS-80, que tem o video monocromatico). Experimente fazer um programa igual ao do Color, para tracar o satelite (combinagio de varios CHRS), e depois 126] 128 158] 128 12 152] 131190] 176 128 128] 136 |157| 17228] |e oa 136] 145 | 128| 128129 [m= |_H a la lB (| jl Il 128128] 187|128|128) al vae| 72157] ze] 130] 174} 145128} 129 Hy | |e 129] 128128] 13128 a) ra. a © corredor em duas posigées. faga algo mais dificil: animar um cor: redor de maratona. A definiedo da fi ‘gura do corredor em caracteres gritficos da linha TRS-80 pode ser vista na fig. 2 PROGRAMACAODEJOGOS 1 Abaixo vemos como programar 0 pe- {queno ‘‘monstro rastejante”” para qual {quer micro da linha Sinclair (por exem plo, 0 TK-85 ou 0 TK-90X). Para co: mecar, tente crid-lo numa posigio es RINT AT 0 PRINT AT 1 © programa usa a declaragao PRINT AT, que serve para colocar em algum ponto da ‘ela um caractere ou conjunto Ge caracteres. Os niimeros que se se- guem a declaragao PRINT AT represen tam o mimero da linha onde ficara a figura (que vai de 0a 21), e 0 niimero dda coluna (que vai de 0 a 31). Assim, PRINT AT 10,6; “A”, por exempl pede ao computador para escrever a le ra A na posicao definida pela linha 10 € pela coluna 6 da tela (um quadricula do imaginario, como em um jogo de batalha naval’) Ele mostra o efeito de ordenar ao computador que imprima mais que um earactere numa mesma posigdo da tela ele simplesmente avanca e imprime os caracteres seguintes nas posic nnhas, Esta é a raziio pela qual as * nas” do inseto na linha 40 estao em 10,18. As localizagdes 10,15; 10,16 ¢ 10,17 ja estdo ocupadas pelo corpo do ‘Uma maneira mais conveniente de ‘compor o inseto consiste em condensar as instrugbes acima em uma tinica linha; desta forma ($6 vale para 0 TK-90X): ars 10 PRINT AT_10,15;"000< 125;70)) "aT 144155799)" Adicione agora mais duas linhas e vo- 20 PRINT AT 10,15;"000<";AT 9 e15;7(CCTAT 11,155" (CC 30 Goto 10 Quando executar esse programa, vo- c@ vera que ele produz uma imagem pouco nitida, Isso acontece porque as imagens 40 trocadas muito rapi dan A melhor maneira de desacelerar 0 processo € usar um lago FOR...NEXT que faz com que o computador conte até dez (ou qualquer outro niimero que vo @ queira), Antes de imprimir a imagem seguinte, Experimente, entao, adicionar estas linhas ao seu programa (no TK-8S use 2 ao invés de 10): 45 FOR L=1 To 10 17 NEXT L 25 FOR M=1 TO 10 27 NEXT M Voc? pode variar a duragio da pau sa simplesmente mudando ‘1 TO 10° pa- ra‘1 TO $' ou ‘1 TO 20, por exemplo. O inseio criado até agora pode pare cer iniitil e estipido, pois esperneia co mo louco mas ndo”se move. Mais modifica (se¢a0 MOVIMENTO). COE ‘Uma animagdo mais interessante po- de ser produzida utilizando os caracte res grdficos padrao da linha Sinclair. Te- mos um exemplo na fig. 2. © programa completo dado mais abaixo; no entanto, se voce nao esta ha bituado aos simboios graficos, sera in teressante criar, inicialmente, uma figu ra estitica, compondo uma linha de ca da ver, deste modo: ar 6,14 2 PRIN ¢ assim por diante Encontrar esses caracteres grdficos é relativamente fécil. Para obter aqueles da linha 2 acima, por exemplo, tecle CAPS SHIFT (SHIFT no TK-85) ¢ 9, simultaneamente. Isso 0 coloca no mo: do grafico indicado pelo G piscando na tela, Entao, no. TK-90X, pressione CAPS SHIFT e 6 juntos para obter uma versio invertida — preto no lugar do branco — do simbolo da tecla 6; depois CAPS SHIFT ¢ 8 © 6 sozinhos. No ‘TK-85 pressione SHIFT T; SHIFT ¢ SPACE; SHIFT e Y. Finalmente, tecle 9 para deixar o modo grafico antes de inserir as aspas no fim da linha, ‘Aqui temos o programa completo pa- ra formar a figura: iH E possivel que voce sinta necessida- de de inserit novamente um lago FOR...NEXT depois da linha 10 ¢ ou- tro apds a linha 20 para desacelerar a agdo. Cio ra a re (Um dangarino feito de doze quadrinhos. 1 prooeamaghoveocos t 7) Ea Agora que vocé jé sabe animar uma figura, podemos passar ao programa {que faz com que ela se mova pelo video: 10 FOR N*0 To 27 20 PRINT AT 10,N;7000<";aT 9, Net CCCEAT LL.M CCC 30 PRINT AT 10,N;" "AT 9, Nir AT LL Wet 40 PRINT AT 10,N;"000<";AT 9, Ns"))) "AT 11,§5")))" 50 PRINT AT 10,N;"000<":AT 9, Met TaT LN?” 60 NEXT 'N 70 Goro 10 Este programa também usa um lago FOR...NEXT, porém com uma final dade completamente diferente da do exemplo acima. La o computador fazia ‘uma contagem, por fragdes de segundo, antes de imprimir uma imagem. Agora ele ¢ responsavel pela movimentacao da imagem, que assume uma posigdo de ca da vez na superficie da tela E por que a linha 10 mostra “0 TO 27°, se a tela do Sinclair tem, no total, 32 posicdes? Para descobrir, modifique a linha 10 para: 10 FOR N=0 To 32 ‘Outra diivida pode ser em relacdo as linhas 30 e $0. Experimente apaga-las e voc’ logo descobriré sua utilidade. O programa que movimenta a “tatu- ana" usa exatamente os mesmos carac- teres que os outros computadores. O que muda é o comando para posiciond Jo, que nos computadores da linha MSX (por exemplo o HotBit, da Sharp) rece- be o nome de LOCATE. Esse comando posiciona o cursor sobre a tela, em uma posicdo definida pelos dois nimeros que se seguem ao comando LOCATE. O primeiro nimero refere-se & coluna, €0 segundo, a linha. Assim, por exemplo, LOCATE 12,4 coloca o cursor na colu na 12.¢ na linha 4, Qualquer comando PRINT que seja dado apés isto escre verd o caractere (ou caracteres) a partir da posigdo definida pelo LOCATE. Agora, digite o programa: 5 cts Jo LocaTe 18,10:PRINT 7000" 20 LOCATE 18,9:PRINT ")))* 30 Locate 21,10:PRINT *<" 40 LOCATE 18;11:PRINT *)))* 42 FOR I-1 TO 30 47 - NEXT I 50 LOCATE 18,10:PRINT "000" 60 LOCATE 18,9:PRINT "(((* 70 LOCATE 21,10:PRINT "

You might also like