Você está na página 1de 138

COLE~AO DE PROGRAMAS PARA

3~ EDI9AO

HEditora

A.leph

Este tlV'O 101 I mp resso pela <I",~ ~IMI..,. ~W"J M&. Rod' Presldente Dutra, km 214 soae- 9 12· 1388· Guaru Ihos

C'OLE~AO DE PROGRAMAS PARA

MSX

COORDENACi!iO:

Renato d a Silva Oliveira

CO~AUTORES ;.

Aldo 8arduco Jr.

ligla Neves dos Santos

lulz Tarcfslo de Carvalho Jr.

Mi I ton Ma I donado Jr.

Plerluigl Plazzl

Renato da Silva Oliveira

Rubens Pereira Silva Jr.

NEditora

Aleph

1986

© 1386 EOITORA ALEPH

toorclanlcia Eclltorlll ...•. PIERlUIGI PIAZZI

Coo r denlcio 01 dH i (I •.•••• BETTY FROMER P I All I EIII tar I c"a a t 01 agr .. ~cio .• GLAUTER F. HI KAHil

n;«:

Aleph

COP: -d ~ 5 L ••••••••.•••.....• REG I NA B. ASSUKPCiO

ALEPH Publica,Oes. Ass. Ped. l.tda. Av. Brig. Faria Lima. 1451 . Conj. J 1 01451 • Sao Paulo· SP

TeL: (011) 212,4917

CAIXA POSTAL; 20.707

Artt .••....••............... ANA lOCIA ANTICO

tiPI e II U5 t r Hoes fERNANDO MORETT I

Pradueio ...................• ROSA K. FROMER

Oados de Cala.loga"ao na Pubiicacao (CIP) Interr:aciona~ (Camara Brasileira do Livro, SP, Brasil)

86-0034

CDD-OOl.6425 -001.64

-001.6424

Oliveira, Renata da Silva, 1960-

095c Cole~ao de programas para 0 MSX I Renato da Silva

Oliveira. -- Sao Paulo: Aleph, 1986.

1. BASIC (Linguagem de programao;ao para cOC>IPutadores) 2. MSX (Camputadores) J. Programas de computa dor 1. Titulo.

Indices para cataloqo alstarnatiec:

1. BASIC: Linguagem de programao;ao : Computadores P'roces s amen to de d ados 001. 6424

2. Computadores : Programas : Processamento de dados 00L6425

3, MSX : Computadores : Processamento de d ados 001.64 4. P'rogr amas : Computadores : Processamento de dados 001. 6425

5UMAR10

, I

NOTA DO EDITOR ••..••.....•....•....•.....••..... 007

INTRODUC;~O

Dl DIGITACiO E EDICiO ...•••.......••...••...••..... 009

Pierlulgl Plazzi

02 GRAVAC;iiO EM FITA .' .•••....••...••••.••.....•...•• 025

Plerlulgl Piaui

03 AJUSTE DE TV ..•••..•..•..•...........••••......• 031

Renata da 51 Iva 01 Ive~ra

04 CAL E I DOSCOP 10 · 035

Renata da 511 ~a 011 ve Ira

05 ANAGRAMA ...........•.••..•...•••...••..........• D39

l-u l z- Tarclslo de Carvalho Jr. •

06 TWO liNERS GR~FICOS •.......•.........••......... 043

Renato dOl 51 Iva 01 iveira

J0(30S

D7 SAiOA INVIS1VEL 055

Luiz Tarclsla de Carvalho Jr.

08 POUSO ..••....••......•••.......•....•....••.....• 063

Rubens Pereira SI Iva Jr.

D9 CH I PTRON .......••..•.....•• · •.•........••...•.••. 071

Aldo Barduco Jr.

10 NIIUTILUS ......••••.•.....•.•••......••••..•..... 077

Renata da Silva Oliveira 8 A~do Barduco Jr.

11 TANK ....•...••.........•••.....•••.•••....•..... 083

Mi Iton Maldonado Jr.

12 BOL I CHE ••..•.•......••.••......•...••.....••...• OS7

Renata da Si Iva Oliveira

13 M I NHOCA ..•••........••...•.....•.•••.........••• D97

Rubens Pereira 51 Iva Jr.

OESENHOS

14 GRt.FICOS ••••.••.•.••.••••••••••.••..•••••••••••• 105

Renate ds Silva Olivolra

15 PERSPECTiVAS ..••••••.•••.....••••••••••••.•••... 1C19

Renato del Sliva Oliveira

16 P I CASSO •••••••••..••..••••••••••••••.••.•••••••. 121

Aldo 8arouce Jr.

MllSICAS E SONS

17 'CRAB-CANON •••••••••••••••..•.••••••••.••.•.••••• 127

Ligi~ Neves des Santos

18 SAlTARELLO 130

Ligia Neves des Santos

19 TWO-LINERS SONOROS .••••••• , ••••••••••••••••••••• 133

Milton Maldonado Jr.

NOTA 00 ED\TOR

Urn dos grandes erros que torarn cometldos (e ainda asteo s e n d u I) com o s u s u a r i o s de ml c r o c neic u t a o o r e s pessoais. consists em sa achar que enslnar BASIC e ensinar computa~aol

Isso saria como querer ensinar 0 uso de uma geladelra come~ando pelo Segundo Prlnciplo da Termo-Oinimlca.

o BASIC. na realidade. e uma Iinguagem e como ta I d s v e ser ens i n a d a , Para tanto. sao mu I to rna I s viii I d a s as tecnlcas dldaticas uti I Izadas no aprendizado de llNGUAS do que. por exemplo. de MATEM'(TIOA.

Quem jll tentou ( e consegulu) aprender uma Ilngoa estrangelra saba muito bam que e absurdamante mals Ime o r t a n t a 0 USC do qua 0' ESTUOO.

Estamos cansados de ver pessoas que. vlvendo uns dols meses nos ESTADCS UNIOOS. conseguem domlnar 0 ingles enquanto outras. apas anos de estudo na eseola. nao eonseguam nam sequer ler as manchatas do -TIME-.

A grande e fundamental dlferen~a entre as duas 5itua~Das estil na Intera~so constanta decor rente do uso. Se eu falo errado. nso sou entendido; sa nio entendo dlretto. fa~o papel de bobo. a consequ6nela ~e meus erros iI Imedlatal

A rev~lu~io provoeade pelos belxos custos da e I etr8n lea dig I ta I fez com que 0 m I crocomputador • p u c e s s e s II rut I I I z ado a n f vel pes s (] a I. perm I tin d 0 a i n t era c a n d I - rata e imedlata do usuilrio com a m~qulna.

Essa revolucao permlta que 0 usullrlo converse em BASIC com 0 computador e reeeba respostas Instantineas. S8 a frese nao foi bam canstrufda a mllqulna acusa urn erro de 5 I n t.a x e. Sea I a 9 i cad a seq u e n c I a d a Ins t r u e 0 est em faI~~~. 'eoisas estranhas e inesperadas come~am a acontecer.

A busea do porqui do erro e sua corre~io se

7

constltui no mats precioso recurso ~i~atjcO para apren~lzagem do BASIC.

Com base nestas descobertas feitas ao longo de anos dedicados ao enSino. derrubando ideias preconcebidas. aposent~ndo tecnlcas ineficientss. e qua chegamos a conc a cc s o deste I I v r o , d I rig I do s s p e c i f I c ama n t a ao u s u a rio Que nao conhace computa~io e quer aprender a conversar com seu computador.

Nele sao apresentados programas simples e curtos

Que 0 usuario deve digltar (mesmo sem compreende-Ios.

numa prlmeira abordagem).

Para que e s t a d r s t t a c s o s a i a eflciente. 0 l e r t u r deve lar com multo cuidado os dols capftulos inlcials. ""Dlgita!;iio a Edi~90" e "'Gravaciio em Fita"",

Apos digitar e rodar algumas vezas 0 programa. para var que efeltos ele causa no computador. 0 usuario deve efetuar as altera!;oes sugerldas e fazer suas pr6prias experlincias. Neste momento e que come!;a 0 verdadalro processo de aprenCizagem.

Ao comp I etar e s t a v o I um e . 0 lei tor. a r sm de t s r um \I a I i 0 s 0 a c fI r v 0 de pro 9 r ama s ute I 5 e dill e r tid 05. jag r avades em fita. tera aprendldo de maneira intuitiva a conversar em BASIC com sau MSX.

No aprendi2ado de uma I [ngua. a consulta aos dl~ clonarios e as gramaticas deve ser feita sempre numa tase posterior ,8 da conver9a~~0.

Analogamente. apbs sa divertir dialogando com seu micro ao longo deste I ivro. aconselhamos a consulta a obras mals sistemiticas para tamar conhecimento da -gramatlca- dos comandos e das funcoes.

Para tanto. entre outros II\lros. recomendamos a leltura do LINGUAGEM BASIC MSX desta edltora. onde estao u r s an t z a d n s . em ordem a t t ab e t l c a . as p a l a v r a s d e s t e p a d a « roso BASIC. num verdadelro d t c t o n a r Ln e n c r c l e a s d t c n .

De qualquer forma. tod05 05 programas deste ivro sao comentado5 ressal tando-se suas particularidadas e evldenCiando-sa as tecnicas empregadas.

Este e um livro que del/era ser lido. n o minima. o u a s v e z e s . na c r t me I r a . 0 leitor se d r v e r t i r a a p r e n d e n d o . Na segunda. Iii mals consclente. e tendo incorporado um certo \/ocabulario e algumas tecnicas. ele aprenderi se divertindo.

8

DIG \TAc;:AO

-

E ED·leAD

J.') 1

-, \

a

A!;sim que voce t r s a 0 c omp u t a d o r • surgem auto-

ma t l c am a n t e . na tela, duas mensagens (fig. 1.1l.

1

Sistema MSX

Y~~I" s~in 1..0 III'"

G"adientp-

MSX IIABIC y£rs5n 1.0 Br G r a diE n t e

~.'BB15 b!,jt~~!, 1 i 111'"£5

Ok



fig. 1.1

Para e l t m l n a+La s , de maneira a t a r a tela l n t e i > ramente a sua dlsposlcao para come~ar a Introduzlr SHU programa, voci devu dlgitar ao masmo tampo as taclas SHIFT a HOME/ CLS (fig. 1.2). 15S0 faz com que a tala f l q u a Ilmpa e 0 cursor 58 posiclona no alto, a esquerda .

9

fig. 1.2

l



...,

Acompanhe agora. passe a p s s s o . a dlgi t a c ji o de um programa curto. 51ga rigerosamente as instru~5es. prestande bastanfe ateneao em cada item.

o programa que queremos digltar (fig 1.31 desenha uma pequena figure na tela. Nao se preocupe. por enq u a n t o . em saber como el e funciona. pols 0 Importante neste capftulo e aprender a dlgltar .

. , j 0 f:;CI~EEN ")
~: ~ ..
~l \@: ;?0 OIM A%(8) fig. 1 .3
:]0 A ~I; ( 1 )=CHR~(&811ilil11)
i; ® 40 A~(2)~CHR'(&Bi0000001 )
~:
~~ 50 A'(3)=CHR~(&Bi0000001)
ill ~ft; 60 A$(4)=CHR~(&010000001 )
70 A$(5)~CHR~(&B1000000i)
~~1 D0 A'(6)=CHR~(&Bi000000i)
§ .:::~:~ '10 Alii (7 ) ;;;;CHI~ ~Ii (&B t 0000001 )
:.: .-:.~.
ill 9~5 A$(B)=CHR$(&Bl11il111)
:~ :::"» 100 FOI~ 1:::1 TO B: B ~r,"::F.1 'I;+tl$ ( T ) ::NEXT I
[j ,.~<
;', :1. 1<1 !:;P R I TE~1i ( 1) :;;:£1 %
:~ @ 1.20 PUT Spr~ITE 0, C=j0, 8:71) , ;.~~ , 1
:~
;% j, :30 GOTO 1::10 Comece a digitar a prlmeira linha e vela 0 cursor se movendo enquanto val deixando atras de si 0 que voc~ teelou (fig 1 .~I. Antes de comocar. aperte (uma unlca vel) CAP5 LOCK (tr eva de rna i u s c u I as). I s s o tal com que a tela flque 0 mals parecida posslvel com a I istagem impre5~ sa neste II v r n ,

5e voc@ errar alguma letra. basta apertar 8S (back space) e 0 cursor voitar~ para tras apagando.

10

[]
[j
[]
[]
[]
n
~
[]
=:J
[G:l
fig. 1.4 1..
10.
V
10 •
1.0 s.
10 He.
10 SCR.
10 seRE.
1.0 SCrH"::.
10 SCREEN.
10 SCREEN •
1.0 SCREEN ~!.
" AD torminar a dlgita~ao da I inha

10 SCREEN ~).

voc~ vi 0 cursor, alnda no frente do ultimo caractere, ~ espera da Introdu~ao de mais letras ou numeros. Para informar aD seu Expert que esta I inhe terrninou, voce deve t e c t a r RETURN ( .. ).

11

Neste momento 0 cursor pula para a proxima Iinha lia tela. a e s p e r a de mals l n s t r u c d e s , AD mesmo tempo a 11- nha 10 ~ armazenada na momorla (fig. 1.5).

I

.

fig. 1.5

Para v e rl f t c a-r t s s o . IImp8 a t a l a (SHIFT + HOMEI ClS) e Iiste 0 c o n t auc o d a memoria (SHIFT + F4/F9). A tela devera ficar como Indlcado na figura 1.6.

fig. 1.6

'I i ~;!:

10 SCREEN 2 Ok



ij$~I~i:HI + IP3

Esta I n s t r u cjin . quando for e x e cu t ac a . p s d 1 ra a n Export para colocar a tela no modo grafieo de alta resolucio. salndo do modo texto (Que ~ 0 que 8stamos usando agor a I ).

Continuando a dlgltacio do programa.vamos I impar a tela (SHIFT + HOME/CLS) e dlgltar a Iinha

~'0 DIM A'T'( 8)

eonforme a f I gura '.7. Ao chegar no f l m , nao e s eu e c a de tee I ar RETURN ( .r i ,

fig. 1.7

rG:I ~).

LG] 20.

~.!0 • 12

[(J [] []

[]

a+~ ~

[3LJt~

1m

~.~0 D.
V
~~0 Dl.
~,~0 DIM.
20 DIM •
~,~0 DIM A.
;,~0 DIM A9,.
;;'~0 DIM M,(.
20 OIM A'I\(B.
:';'~0 DIM A9,(13).
;.~0 OH1 ,;$(8)
• Limpe a tela no~amente e I Iste 0 conte~do da mem6ria. Agora voc~ ter~ 0 que est~ indicando a figura 1 _8.

fig. 1.8

"I i s t

:1. 0 SCI~ E I:~N :? 20 DIM A$(f:l) Ok



13

Co~ • tnsttucio desta IIAhl voci reservou e posl~oes de mem6tl ••

Di~'~os, POt IXlmplo, qUI yoci quisissl resatvat IPlnlS 7 POSI.086 I nio B. P,r. corrlglr • Instrucio que J' Ista na mlm6rl~, tlmos 2 solueols •

1- Rldlglt8~~S toda a Iinha na nova versio Cnio faea Isto. aplnlS lall),

20 DIM At. (7)

Nlsta CISO. aD t e c j arme s RETURN (oJ ) I antlgi

Iinha 20 , substlturda.na mem6ria.plla nova.

2- Editamos a tlnha que i' 1st' na tell. Nestl casa com 0 auxilio diS sltas. lavamos 0 cursor at' 0 dlgito QUI Queremos corrlglr I teclamos 0 7 1m clma do 8. Faca Isto e confirms na flgura 1.9.

fig. 1.9

1 i st

10 SCREEN 2 20 DIM At. ('¥I'

Ok 0

1 i st

10 SCREEN 2 20 DIM A9d 7[J Ok

1 i st

10 SCREEN 2 20 DIM A!i(7) IT)<

Tecla RETURN { oJ J novamentl .. Nio 51 assuste com a mensagem Syntax error {fig 1.1DI e continue acompanhando o texto.

fig. 1.10

I

1 i ~; t

j_0 SCREEN ~ 20 OIM A!Ji(71 Ok

~:;ynta)": €Fr"<:W Ok



Digamos agora que voe~ queira alterar a Iinha

para

20 DIM A'L(nl)

Neste caso. voeg lever' 0 cursor at~ 0 par@ntesas que esta sendo fechado a teclara INSERT (aeompanhe 0 proeesso na fig. 1.11). 0 cursor ficar' p s t a ma t a d e . indlcando que 0 pr6ximo caractere a ser digltado nio S8 50- brepora ao qU8 i' 8St' nO local. mas slm 0 des'oeara para a direita. Inserlndo-se no espa~o asslm aberto. Dlgite 0 8 que voc@ e u a r I a Inserir e logo em segulda tecla RETURN!").

fig.

1 . 11

(3

"i i s t

1.0 SCREEN 2 20 DIM A'f,( 7(l 01<

elY n t a:{ "r"I' O~ Ok

11 x

4 x "\.,23

""1 i !r.t

10 SCREEN 2 ;:>0 DIM AS; ( hb

01<

~:;y ot ax f:n'"Ie (II'" Ok

r'j i ~,t:

10 SCREEN ;;>

;"~0 DIM AIIi(7B[b Ok

-"hin t <ilN en' (li' Ok

1 i ~:; t

j0 !:;CI~EEN ;;! 20 DIM A!Ji (71,1) m.<

Sld r1 t: ,n, cr: r" or-

Ok

15

Vamos I Istar 0 conte&do da mem6rla? (SHlfT+F4) Oeverj aparaeer 0 Indlcado na flgura 1.12.

fig. 1.12

ijSHIF!.:( + !I~~I ~U$Hi~*81 + rrn;1

1 i s t

j.0 SCREEN ~~ ;.:!0 DIM A'Ii(7S) Ok



Vamos v c I tar agor·a ~ j ns t r ua a n or I gina I. reservando apenas B posl~oes. Leve 0 cursor ate 0 caractera 7 e d t s t t e DELETE (fig. 1.13).

fig. 1.13

1 1st

10 SCREEN 2 20 DIM A$ (2J8) Ok

1 i st

1.0 SCREEN 2 ~>'0 DIM A$(rn:J) Ok

11

.

.

,

.

1 i st

1.0 SCREEN ;.? 20 DIM M;(8) IIi<"

Nesta altura. voci JA dave ter percebido a diferen~a entre apagar com BS a com DELETE.

Caso nao tenha. Ilmpe a tela (SHIFT+HOME/CLS) e digits 123456789.

16

A s e s u I r , tee I e RETURN ( ,.I) e novamente a sequencia 123456789 (s8gulda da outro RETURN),

A tela fieara como indicado na figura 1,14.

fig. 1,14

l. 2::14:iI.,7l19

!'l;l n t <\ ;.: E: I" I" I:H' Ok

l. ~)34 :',)67[1'7 flynt:a~·: err or Ok



leve 0 cursor ate 0 5 da primeira sequencia 8 dig i te BS c u a t r o vales (f i s , 1. 15). t e v e agora 0 cursor ate a 5 da segunda sequuncla a tecle DELETE quatro vezes ( fig. 1,16).

fig. 1,15

[:;::]67[19

Sy n t: a:·: err eli" 01<

i :?::I4:567fl9

~:;\Jl'ltaH e rror

Ok

r

t 4KfE3

~';67B9

E) !j n t i:;\ ).: E:~ I'· I'· (J 1"-

Ok

i2::I~

!:>!,jrl t: a i: €-:I"I"Dr' 0k

fig, 1,16

Agora Que voce percebeu a diferen~a, I impe a

tela (SHIFT+HOME/ClS) e vamos continuer a digjta~ao,

17

Olglte a Ilnhl 3D (nio e5qUG~1 0 RETURN no flna I I l III I II nhl '40 (III RETURNI). A fa I II fer' Igora 0 Ispacto mostrado na flgura 1.17.

fig. 1.17

30 A$(1)=CHR~(&Bl1111111) 40 A$(2)=CHRS(&810000001)



Olhando para 0 programa original (fig. 1.3) \/erlflcamos que a linha 50 ,. pratlcamenta 'gual a 40. Para poupar trabalho de dlgltacio. podemos usar 0 segulnta truque, sublmos 0 cursor at' a Iinha 40 {Icompanhe pell flgura '.181. substlturmos 0 4 Plio 5 III dlslocamos 0 cursor at' 0 2. substltulndo-o por um 3. Ao tlclarmos RETURN Ista nova I 'nha , Incorporlda na mam6rla slm qua 8 40 sIja .pagada.

fig. 1.18

[!J

5·G

[(:]

.

.

18

, -

30 A$(1)=CHR$(&Bl1iil111l

~ A$(2)=CHR$(&B10000001l

-

30 AS(i)=CHR$(&Bil111111)

---------------~ ~ A$(2)=CHR$(&B10000001)

-

30 A$(1)=CHR$(&Bl1111111)

50 A$(~)=CHR$(&B10000001)

.,. -

30 A$(1)=CHR$(&Bl1111111)

50 A$(4IFCHR$(&B10000001)

Pa r a 5 e c e r t I 1 I car dis 5 0, 1 Imp eat e 111 e I 1st e 0 c nn t a u d n d.a rnem6rla (fig. 1.19).

fig. 1.19

K'~$H'FT§I + ~--'------

~o;~H!fr;1 + r~ ---t_

Ii st

10 SCREEN 2 20 DIM A%(81

30 AS(11-CHR$(&Bl11111111) 40 A$(2)~CHRS(&810000'00i) 50 AS(3)-CHR$(&B100000001) Ok



Usando essa Iistagern Yoci pode gerar 0 resto do prograrne I as I I nhas 60, 70, BD 13 90 podern ser c r I a d a s a partir da I Inha 50 (nio esque~a 0 RETURN para colecar cada nova linha na rnem6rla).

A Iinha 95 pode ser crlada a partir da [[nha 30 e 85 outras devern, I nf·e I I zrnente, ser dig I tades e o r I nte 1- roo Nio se pteocupe com a ordem com a qual as I Inhas siD Inserldas na rnem6rla. a EXPERT sa encarrega da arqulvi-Ias em ordern num6rlca crescente. AD termlnar a dlglta~io, Ilmpe a tela e I Iste a mern6rla.

A tela daver~ rnDstrar 0 prograrna iguallinho A figural.S.

Conflra com culdado pols cada v(rgula ~ fundamental para QUC 0 programa funcione.

5e houver necessldade de corre~aes, use todos os truQues aprendldos at' aQul mas nio se eSQueca de teclar RETURN para Insarlr urna I Inha nova ou alterada na rnem6rla.

Llmpe a tela (SHIFT+HOME/CLS) e vamos rodar D programa. Para Isto basta teclar F5.

A tela se p5e no modo griflco e aparece 0 quadrado definldo pelos dfgitos 1 eO das variAvels AS (1ig. 1.20) .

fig. 1.20

o

19

Onde ha um diglto 1, 0 ponto e aceso, onde ha um dlglto 0, ele e d a t x a d o apagado (fig. 1.21).

fig. 1.21

A~Ii( 1) A1j( 2) M(3) M(4) A'Ji< 5) A<f,(6l A%(7 ) M(8)

1 1 i 1 1 1 1 1
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
1 0 0 0 .0 0 0 1
1 0 0 0 0 0 0 1.
1 l. 1 1. 1 1 l, 1. Digamos que voce queira alterar 0 desenho. Para isto basta I Istar 0 programa novamente e alterar alguns 1 eO.

Antes. por'm. vamos aprender mals um truque multo uti I para quem tern todos os programas deste I Ivro pela frente. Voc~ dave ter reparado quantas vazes I impamos a tela e I Istamos 0 programa. Toda vez que uma opera~ao , multo repetltiva. e convenlente atribui-Ia a uma tecla de fun~iD. para poupar trabalho.

Vejamos como fazer iSso. Iniclalmente digits

CONTROL+STOP para Interromper 0 programa. A tela assumira o aspectu da flgura 1.22.

fig. 1.22

Br'eak in 1,]0

i

Ap6s 0 RETURN a I istagem das chaves de fun~io que aparace na ~Itlma Iinha da tela' alterada (fig.1 .23).

Aperte a tecla F1 (que fol redell~ida) e voce t era ate I a I I mp a e 0 pro gram a t 0 dol 1st ado. seq u I s e r brlnear urn pouco, 'aperte F1 varlas vazes.

Agora cutdado. se voci desllgar 0 computador. alem de perder 0 programa que voc~ digltou at6 aqul, parder' 0 ccnte~do da. tecla F1. voltando aD -color· que havie o r t s t n a l me n t e ,

20

f i 9. 1.23

E1f'f?ak in i 30 Ok

KEY i. "CLS:LISTH+CHR$(13) Ok



CLS:L.IST

auto

got 0

1 i st

Altere agora 0 programa mudando 1 e 0 de manelra a obter 0 Indlcado na flgura 1.2~. lembre-se que as altera~oe5 50mente sio raglstradas na memoria sa a tacla RET!JRN ( .I) for aclonadal

f 19. 1. 2~

21

Para eertlflear-sa dls50. tecl. fl e verlflqUe 58 suas alt8ra~oes eolneldem com a flgura 1.25. Teele f5 (RUN) para aclon.r 0 program •• vejl 0 efelto d. suas .,t.ral;o.s.

fig. 1.25

10 SCREEN 2 20 DIM A$(B)

30 A$(1)=CHR$(&Bllll1111) 40 A$(2)=CHR$(&B10000001) 50 A$(3)=CHR$(&B10100101) 60 A$(4)=CHR$(&B10000001} 70 A$(5)=CHR$(&B10100101) 80 A$(6)=CHR$(&B10011001) 90 A$(7)=CHR$(&B10000001) 95 A$(8)=CHR$(&Bl1111111)

100 FOR 1=1 TO 8=B$=B$+A$(I):NEXT I 110 SPRITE$(l)=B$

120 PUT SPRITE 0.(50.85),2.1 130 GOTO 120

Sa quls., ampl'" • flgura. brlque 0 prOgram.

{GONTROL+STOPL t t s r e -u IF1'. a t t e e e I Ilnhl 10 para

10 SCREEN 2.1

llmpe a t.la (SHifT + HOM€/GLS) 1 rod.-o de novo dtgltando f5.

Agora yoei pod. brlnear. vontade. montando a flgurlnha que qulser e p05lelonando-a onde quls.,.

Para alterlr a flgurlnha. basta Iiterar a sequine;a de 1 eO. mantendo-s'. por'm. dentro de uma tabela 8x8.

A poslcio e a cor dl flgurlnha SiD dadas pela I I n hal 20 (f I g. 1. 26 ) .

fig. 1.26

22

120 PUT SPRITE 0.(50.B5).[~.1

l_!d:GOR

llNHA (aU 191) COlUNA (at6 255)

Uma altara~io garando 8feltos malUCDs serla.

120 PUT SPRITE 0,C255*RNDC2l,191*RND(2»,13*RND(2)+2,1

Fa~a-a a veja seus e1eitosl

Antes da partir para a dlgltaeio de outros pragramas. poram. sarla conveniente qua ~oce aprendesse mals alguns truques.

Liste 0 programa e caloque a cursor no come~a (basta dlgitar HOME/CLS. sam SHIFTI >.

Olgite agora CONTROL+F. a cursor sa posiclona no Iniclo da palavra sagulnte!

Faea isso v~rlas vales a vela que 0 EXPERT sntande porNpalavra sagulnti'a que comaee par letra au al-

garismo.

o camlnho

Inverso' dado par CONTROL+8 (fig.

1.271.

fig. 1.27

'f?~ImR'I+[] PALAVRA SEGUINTE

PAlAVRA ANTER I OR----IRJ+~

liste a programa (F1) a coloqua a cursor no comeeo (HOME au CONTROL+K).

Oesloque a cursor ate a meio da I inha 10 (em clrna daR. par e x emp l n ) a d l s t t a CONTAOl+E (fig. 1.28).

fl g. '.28

1.0 f..>IID:EN ~, 20 DIM A$(8)

1.0 SC.

;:~0 DIM A%(8)

Esse comando apaga dasde a cursor at6 a fim da I !nha de programa!

23

Um qua tam afattos mats drasttcos , 0 CONTROL+U.

Coloqua 0 cursor sobra 0 M de I Inha 2D a di esse comando ( f i 9. 1.29 ) .

fig. 1.29

j,0 BC

20 DllEl A$(8)

30 A$(1)=CHR$(&Bll1iill1)

10 SC •

30 A$(1}~CHR$(&Bl11il111)

Outro comando lItil I! 0 CONTROL+N. ale lava 0 cursor atl! 0 flm da linha ds BASIC. permltlndo ume boa Bconomla de tempo Bm certos casos.

COloqus nOl/amants 0 cursor em elma (HOME) a comece a ap e r t a r a t s c l a TAB r cu CONTROL+I. tanto faz!). 0 cursor come~a a andar de 8 ~m 8 posl~6ss arrasan~o 0 qua BSta no camlnho.

Estes astragos, porim. 56 58 tornam dsflnltlvos se voci -oficlal 126-los- dlgitando RETURN.

Se voc§, poram. Ilmpar a te I a (SHI FT+HOME/CLS) 8 teclar F1. vera que 0 programa alnda esta na mem6rla.

~s vazes, Interrompendo algum programa no meio da eKecu~io, a cor de frente e de fundo sao Idintlcas e nio consegu l mn s I er ma 15 nada (voci j a tentou 'e s c r e v e r com tlnta lIerde sobre p ap e l verde?).

Nests caso dlglte f6 (SHIFT + F1) para reestabelacer fundo preto B tlnta brancal

Flnalmente, urn comando Importantfsslmo.

CONTROL+G . Ele nio faz absolutamante nada a nio ser urn -beep· ssm graca cuja &nlca funciio 'chataar parentes e IIlzlnhosl

Mios a obra s dlvlrta-sel

2"1

GRAVACAO EM F\TA

o EXPERT possui dois tipos de mem6rias. a ROM e

a RAM.

A ROM js vern com todo 0 seu conteudo gravado de fabr i ca e ne I a naopodem ser nem acr e s c e n t a d a s nem e lim 1- nadas informa~5es.

Na RAM. am compensacao, podemos esc rever e apagar a v o n t a d e . E como sa a ROM fosse um I ivro js i mp r e s s o e a RAM urn quadro negro no qual podemos usar giz e apagador.

Quando d a s l Igamos 0 micro, 0 c n n t a u u o da RAM. onde 0 usuarlo escreve seU5 programas em BASIC. e apagado enquanto que 0 da ROM e preservado.

Para arquivar um programa escrito na RAM, voce deve entao grava-Io. S6 no seu EXPERT estiver conectado urn ndlsk-driven (Sistema de disco magnetlco). basta digitar

SAVE "nome do programa"

e ele S6ra gravado no disco com 0 titulo escolhldo.

Se voce qulser graVa-lo em fita cassata, devera tomar alguns cuidad05.

CONEXAO DE CABOS

Ligue 0 cabo do gravador na parta traseira do console (conexao DATA-CORDER) conforme a fig. 2.1.

fig. 2.1

25

No o u t r o termi n a I do cabo v o c s tern 3 pi u9S (f 19. 2.21. 0 ~ermelho dave sar conectado na entrada do microfone do gravador (MIG). E atraviis deste terminal qlle p a s s am es Informacoes do complltador para 0 gravador.

o terminal branco SBrve para mandar informacces do gravador para 0 computador e dave ser conectado na entrada EAR (MONITOR. em certos gravadores).

a plug preto (mais fino que os outros dols) Ii 0 centrole remota do motor (REM) e nio preclsa ser obrigatoriamente conectado, pols alguns gravadoras nao possuem 8ste recurso.

Ne DATA-GORDER da Gradlente ele deve ser conectado em REM 0 que permlta que 0 pr6pr 10 computador I Igue e de s l I sue 0 motor que fa·2 a f Ita andar.

f i 9. 2.2

GRAVAC~O DO PROGRAHA

Olglte este curto programa no Expert,

f i 9. 2.3

*lID 1.0 REM PROGF~ AMA UN
~"?0 SCREEN j_
H ae FOR N -- 0 TO 25~:j
40 VPOI(E 61,44 of- N,N
~~ se NEXT N
MI) L.OCATE 0,B Se Voce tlver curl051dade de saber 0 faz. rode-o com F5 (RUN) algumas vazes e deaols tela (SHIFT+HOME/GLS).

Oepols dlglte,

que ale I impe a

CSAVE "UM" (sam teclar RETURNI)

26

Verlfiqua 58 • fita ast' bam pusiclonad. 8 51 0 trecho inlclal (sam matarlal magn6tlco) i' fol ultrapass'do. Aperta as taclls PLAY e REC (griva~io). No DATA-CORDER 'sso corraponda is taclas SAVE a LOAD.

Se 0 plug REM astlvar con8ctado. a fit. ficar' parada. Caso contr'rio. coma~.r' a rodar.

Digit. RETURN {~ , a a grava~io come~ar6.

Ao termlnar. aparaeer' urn Ok na tell. Para 0 gravador 58 0 plug REM nio estlver eonoctado (58 astlver. all parar' 50zlnho).

Limpa , tell (SHIFT+HOME/CLS) e I ista 0 prog~aml ( SH I FT-tF" ,.

AI tare-D. Igorl. conforms • I Ista;gem da t I gura

2.4.

fig. 2.4

I ff?- 10 REM PROGRAMA DOIS
20 SCREEN 1
.Q 30 FOR N = 0 TO 255
~ 40 VPOI<E 6144 + N,N
I ® 45 VPOI<E 8192 + N,N
50 NEXT N
I 0 60 LOCATE 0,e 5e tiver curlosldlde. roda-o com fS (RUN). Llmpe. tall a liste 0 programa. Sau Elpert PIrece agOra um .rlequim blbado. Nio se preocupel TICl8 F6 (SH 1FT ... F1' 8 a ordem S8r' r e s t ab e te c i da.

Com I fitl parada no final do programa UM dlgl-

te,

CSAVE "OOIS"

e repita todo 0 ,rocedimsnto de sravacio.

LEITURA DA FITA

a OOIS).

Vamos 8gora recuparar 05 prOgramas gr.vI~os CUM

Rebobine a fltl It' 0 e eme c c , Ilmpe a telil 8. 5' quiser .• RAM do computldor tlmb6m (dlgltando NEW a RETURN ou entia dlsligando 0 computldor).

DI!lita ilgora.

CLOAD "'DOI5" 150m RETURN alndo,)

Aparte PLAY(ou LOAD no DATA-CORDlR) no comput.dor. a leltura coma;ar'.

RETURNI ~ )

27

So tudo ostlvar correto, a leltura passara pelo programa UM mas nao 0 carragars na memoria pols vocS pedlu o 0015, Isto sar' Indlcado na tela por

Sk i p: UM

A 5 e 9 u I r , 0 "t r t u I 0 ( s I'> 0 t r t u I 0 I .,. d 0 s e guo d 0

programa sera lido e a tela mostrara,

f"mHld:DOIS

Depols dlsso. 0 programa propriamenta dito sera II d o , a a te I a I od I cara 0 f 1m do p r o c e s s e mostr ando Ok. .

Llste 0 programa com F9 (SHIFT+FQ) e voce dave encontrar 0 programa da flgura 2,Q,

PROBLEMAS NA LEITURA

So 0 procedimento de leltura descrlto oao correu conforme 0 esperado, hauve algum problema que vamos agora tentar contornar.

Os gravedores comuns sao projetados para reprod u z t r SOM e nlio 0 sinai dlgltallzado de um c omp u t a d o r , Consequentemento, eles devem ser regulados e aiustaaos, Isto corresponds mals ou menos a aflnar urn viol 100. uma V8Z felto 0 aiusta. se nlnguem mexer. a afinaeao durara por multo tempo.

,) Ve r I f I que sea fit a II deb 0 a qua I I dad e. Ex i 5 tern fit a s de p'sslma qualldade Que soltam a emulsiio magnl!tlca (5Ujando Inclusive a cabe~a de gravaciio). Niio use fltas de longa duraciio. sendo Ideal a G-cO o u . no mliximo, a C-30.

21 Llmpe a cabeea de grav8eiio com cotonete embebldo em '1- cool. OelKe secar. Para gravadores com multo uso (30 horas ou mals), convl!m desmagnetlzar 0 cabeeote (qualquar ridlot'cnlco faz IS50 am 5 mlnutos).

3) Verl11que se 0 cabo nio est' com de1elto.

4) Evite qualquer vl~inhanea com 10ntes de polul~io magnl!tlca. Imis. bobloas. transformadores. traseiras de televisao, reatores de limpadas 1luorescentes. matores elutrlcos. emlssaras de FM. etc.

5) Fa~a uma boa gravaeio, repetindo os procedlmentos indlcados neste caprtulo, e tente ler 05 dados mudando 0 ajuste de volume e tonal idade (se exlstir este controle no seu gravador). Tenha paclencla e tente todas as comblnaeoes posslvels.

Asslm Que consegulr a leltura anote os valores 6timos ou, melhor alnda. faea uma marca nos controles.

6) 5e tudo isto nao funcionar. troque 0 gravador. pols exlstem alguns modelos q~e s6 sao compatrvels com computadores ap65 sl!rlas modlficaeoes de elrcuito. Lembre-5e

28

Que uma boa reproduceD de musica nao tern nada a ver com gravaCao de bits.

7) Use, para r e r t ur a . 0 mesmo gravallor usado para eao. Ligeiras mudancas de rotaeao ou na regulagem mute (§ngu lode a I I nhamento da c ab a c a de grava~ao) incompatlbi I izar a gravacao com a laitura.

gravado azipodam

LEITURA DE FITAS DE TERCEIROS

Quando voce tam gravador diferente do seu. tura.

uma f I t a Que fo 1 gravada num podem ocorrer problemas de 181-

o mais t~ci I de ser rasolvldo ~ 0 que se refere aD volume. as vezes voce deve procurar um ajusta diferente do usual.

o outro problema e do alinhamento do c a b e c c t e . VeriflQue 0 ajuste do azimute da cabeca que , feito por um pequeno parafuso do lado Bsquerdo (flgura 2.51. Em alguns gravadores jli e x l s t s urn furo para alcanca- 10 com uma chave de fenda. Em outros. 0 furo deve ser aberto com urna furadeira. Ponha 0 programa para rodar e ouea-ol Girando 0 parafuso do azimute de um lado para ooutro voce deve a c n a r urn ponto de a s t r 1 dane I a max Ima. Esse e o ponto de ajuste.

fig. 2.5

cabeea de gravacao

a i uste do a z imute

Lembre-sa. porem. que ao regular 0 gravadar para outras fltas. vocij 0 estb desregulando para 'as suas.

Um e r c c e e Imento i nte II s e n t e ser i a de nao rn a x a r em seu gravador e fazer toda essa procura cam outro. Ap6s consegulr lar a flta e carregar 0 programa no seu computador. grave-o novamente no SEU gravador de manelra a ter uma grava~ao compatfval.

29

Para crlar sua cole~ao de programas e conveniente ser organ i zado.

A FITOTECA

1) Fa~a urn caderno reglstrande as f itas. seu c e n t eu d e e. se possivel. a marca~ao do contador correspondente aD infclo de cada programa.

2) Use fltas curtas. nao s6 por motlvos teonicos (as longas sao rna i 5 f r a s e Is) mas tamb~m para fac i I I tar a n u s c a de urn determlnado programa.

3) Armazene as tltas longe do calor. umidadB B campos magnUlcos.

4) Tendo uma fita de conteudo descanhecido, carregue as pragramas sequencialmente usanda 0 comando

CLOAD

Desta forma. Il pr Imel ro e r n s r ae e que for I I do s e r s carregado. Identlfique-o e continue 0 procedlmento ate 0 tim. de rnaneira a levantar 0 indice do conteudo.

5) Nao seja possivel no "gentleman",

"paD-duroN, caple fltas para os amlgos (se "gravadOr delesl). s e i a . por&m. um p t r a t a cite sempre a fonte e 0 autor do programa.

5) 80m divertlmentol

3D

AJUSTE DE IV

INSTRUC6ES

Uma das prlmelras colsas que voce deve tazer ao Ilgar um computador num aparalho de TV 'ajust'-Io para qua a Imagem na tala nio ·cansa- a vista. 05 monltoros de video (aparelhos espoclals para uso com computadores) em garal produzem Imagens multo boas. tornando desnecassaria uma malor preocupacio do usuarlo com seu aluste. fntretanto. mesmo que voci passu a um, nao perdera nada dlgltando este programa.

Quando executado. ele gera uma Imagem no video e uma sequencia de notas musicals.

. A Imagem p n s s u l 13 t l nh a s horizontals e 17 IJ-

nhas verticals ocupando toda a tela. No centro da tela' construfda uma esfera com urna espicle de visor. e na parte Inferior sio apresentadas as 16 cores com seus r8spectlvos c6dlgos (fig. 3.1).

f 19. 3.1



ifl!i w-_ !-lrt ~~

El
I R ALEPH H-J
r~
~



011 I:;. 13 " Is Eo 7 IR ... 1 ~ 111 1>1 Ip j4 11-
31

Quaodo a TV asta bern ajustada. a Imagam dave flcar flxa a lotalramante dantro da tela (axceto a palavra ALEPH no centro). com as I lohas horizontals REALMENTE HORIZONTAlS a com as I lohas verticals REALMENTE VERTIGAIS. AIBm disso. 05 sons gerados devam sar nftidos a altos.

Sa a sue TV nao produzlr 0 que dascravemos. oio chama 0 tecnlCD alndal Exlstam alguns pontos chavas a SBrem veriflcados e que podam ser os responsaveis pela rna qua I I dade d a Imagem ou do soml

Aotas de mals nada. tente ajustar melhor 0 botio de slntonla da TV. Se 1550 oio resolver. verlflque se 0 canal seleciooado e 0 mesmo 00 micro. no aparelho de TV e 00 adaptador. caso ele asteia sendo usado. Nao obtando sucasso num c a n a I. t e n t a no outro (am gera'. ex I stem do Is canals permltldos! l.

A maloria dos aparelhos de TV permltem tambam um ajusta Individual da slntoola vertical e horizontal atraves da botoas situados na parte traselra. Usa-os apenas como ultimo recursol

Quando consegu i r urna imagem Bstave I. r e s u I B 0 contraste e 0 brllho de modo a oBo prejudlcar saus olhos. Guarde as posi~oes em que ostio os botoes para qua nas pr6xlmas vezes seu trabalho soja mlnimlzado.

Gom 0 aparelho de TV corretamente ajustado. voce pode programar sem se cansarl

DIGITAC;:ZO

Este programa oio envolve oenhuma dificuldade par a 5 e r i n t rod u z i do. En t rat ant 0 • s e v 0 c ii n i 0 po s sui mu I - ta pratlca com 0 teclado do MSX, presta bastanta ateo~iol

Gomo Ja vlmos no primeiro capitulo. voci pode economlzar tempo 08 dlgitacio de I lohas semelhantes. bastando para IS50 I e v ar 0 cursor at' a lFnh a j III I ntroduz I d a . m~dar seu n6mero e alterar seu conte6do.

A I Inha 50 pode servlr de base para Introducio na s Ilohas 110. 140. 180. 260 e 270. pols todas sio abarturas de I a c o s fOR ... NEXT.

A Iinha 100. Igualmante. po de ser usada para s e r a r as Iinhas 130.160.210 e 340.

A t i nna 90 pode ser traosformada nas Iinhas 120. 150, 220. 230 a 290.

A I I nha 170 p o d a s s r ar as Ii nhas 190, 200 a 240. As demals t t n n a s sio dlstlotas. 'ap ss a r de algumas posBulrem partes semelhantes. Nio se parde multo tempo dlgltando-as separadamente.

10 20 30

AJuste de TV HAXFILES=1

OPEN uGRP;" FOR OUTPUT AS "1

32

AN~L:SE

40 SCREEN 2,I=COLOR 4,7,S:CLS 50 FOR F=0 TO 15

60 G=F*16:H=G+15

70 PRESET(G+5*(G)0),16B) 80 PRINT Ml,F

90 LINE(G,176)-(H,191),F,BF 100 NEXT F

110 FOR F=0 TO 256 STEP 16 120 LINECF,0)-(F,192)

130 NEXT F

140 FOR F=0 TO 192 STEP 16 150 LINE(0,F)-(255,F)

160 NEXT F

170 CIRCLE(12B.BB),58,7:PAINT(12B,'BB).7

,180 FOR 8=57 TO 4 STEP-8

190 CIRCLE(128.88),57,4 •• ,57/B 200 CIRCLE(128,88),57,4,.,B/57 210 NEXT B

220 LINE(128.30)-(128;160).4 230 LINE(71.88)-(184,88),4

240 CIRCLE(128,88),20.7;PAINT(128,88).7

250 BS=" ALEPH"

260 FOR F=49 TO 56 270 FOR 0=65 TO 71

280 LINE (108,84)-(150,92).7.8F 290 PRESET(110.84):AS=RIGHTS(8S.5) 300 PRINTM1.A$

310 Bi=RIGHTS(BS,l)+LEFTS(BS,10) 320 P$="V150"+CHR$(F)+CHRS(G) 330 PLAY PS,PS.P$

340 NEXT G.F

350 GOTO 260

e~ t ®l I

$1

-I

Vamos agora e5tud~r urn pouco 855e programa e tentar id8ntificar SUBS partes principals.

As I innas iniciais. at~ a qo. aoanas preoaram a tela para e produ~io 'da irnagem. dafiniodo a cor de borda. do fundo e do primelro plano que serio usadas e abrlndo um arquivo n~ tela d8 alta resolu~io. Nio 58 preocupe multo com 1550 por enquantol

33

o la~o entre as I Inhas 50 e 100 produz as cores e seus cbdlgos na parte inferior do video.

o l a c o entre as l l nh a s 110 e 130 p r n d u z as 11- nhas verticals. e 0 la~o entre as I Inhas 140 B 160 produ2 as Iinhas horizontals.

A I Inha 170 I impa uma area circular no centro da tela onde posteriormente 0 la~o antre as I inhas 180 e 210 gera uma esfera.

As 1 Inha~ 220 e 230 completam a flgura da estera no centro da te I a e a I I nha 2"10 Ilmpa uma outra reg I Sio circular e menor no seu cantro. Oentro dassa reg lao e apresentada. como sa estlvesse giranno. a palavra ALEPH. enquanto as notas musicals vao sendo produzidas.

As notas a a palavr8 giranno sao produzidas pelas I Inhas finals do programa. Par enquanto nao e necessaria que as estudemos .

. Agora que)a identlficamos as prinCipals partes do pr agrama. vamos fazer a I gumas expo r I encl as com e Ie. Antes. por~m. b conveniente qua voce 0 grave sa for uti I iza- 10 posterlormentel

Altere as I inhas 110 e 1"10 colocando STEP 8 ao Inves de STEP 16. 1550 fara com que aumentem as Iinhas no vrdeo.

Agora mUDa a STEP-8 da I inha 180 para STEP-<l.

Assim. a esfera produzida tera uma superffcie mais DataIhadal Uma altera~ao mais drastica pode SBr obtlda mudando de 7 para <I a cor def I n I da na Ii nha 170. e mudando de "I para 7 a cor detinida n a s l t n h a s 190. 200. 22D e 230. Com essas alterac5es. a estera do centro da tela 58 dege-

nera.

Gomo ultima sugestao. acrescente a Iinha,

165 CIRCLE(128.881.58,7'PAINT(i28,88).7

IS50 faz com que a esfera central seja novamente produzida. porem de uma forma urn pouco altaradal

Agora b a sua vez de propor novas alteracoesl Tente melhorar 0 -vlsual- do programal

,

CALE\D05(OP \0

IHSTRUCoES

[ste programa nio ~ urn joi~. Nem tampouco urn ut l t Lt e r f o .. fie L c n n t u d o , urn programa c r J at tvn l

A palavra CALEIOOSC6PI0 prov~m do grego CALEIOOS (~do n e r o ) + SCOPIO (~vlsor), portanto. slgnlflca VISOR 00 BELD. 1550 define para que serve 0 programal

Ouem la fez urn caleldosc6plo com papel50 Vldr05 coloridos e aspelhos. saba que 0 nOmaro de imagens difarantes que so pode observar .atrav~s dele ~ multo granda. Nosso programa. apesar de bastante curto. ~ capaz de gorar mllh5es e mllh5es de 'iguras dlferentes no video do MSX.

Cada flgura ~ formada por qUatro partes perfeltamenta slm6trlcas. dando-nos a Impressio de que a tela ~ o Interior de urn caleldosc6plo. Vocij Olinda pode particlpar dOl confec~io dOl figura dlgltando qualquer tecla de letras. Experlmente para ver!.

OIGITACZO

D programa ~ bastante curto mas. mesmo a~slm. se voc~ qulser economlzar tempo. tome multo culdade ao digit a r a s lin has c om v €I ria 5 Ins t r u ~ ii e 5 so par a d asp 0 r dol s p n n t n s a ut I I 110 as Ii nhas it! i ntr n du z i daspar a s e r a r outrOIS. s arnp r e qua passive I.

Observe na I istagem alle a I Inha 40 pode ser usada para p r n du z Ir a 50. Est;1. e o r sua v e z , serve de base para a I I nn a 71l.

A I inha 90 pode ser usada para gerar as linhas mo. 110 a 120.

Lembre-se. para usar uma I inha la dlgltada. leva o cursor atb ala. altere seu n6mero e sell conte6do (50 noc e s s a r tn ) e dlglte RETURNI

35

~
~ e
~
,.
~
<
~ @
~
~
f. ®
~
~
~
~ ®
I
$
1
1 ®
1
! $
1
,
!
i @
~ ANtiLISE

10 Caleidoscopio

20· SCREEN 3:C=84:1=127=0=0:E=0 30 FOR G=E TO C*(1+RNO(-TIME)*3>

40 H=INT(36*RNO(-TIME»:IF H/4(>H\4 THE N 40

50 O=INT(D+H*RNO(-TIME»:IF D/4C)O\4 TH EN 50

60 E=INT(E+H*RNO(-TIME»:IF E/4()E\4 TH EN 60

70 D=D AND O(=C:E=E AND E(=C

80 K=INT(2+13*RND(-TIME»:P$=HV15S14M40 00LBNH+STR$CINT(RND(-TIME)*60+9»:PLAY P$

90 PSET(I+D.C+E),K:PSETCI+D,C-E),K 100 PSET(I-O,C+E),K:PSET(I-D.C-E),K 110 PSET(I+E,C+O),K:PSET(I+E,C-O).K 120 PSET(I-E.C+O),K:PSET(I-E,C-D),K 130 IF INKEY$(>HH THEN CLS

140 NEXT G:GOTO 20

o fu~clanamenta d~ CALEIDOSC6PIQ 6 bastante sImples. A I tnha 20 define a tela a ser usada (no caso. a teta grAfica de ~aixa resolu~io) e atrlbul os valores Inlclals ~s varl!v6ls C. I. 0 e E.

AI Inha SO abre urn laco que ser! repetido urn nCamero Indeflnldo de vezes.

As r l n h as e n t r a 40 e 70 servem para garar dols nCameros aleat6rlos e Inser.I-los nas varl{ivels 0 e E. Elas serio usadas para produllr a flgura no vfdeo.

A I I nn a 80 1 nse.r e urn numaro entra 2 a 14 na vari{ivel K a gera uma nota musical a' aeaso.

As Iinhas dll 90 A 120 produzem os pontos da flgura na tala.

A I I nh a 1 SO vet If 1 ea SIl voei est{i prass 1 onando "Iguma t a e t a a. em. c a s o p c s t t t v o , Ilmpa a tala.

Finalmante. a Iinha 140 facha 0 la~o aberto na Ilnha SO 8. apes sua ~Itlma axeCw~~o. desvla a programa para a Iinha 20. reinlclanda f u dn l

Apes tar axacutado 0 programa alg~mas velas e verlflcar como ele fwnclana. experlmente alter{i-Io deix<lndo-o <ISS 1m.

~ ® ! 10 r Caleldoscoplo II

~ . I 20 SCREEN 2:C=B4:I=12710=0=E=D

as

~ 0

I :

30 FOR O=E TO C*(1+I!f\O(-TIHE)1f3)

40 H=INT(36*RNO(-TIHE»=IF H/~(>H\4 THE N 40

50 D=INT(O+HlfRND(-TIHE»:IF D/4()O\4 TH EN 50

60 E=INT(E+HlfRNO(-TIHE»:IF E/4()E\4 TH EN 60

70 0=0 AND D(~C:E=~ AND E(=C

80 P$="V15S14M4000L8N"+STR$(INT(RNO(-TI ME)*60+9»:PLAY Pi

90 PSET(I+D.C+E):PSET(I+D.C-E) 100 PS~(I-D.C+E):PSE!'(I-O.C-E) 110 PSET(I+E.C+O):PSET(I+E.C-O) 120 PSET(I-E.C+O):PSET(I-E.C-O) 130 IF INKEY$(>"" THEN CLS

140 NEXT O:OOTO 20

au ass 1m.

10 Cal€idoscopio II~

20 SCREEN 2=C=84:I=127:D=0:E=D 30 FOR G=E TO C*(1+RNO(-TIHE)*3)

40 H=INT(36*RND(-TIHE»:IF H/4()H\4 THE N 40

50 O=INT(O+H*RNO(-TIME»:IF 0/4(}0\4 TH EN 50

60 E=INT(E+H*RNO(-TIHE»:IF E/4()E\4 TH EN 60

70 0=0 AND O(=C:E=E AND.E(=C

80 Pi="VI5S14H4000L8N"+STR$(INT(RNO(-TI HE)*60+9»:PLAY P$

90 LINE(I.C)-(I+O.C+E):LINE(I.C)-(I+O.C -E)

100 LINE(IrC)-(I-O.r~E):LINE(I.C)-(I-D. C-E)

110 LINE(I.C)-(I+E.C+O):LINE(I.C)-(I+E. C-D)

120 LINE(I.C)-(~-E.C+D)=LINE(I.C)-(I-E. C-D)

130 IF INKEY$(}"" THEN CLS 140 NEXT G:OOTO 20

37

Ou alnda. asslrn,

10' Caleidoscopio IV

20 SCREEN 2=C=84:I=127=O=0:E=O 30 FOR G=E TO C*Cl+RND(-TIME)*3)

40 H=INT(36*RND{-TIME»:IF H/4()H\4 THE N 40

50 D~INT(D+H*RNO(-TIME»:IF 0/4()D\4 TH EN 50

60 E=INT(E+H*RNO(-TIME»:IF E/4()E\4 TH EN 60

70 0=0 AND D(=C:E=E AND E(=C

80 P$=~V15S14M4000L8N"+STR$(INT(RND(-TI ME>*60+9»:PLAY P$

90 LINE(I+D,C+E)-(I+D,C-E) 91 LINE(I+O,C-E)-(I-O,C-E) 92 LINE(I-O,C-E)-CI-O,C+E) 93 LINE(I-D.C+E)-(I+O,C+E) 94 LINE(I+E.C+D)-(I+E,C-D) 95 LINE(I+E,C-O)-(I-E,C-O) 96 LINE(I-E,C-O)-(I-E,C+D) 97 lINE(I-E.C+D)-(I+E,C+D) 130 IF INKEY$()HH THEN CLS 140 NEXT G=G010 20

A90ra 0 efelto nio parece mals com urn caleidosc6plo por~m continua a ser belo.

38

ANA6RAMA

INSTRUC6ES

Urn ANAGRAMA ~ uma palavra au frase formada a par ti r de out rap a r me i 0 de - urn a per mu t a ~ ii 0 del e t r as. Po r exemplo. a palavra ROMA 6 urn anagrama da palavra AMOR.

o jogo deve ser dllp~tada entre dual pelloas.

Cada uma deve tentar descobrir' qual a frase orIgInal introduzida pela outra a partir de urn dos possiveis anagramal apresentados pelo computador.

Apesar do programa aceitar frases de at' trinta e cinco letras. 6 interessante. pelo menos no inicio. os dais jogadars. combinarem a Introducio de palavras curtas de at~ sels au sete letras. Caso contr~rlo. 0 anagrama t o r n a+s e rnu l t o c omp l l c a d o e d l f Ic l t de s e r d e ctt r a do .

Quando urn d09 jo~adoreB estlver declfrando 0 anagrama do outro. deve introduzlr uma letra de ceda vez segulda da teela RETURN. A Introdu~io d~ um espa~o pode ser felta simplesmente presslonando-se RETURN.

C a oj a let r a 0 u e spa c a I n t rod u 2 i do em I u 9 a r inc c r - reto ser~ contada como erro.

Vance 0 jogador que consegulr descobrlr a palav r a ou f r a s e or 191 nal c ome te n o o 0 menor n um e r o de arras.

DIGITACAO

Niio h~ grandes problemas quanto ~ digita~~o do prDgrama ANAGRAMA.

Toma apanas cuidado nas I Inhas 160 e 170

a e ar a cam as r n s t r u c a e s M10$(B$,O.1 e MID$(8$.W,11.

devem ser digitadas e~atamente como est~o I istadas, qualquer e5pa~0 entre as caractares.

ands Elas 5 em

39

I Q
I $
»
@ e
~
I *
I
@
.
I e
w
I @
$
I ~
I @
®
0
@
@
40 t REM "Anagr 10 KEYOFF

20 CLS : COLOR It,9 30 LOCATE 14,0

40 PRINT "ANAGRAMA" 50 LOCATE 2,4

60 PRINT "Escreva uma frase de no ~axlM o 35 letras, sem 0 outro jogador ve

• r."

70 LOCATE 1.12 B0 LINE IN~UT AS 90 BS=AS

100'C = LEN(A$)

110 IF C ) 35 THtN RUN 120 FOR' I = 1 JO 3*C

130 Q = INT (RND(-TIME) * C + 1) 140 W = INT (RND(-TIME) * C + 1) 150 Yi = MIO$(8$.0.1)

160 HI05(8$.0.1) = HIO$(B$,W.l) 170 HIDS(BS,W,I) = Y$

180 NEXT I

190 COLOR 11,4 : CLS

200 LOCATE 14.0 : PRINT "ANAGRAHA"

210 LOCATE 2.4 : PRINT "0 anagrama e :" 220 Z = tNT «38-C)/2) : FOR I = 0 TO C +1 : LOCATE Z+I.6 : PRINT CHR$(220); :

LOCATE Z+I.B : PRINT CHRS(223); : NEXT 1

230 LOCATE Z.7 : PPT~T CHRS(221) : LoeA TE Z+C+l.7 : PRINT r.HR$(202)

240 LOCATE Z+I.7 : PRINT B5

250 LOCATE 2.10 : PQINT "Oesembaralhe a s letras ••• N

260 FOR I = 0 TO C+l : LOCATE Z+I.12 :

PRINT CHR$(220); : LOCATE Z+I.14 : PRIN T CHRS(223), : LOCATE Z+I.13 : PRINT "? Np : NEXT I

270 LOCATE Z.13 : PRINT CHR$(221) : LOe ATE Z+C+l,13 : PRINT CHR$(202)

280 I = 1

&) 290 LOCATE 2,16 : PRINT "Nllmero de erro
s =" ;'E
300 LOCATE 5,19 . PRINT "Gllal a letra
.
@ ", . LOCATE 18.19 : C!i="
.
" INPUT C$ : C$ == LEFT$(C$,l)
e 310 IF C$ = 1111 THEN C$==" "
~ :320 IF C!i = HIO$(A$,I.l) THEN 350
i ~~ 330 E= E + 1
~ 340 GOTO 290
:~ 350 LOCATE I+Z.13 = PRINT C$
~ ($ 360 I = I + 1
I
:. 370 IF I (= C THEN 300
I ® 380 LOCATE 3,21 = PRINT "APERTE UHA LET
RA PARA RECOHECAR"
390 IF INKEY$ = "" THEN 390
'9 400'RUN
:~ AN~LISE

As Ilnhas de 10 a 80 proparam a tela para a introducio da palavra ou frase por um dos jogadores. 0 programa p6ra no I Inha ~O i espera de frase Que deve. apbs dlgltada. ser segulda da tecla RETURN. Esta I Inhe pode ser subst,itufda por INPUT AS. feca-o e note a dlferenca.

A I Inha 90 -guarda" 0 conte6do da varl6vei AS (frase Introduzida) na veri6vel BS para que as letras possam ser embaralhadas posterlormente sem Que e frase orIginal sejs perdlda.

A I inha 100 armazena 0 comprlmento de frase na varl6vel G e a I Inha 110 testa se este e malor que 35. Em caso posltlvo. 0 programa recomeeD.

As I Inhas 120 a 180 exacutam 0 embaralhamento des letras. l n t c t a tme n t e e deflnldo um I a c o e n t r s as 11- nhas 120 e 180 pare que 0 algOrltmo de permutacio dOs ca-' racteres seja executado tris vezes.o comprlmento (C) de trese introduzlde.

o algorltmo em sl (iinhas 130 a 170) consist. em -sortear" dols n6meros compreendldos entre 1 e C (1lnhas 130 e 110) a assuml-Ios como posle5es na "string" 8S. Estas poslc5es sio Invertldas (iinhas de 150 a 170),

A vantagem desse procedlmento , produzlr uma varl6vel BS Que contenha os mesmos caracteres que a vari6vel AS. permutados e sam repetlcoes.

As Iinhas de 190 a 300 preparam a tela que apresanta 0 anagrama {varl;livel BSI. 0 nli,mara de arros (EI. e pede a Introducio des letras para a daclfracaa da 1ras8.

41

As J i n n a s de 310 a 370 testam se a I etra I ntroduzida (armazenada na vari6vel C$) se ancaixa no Jugar c o r r e t o {II nha 320 J. Caso pas it I v o • a I etra 8 Impressa ( J I n n a 350). a c o n t a d o r de pas i c s e s (I) Ii I ncrementado (I Inha 360) e se a ultima paslc;io nio tlver sido atinglda o programa pergunta p e I a prox Ima I etra (I I nha 370). No cas a d a ·1 e t r a i n t r a d u z ida n a a 5 e e n c a I x a r no lug arc orr a to. ~ Incrementado 0 contador de erros (I Inha 330) a a pragrarna , desvlado para a I Inha 290 para que 0 numara de arros seja Impressa e novamente seja pedida a introduc;ac de uma let r a.

Flnalmante 8S I Inhas 380 e 390 estabalecem a aspera da pressao de uma tecla para c programa recamec;ar (Iinha 400),

42

TWO LJNERS

INSTRUC6ES

Urn TWO-LINER ~ urn programa com apanas dua5 11-

nh as.

Isso n~o ~ nada diflei I programa a seguir,

de sar

felto. Veja 0

10 INPUTW@ua] D seu nome~,nS 20 PRINT n$' GOTO 10

Ele ~ urn TWO-LINER. por~m extremamente pat~tlcol Faze.r urn TWO-LINER e f(ielll

Dlflei I ~ eonsegulr que ele gere efeitos SO'15-

ticados no mlerol

Os programas apresentados mals adlante sio TWO LINERS (Ie prlmeira categorla. gerando flguras c nrnp le x a s e sofistleadas no video.

H(i fundamentalmenfe tres parimetros que permitem julgar a qu a l ld ad e de urn e r c s r ama.

1< 0 r e s u I t a d c final obt I do a tr a v e s del e,

... A e u an t t u a d e de mem6ria que ele utll l z a e ... a temp 0 que e I e I e va p a-r a s ere xe C lJ tad 0 •

Os resultados finals dos TWO-LINERS apresentados a ses u r r • voce mesmopoder{a julgarl

A mem6rla ocupada por cada urn deles ~. certamento. menor que 1/2 k.byte (51.2 bytes). fila v s r d a da . a maior ia c e t s s u c u n a bern menosque 1550 (por vo I fa de 256 bytesl).

o tempo de execu~eo ~ que. ~s vllzes. 58 torna demasiado longo. 1550. entretanto. oeorre com a malaria das m~qulnas de alto bits quando rodam programas em BASIC e edlffcll re a rt z a-ucs em tempos rne nn ra s ,

N~o h~ nenhum segredo em SUIS uti I Izac5es, east. digiti-los e eKecuti-losl

Se a execuclo demorac mui 10. fica alguma Dutra

co r s a e n c u a n t o e s e e r e , Por e x eme I 0 vi I en d o a ana I rs e e

tentando entender 0 funclonamento dos programa5.

OIGITACZ.O

e~te5 programas P05Suem mUltas Instruc5es i"seridas numa mesma I I n h a e s e car aoa s por do 1 s p o n t n s t s i . Tome multo culdado para nlo pular algumas delIs. pois 1550 pode alterar totalmente 05 sfeltos produlld05.

AS programas slo curtos. Em cinco minutes voc~ dlglta Qualquer um deles. Vala a pena tomar um poueo mais de culdado durante a primelra digitaclo para nlo perder tempo procurando eventual5 erros depois.

~ .... ..,
s
~
=,' e
:-~
:::
8
~ *$
,~
;1
.,
~ m·
i'
~::
~~ 44

TWO-LINER 1 CIRCLINE

10 SCREEN 2

20 CC=12S:LC=80:R=60:FORT=0T0359STEPS:G G=2+14*RND(-TIHE):X=T*3.14i592H/180:C=C C+R*COS(X):L=LC+R*SIN(X):LINE(CC.LC)-(C .L).GG.B=NEXT:GOT020

TWO-LINER 2 CORES

10 SCREEN2

20 FORF=0T0125STEP10:G=80-F*80/125:Gl=2 +14*RND(-TIHE):G2=2+14*RND(-TIHE):G3=2+ 14*RND(-TIHE):G4=2+14*RND(-TIHE):LINE(F .80)-(125,G).GlrBF:lINE(125.G)-(250-Fr8 0).G2.BF:LINE(F~80)-(125.160-G).G3.BF:L INE(125.160-G)-(250-F.B0).G4.BF:NEXT:GO T020

TWO-LINER 3

CESTO

10 SCREEN2:P=3.1415926"=CIRCLE(128.3~). 60 •••• 20/60:CIRCLE(128.160)r60 •••• 20/60 :FORD=0T02*PSTEP.15:E=D+P/2:X=128+60*CO S(O):Y=30+20*SIN(D):S=128+60*COS(E):T=1 60+20*SIN(E):LINE(X.Y)-(S.T):NEXTO

20 GOTO 20

TWO-LINER 4 - ASTROIDE 1 (Rede)

I 10 SCREEN2:FORF=0T0125STEP10:G=80-F*B01 ~ ~ 125:LINE(F,80)-(125,G):LINE(125.G)-(250 ~ -F.80):LINE(F.B0)-(125,160-G):LINE(125. ~. 160-G)-(250-F,80):NEXT

~ 20 GOTO 20

TWO-LINER 5 - ASTR61DE 2 (Tela)

I'~ t 10 COLOR1,14.14:SCREEN2:P=3.1415926M=FO ~ ~ RA=10T085STEP15=U=128+A=V=B5=FORT=0T02* 1 PSTEP.2:X=128+A*(COS(T)A3):Y=B5+A*(SIN( ~ $ 1 T)A3):LINE(U,V)-(X,Y):U=X:V=Y:IFA=85THE ~ I NL I NE (128,85) - (X. Y)

~. !

~ $ l20 IFA=100THEN20ELSENEXTT,A:aOT020

45

::. ~
.,
:~
'*
rc
:~ ~:'
~~
"
:~
i! ~;t
~
:~
::: <'»
III "'~<
;~ ,~~
~~ '{;:., 46

TWO-LINER 6

ASTR610E 3 (Estrela)

10 COLOR10,l:SCREEN2:P=3.1415926H:C=2*P :I=P/20=FORF=lT05:READX(F).Y(F):NEXT:DA TA0,100.35,35,100,0,35.-35.0,-100:FORH= 0T01:FORA=0TOPSTEPI:FORF=lT05=X=X(F)*CO S(A):Y=Y(F):S=X=X=-X*(H()l)-Y*(H=l):Y=Y*(H()l)-S*CH=i):X=INT(X):Y=INT(Y)=GOSU B20:NEXTF,A,H

20 IFH=2THEN20ELSEU=X*.9+128=V=Y*.9+85:

IFF=lTHENK=U:L=V=RETURN:ELSELINE(K,L)-( U,V):K=U:L=V=RETURN

~
*
~ @
I
®
~
~
~
~ ®
~ TWO-LINER 7 - DRAWL IPSE

10 COLOR1,B,8::SCREEN2:FORA=~T06.28STEP .1:PSET(128+50*COS(A),B5+20*SIN(A»:DRA Wflnu50nf50nd50ng50H:NEXTA:CIRCLE(128,34 >.50,1 •••• 4:CIRCLE(128.135),50.1, ••• 4:C IRCLE(128.B5).50.1 •••• 4:CIRCLE(77.13S), 50.1., •• 4:CIRCLE(178,135).50.1 •••• 4

20 GOIO 20

TWO-LINER B - ESFERA

10 COLOR1.7.7:SCREEN2:FORB=B0T01STEP-10 :CIRCLE(128.B0).80,1,.,80/B:CIRCLE(128. 80),B0,1".B/B0:NEXTB:LINE(12B.160)-(12 8,0):LINE(48.B0)-(20B.80)

20 GOTO 20

47

.. ' e

;$

48

TWO-LINER 9 - MONTES

10 COLOR4,7,7:SCREEN2=FORX=0T0191:X1=Xl +255/191:P=Xl*ATN(1)/45*360/255*3:Y=COS (P>*130+128:LINE(Xl.0)-(Y.X):NEXTX

20 GOTO 20

TWO-LINER 10 - TECIOD 1 (Enrugado)

10 COLOR1,14,14:SCREEN2:FORF=0T025.2STE P.0S:A=A+.S:LINE(25S,0)-(A,SIN(F)*50+90 ):LINE(255,0)-(A-.S,SIN(F)*50+BS).14:NE XTF

20 GOTO 20

TWO-LINER 11 - TECIOO 2 (Torcldo)

10 IFA=192THEN10ELSECOLOR4,7,S:SCREEN2:

FORA=0T0191:B=A*ATN(1)/90*360/25S*4=C=C +25S/191:D=C*ATN(!)/90*360/255*3

20 E=SIN(B)*B5+BS:F=COS(O)*127+127:LINE (C,E)-(F,A)INEXTA:GOTO 10

~ $
~
~
:~ ~t:::
~ -o
~
~
~ (;%
I
$
~ TWO-LINER 12

fOURIER

1 COLOR15,12.12:PI=3.141592M=IFSTRIG(0) <)-lANDP<>0THENl

2 P=P+l:SCREEN2:CIRCLE(12B.85),84.1;PAI NT(12B.16B),l:FORX=55T0200:Z=0:C=-X*(X= 55)-C*(X<>55)=FORM=lTOPSTEP2=Y=B0/(M*PI ) *S IN (.X*M*P 1/36) = Z=Z+Y = NEXT: Y=Z+85: L=-Y *(X=55)-L*(X<>SS):LINE(C,L)-(X,Y).15:PS ET(X,Y):C=X:L=Y:NEXT:P=P+l:GOTOl

/~----..___ <,

(/ ~ ~

{\ / \ i /

\ \_/ , '

\

-"~~/

Este

I

I

(\{'J)

\ /

'~,.__~----...-/

a tela se assemelhe

ao visor de um n s e t t c s c Sp t o .

An ser e x ecu t adc . e I e e e r m l te v i sua Ii zar a forma da onda resultante da soma dos harmonicos {mpares de uma f r e qus n c I a Qual q u er . A pr ime I ra Imagem e a do p r Ime I ro harmonico; a s8gunda e a da soma do prlmeiro com 0 terce I ro harmSn i co, a terce i ra 1i a soma do pr ime I ro com 0 terceiro e com 0 quinto harmonlco; e asslm por dlante .. ,

Para mudar de uma imagem para outra digits a barra de espacos.

\ \

TWO-LINEA faz com que

<19

50

TWO-LINER 13 COGUMELO 1

10 SCREEN2

20 FORZ=0T010STEP.l:FORX=0T010STEP.i:Y= -(COS(3*SGR«X-S)*(X-S)+(Z-5)*{Z-5»»* 5+30:PSET(X*24+Z,i91-Y-Z*10):NEXTX,Z:GO T020

TWO-LINER 1~ COGUMELO 2

10 SCREEN2:FORZ=0T010STEP.2:FORX=0T010S TEP.2:Y=-10*COS(3*SGR«X-S)*(X-S)+(Z-5) *(Z-5»)/2+50:PSET(X*20+20+Z*3,Y+Z*10):

NEXTX,Z

70 GOTO 70

TWO-l I NER 15 - COGUMElO 3

10 COLOR1.3,3:SCREEN2:FORB=0T0127STEP2:

X4=B*B:M=-128:A=SGR(16384-X4):FORI=-ATO ASTEP5:R=SGR(X4+I*I)/128:F=COS(9*R)*(1- R)*2:Y=I/5+F*32:IFY(=MTHEN20ELSEM=Y:Y=1 28+Y:X=128+B:PSET(X,191-Y):X=128-8:PSET (X.191-Y)

20 IFP=lTHEN20ELSENEXTI,B:P=i:GOT020

.. : .'.:

* *!==-
~ "",;".
~
~
~ :~~
~
~
~
:.;
" {~~
~
~:
:::
~
~ {f;:::
'~'~~~
.>,>:. -,

TWO-LINER 16 - GOGUMELO 4

10 COLOR1,5,5:SCREEN2:FORB=0T0127:X4=B* B:M=-128:A~SGR(16384-X4):FORI~-ATOASTEP 3:R=SGRCX4+I*I)/128:F=COS(16*R)*(1-R)*2 :Y=I/5+F*32:IFY(=MTHEN20ELSEM=Y:Y=128+Y :X=128+S:PSET(X.191-Y):X=128-S:PSET(X.l 91-Y)

20 IFP=lTHEN20ELSENEXTI.B:P=1:GOT020

TWO-LINER 17 - ANEMONA

10 COLOR1.3.3:SCREEN2:P=3.1415926H:G=2* P:R~P/20:S=P/10:T=60:U=150/G:FORB=0TOGS ·rEPR:C=T*P/i80=C=(B)P)*C-(B(=P)*C:FORH= 0TOQSTEPS=Y=COSCH)*42=X=COS(B)*H*U:Z=-( SIN(B)=l)*H*U-(SINCB)()l)*TAN(B)*X:Z=AB S(Z):Z=-lE-03*(Z=0)-Z*(Z()0):J=SGR(Z*Z+ Y*Y):A=ATN(Y/Z)+C . 20IFF=lTHEN20ELSEY=J*SIN(A)=X=INT(X):Y =INT(Y):XP=X*.7+128:YP=Y*.7+85:XO=-XO*( He >0)-XP*m=0) :YO=-YO*(H( }0)-XP*(H=0):L INE(XO.YO)-(XP.YP):XO=XP:YO=YP:NEXTH,8:

F=1:GOT020

51

AN~LISE

Nao Iremos detalhar 0 funcionamento de cada urn dos programas. Todes eles envolvem urn certe conhecimento de matematica elamentar e. na verdade. sao hastante Simp I e s ,

Sa voce t i v e r uma boa e s61 ida formac;iio matematlca ao nlvel dO segundo grau e conhecer bern 0 BASIC MSX. podera compreender sozlnho os TWO-LINERS. Caso contrario. par mals que tentassemos. nas poucas I Inhas de que dlspomos. nio consagulrlamos fazs-Io entender II malorla deles!

o resultado da maloria dos TWO-LINERS apresentados sao flguras interpretadas palo nosso cerebra como superficies bldlmensionals. H~ duas formas de sa gerar assas efeltos. Uma fi artificial. fa2endo de fato urn desenho num plano (os ASTROIDES. 0 GESTO. a ESFERA. 0 DRAWL IPSE. os MONTES. etc ... ) e nesse c a s o a e x e c u c a o e raplda. pols poucos calculos sao executados. A outra forma , projetando. atravfis de sua equac;ao. uma superf(cle realmente bidimensional no plano da tela. Isso ~ bern mais trabalhoso e em gerai demore multo mals tampo (os COGUMElOS. a AN~MONA. etc ... ).

Qutros TWO-LINERS geram flguras no pr6prio plano da tela e sio normalmente mals simples (CIRCLINE. FOUR 1 ER).

Para tentar compreender urn TWO-LINER. e convanlente decomp8-lo em varias IInhas. de modo a r e c r t itar a a n a I I s e i n d I v I d u a Ide cad a Ins t r 1I c a o. T 9 n t e f a z e r Iss 0 c om alguns d e t e s . p n r e x emp l o , com a ESFERAI

Out r a Imp 0 r tan t e t' C I) i c a (emp I ric a !) par aid en-

tlflcar as partes p r Ln c l p a l s de urn TWO-liNER ii Ir a Lt e r a n=

do urn a urn seus valores num6rlcos ell suas func;oes. Experlmete fazar as seguintes altera~oes. uma de cada vez. no TWO-LINER 14 (COGUMELO 2).

... Troque a funciio COS pala func;ao SIN .
* Troque,
Z*'O p or Z*15
+50 por +10
.2 por . 1 e
+20 por +10 Agora.

tente esta altsracio no TWO-LINER 4 (RE-

OE) •

... Troque

STEP10 por STEPS .

No TWO-LINER 5 (TElA), experlmente esta. * Troque -3 por -5

E. no TwO-LINER 3 (CESTOI. tente estas • ... Troque P/2 por P/l.5

* Troque P/2 por P/1

52

Agora 0\ a sua v s z de propor (e. ra a Ii zar I) a 1- tera~~es. Gomece palo prlmelro programa e slga at~ 0 ~It I mn ,

Depols. ter~ chegado a hora de voci fazer seus pr6prlos TWO-LINERS. Inlcialmente. fa~a 0 programa em v'_ r I as I i nh a s , A seg u i r • compac t8-0 em a penas du a s . I S5D. ao c e n t e ar 10 do que p a r s c e , n8.0 ~ multo s l mp l s s t Para certlflcar-se dlsso. dlglte e execute algumas reles 0 THREELINER P'tal~s. Depols. tente transform'-Io num TWO-LINER! S~ voci colnsegulr. arise-nos! 1550 ~ extremamente dlfle III I r

THREE-LINER 1

PHALAS

10 INPUTuQuanta5 ~EtBla5u;P~INPUTuCom r otacBO (s!n)U;Alli:PI=3.141592H:Q=2*PI:CO LOR1.8,8~SCREEN2:N1=5~N2=4:FORV=1T010:1

=V.PI/30*(A$~UsU):Ml=N1*V~M2=N2*V:FORF= 0rOQSTEPQ!180:A=F-I~S=A8S(SIN(F*P!2»~R :<:;*M:!. +M2 ~ X::::COH (A) *R :: Y::::8 I N (A) *R= GOSUB 30:

X=INT(X):Y=INTCY)

20 IFIP=1THEN20ELSENEXTF:GOSUB30:NEXTV~ I P :::: 1. ~ GOlO 20

::10 X pc::: X * .. (ld. 2 D ~ Y P = 1. 91··- ( Y * . 9 + B~'j ) ~ IFF::: 0 TH ENX1=X~Y1=Y:XO=XP:Y()=YP~RETURN20:ELSELI NE(X(),YO)-(XP,YP)~XO=XP:Y()=YP:RETURN

Este programa pede a Introdu~ao de duas Inlorma~6es. 0 nOmero de p'talas e se elas devem ser rotaclo-

53

NOMERO DE PHALA5? RDTACAO?
5 nio
8 s 1m
!3 nlie
11 s 1m nadas ou nio.

Exparlmente as s.gulntas comhlna~6es!

Um caminho mals f6cl I para come~ar a fazer TWDLINERS. prlnclpalmente S8 woci 'hastante egocintrlco. ~ comeear com programas do ripo EGO. Experimental

TWO-LINER 18 EGO

10 SCREEN2:PSET(90.80):ORAWHfld10g1bm+l' .-11r2fld3g112r2dlfld2firlbm+2,-2rlulhl gld2flribm+l,-4fld3u3elfld3rlbm+l.-4rlf Id3rillu212d2r2bm+2,-9d8flbm-3r-6r4bm+l ,+2g1d2flelu2hlbm+9.-3hl12g1d2flr2fld2g 112hlbm+9,-6d6flr2elu6h112g1bm-3,+7r0bm +9,0r0"

20 GOTO 20

_f

I'·

t '

~=

, ~

, I

1

54

,

INSTRUC6ES

Voce se encontra num lugar repleto de armadl- 1 has. 56 ex i 5 t e uma 5 aid a. q u 8 VA C e n a [) v E!. e 5 U a m ISS a [) e enc[)ntr~-Ia [) mais ra~idamente posslvel

Para que a salda seja atlnglda. V[)C~ deve co-

letar as quatro pi Ihas que 8stao espalhadas em pontos aleat6rl05 da tela. Elas servlfaO para al Imentar 0 seu recePtor e. quando a 61tima for apanhada.voce passara a receber slnais que sao emitldos constantemente par um mlcrot r a n sm t s s o r i n s t a l a d o n a s a t e a . ESSBS s l n a l s sao decodificados par seu receptor que informa a direcao a seguir. Na parte Inferior da tela aparecem as palavras NORTE au SUl e lESTE o u OESTE. Par e x emp l o . 58 s u r s i rem as i n f u r m a c Ee s SUl e OESTE. signiflea que a sarda asta abaixo e a 8sqUerda da p051~ao ocupada par voce. Caso essas palavras nao ~parecam. ISto quer dizer que voce 8stl na dlre~aa correts.

Com rela~ao ao contador de tempo. sle funclona como um taximetro. Se voc€ flcar parado numa detsrmlnada POSiCaO. ele naa pAra. Caso voc~ 58 mava. ele se adianta ~m dez unldades para cada posicao avan~ada. Gonvem. portanto. plane)ar 0 camlnho mars curto e mals rApido para

a I c a n c a r as p r I n a s e d e a o r s a s a t c e •

Para S8 movlmentar uti I Ize as teclas de setas.

Cu I dado pa ra nao e s b a r r a r em qua I q u a r urn a d a s armad I I has

en qua n toe s t I v e r s e mo v end 0 pols. n 8 sse

c a s o , voce fica

c r e s o e 0 logo t a r m t n a .

Quando voce alcan~ar a saida. 0 c[)ntador de tempn p~ra e 0 programa checa se 0 recorde fo~ batlda. oesta forma. 0 logo a c a b a e a p r a s s ji o da t e c t a "R" 0 r e t n r c r a ,

55

DIGITAC~O

Olgl t e 0 programa exatamente conforme a Iista-

gem. Voce nao dave encontrar grandes dificuldades,

Conf i ra-o e gr ave-o em f 1 ta com a c orna n d n CSAVE

~~:::
::
i
i :::,:~::
~
~
~ :f~~
~
'~;
~
0- ::~~
!
:; ~~~~
!:
~;
.:
;: ,':':',
~ '~:::'
~ .::~;~~
;:
~
.:.
~.
~ .:-:.;
.~ ::W
l
~ ~~:~
,<
'l ";:.'
~:
:~~:
::~~~
-:':.:.
"i:"~
:;J:~:
~~:~.
.~:~~
5 6 "SAINV",

Comande RUN e boa sortel

1 RE~ SAIDA INVISIVE( 10_j;;O~3UB 740

20 MAXFIl.ES:1 ~ OPENuGRP~N FOR OUTPUT A s 111

30 OIM M(28.16) ~ SCREEN 2,0

'1 () I~ E;;;: 99 v» : D (I.,.;" I;: 7D7L.? l.J7 n F;:~I~ ]1)]1... ;:lU:]u

tl ~Ii::"" I~ 6D t:, L.~; U 41~ ::! D ;;,~ 1...1"

:,! 0 ::; P I~ I T c: ':Ii ( 1, ) :::: C 1·llx (I) ( ') ) ... C 1·1 r~ % ( ;0.> <1 ) ... C II 1< % ( 60 ) j, C II r~ q; ( b (1 ) + C III~ % ( 60 )+, C H I~! % ( b 0 ) '" C H 1< % ( 60 ) + C H la(0)

60S F' 1\ I T F ':Ii ( ;? ) ;; C lin ~l; ( (., '3 ) + ell I~ % ( 66) + C H I~ (J; ( 16 0:.:;) +CHI~ ~Ij ( 1, ;}9) +CHI~ ~Ij (1.6~:j) +CHI~ (~( 1:5::1) +CHI~ ':Ij ({) c:,) +CHP ([, (f,'~)

7") !:;CI~EEN;2 :: C()L.OI~ J:'i,1,1 :: CL~~ U,? T[::::0 :: P 1""13 :: TT::::0 :: W::::0

90 FOR 1=8 TO 240 STEP 8

100 PSE1(I,24),0 ~ COLOR 5 : DRAW D$ 110 PSE1'(1.160),0 : COL.OR 5 : DRAW 0$ J. ;;!.0 NEXT 1

130 FOR 1=32 TO 1.52 STEP 8

140 PSET(8.I).0 ~ COL.OR 5 DRAW 0$ 150 PSE:T(240.I),0 ~ COL_OR 5 : DRAW D$ 160 NEXT I

170 PSET(72.0).0~ COLOR 8 PRINT #1,"S PjIO() INVJ~:;J\}[L"

1.80 [)()SUB 6;?0

ive nosun 6t(:~

~.) <1 0 Q:::: I N T ( I~ N [\ ( .... TIM E ) 1~ 1 () 0 0 ) + j, 210 FORK=:!. TO 65

220 X=lN'r(RND(Q).27)+2 : I=X.8~8 230 Y=JN1(RND(Q).1.6)+1 .: J=Y.8+24 240 IF MeX,Y) () 0 THEN 220

250 IF K < 61 THEN M(X,Y)=5 ELSE GOTO 2 130

260 PS~T(1.J),0 : COLOR 8 = DRAW Ai ;.:~/0 DOlO :32',

: .. 'B0 IF I< ( 6~:; THEN M(X,Y)""" 1{··-b0 ELSE G

OTO ::110

290 PUT SPRITE M(X,Y),(I,J),ii,i ::l00 noro ::1;20

:H 0 X G ;::: X ~ Y S "" Y ~ M ( X r Y ) ;:::. (, 3;.:.~(~ NEXT I(

::1:30 X"' :.\. ~ Y:" i : 1> i .6 : ,J;;:::I~! ::14 0 PUT !:) P ,~ I 1T 0, ( :r , ,J) ,7 , 2 :J~j0 1 F I NI<E::ni"o'"''' THEN 3~50

:1 tJ (3 To :3 TIC I( ( 0 )

3/0 IF T::::.1. OR T"<I or~ T""5 Ol~ T:=7 THEN 4.1. o

31H1 W::::Wt j

:390 IF W::::::.'i THEN 1[::::"I"E+i. GOmJB bi0 W

·:::0

40(1 (JOl0 ~J60

4j.0 T[::::T[+10 : DOSUB 6i0

420 IFI"=i AND Y-l ) 0 THEN Y=Y-l : J=Y i(IH·;:!4 ~ UOTO 460

430 IF T~3 AND X+i (= 28 THEN X=X+1 I

=X*8~·8 = GOTO 460

440 IF T~5 AND Y+l (= 16 THEN Y=Y+1 J =Y*8~·24 : GOTO 460

450 IF T=7 AND X-I ) 0 THEN X=X-i : I=X *0+1]

460 PUT SPRITE 0,(I,J),7,2

470 IF M(X,Y)=5 THEN PLAY"T255l64CDEFGC DEFGCDEFGCDEFGCDEFG" : GOTO 730

480 IF M(X,Y»0 AND M(X,Y)(5 THEN PLAY" T255l648EB" : GOSUB 630

490 IF PI=4 THEN GOSUB 650

::.';00 IF TTo::1 THEN PL.AY"T;!55L64CDEEFEFCAC f~" : r:;OTO ~:;~.!0

::_) i e GOTO :]1,0

::52(-\ IF F~E } TE HIFN IH>::TE : G()Sl.JB 6~20 530 LINE C88,88)-(175.95),i.BF ~ PSETC8 H,Elfl).'" :: COlOr~ t~:j : PlUtH JJt,"F1M DO.J

() G~) //

57

:t~~
~~
:$
~~
-:::::::
;0:,:,'
.~ ~;~
:~
.~
~
$
. .(.:"
-, ~:::.
.: ~:,:,
",-:::
i
:@:
~
l @
i
~
:1 ,':";-
~~:-
1 t::·
,,,:,~
-::::.::-
.$::
~1' 58

540 FOR X=l TO 28 550 FOR Y=l TO 16 560 M(X.Y>=0

570 NEXT Y : NEXT X

580 PSET(0,184),0 COLOR 15 : PRINT »1 ,UAperte a tecla R para Fecornecar.u

590 IF INKEY$ (> "Ru THEN 590

600 GOTO 70

610 LINE(216.16)-(247,23).I,BF PSET( 168.t6).0 : COLOR 2 : PRINT I-Il,USINGuTE MPO:""""";TE : RETURN

620 LINE(72,16)-(103,23),i.BF : PSET(8. 16).0 : COLOR 2 : PRINT "l.USING"RECORD E:tHltttt".RE: RETURN

630 PI=PI+l : PUT SPRITE M(X.Y).(I.Y),0 .1 : M(X,Y)=0 : IF PI=4 THEN PLAy"T255L 64CAC"

640 RETURN

650 IF X ( XS THEN LINE (176.168)-(215, 175),1,SF : PSET(176.168) : COLOR 2 : P RINT I-Il."LESTE"

660 IF X = XS THEN LINE (176.168)-(215, 175).~.rBF

670 IF X > XS THEN LINE <176.168)-(215. 175).i.BF : PSET(176.168) : COLOR 2 : P rUNT 1-11. "OESTE"

680 IF Y > YS THEN LINE (40,168)-(79.17 5).1,BF : PSET(40.168) : COLOR 2 : PRIN T tH. "NOR TE"

690 IF Y = YS THEN LINE (40,168)-(79.17 5),l,BF

700 IF Y ( YS THEN LINE (40.168)-(79.17 S),t.SF : PSET(40.168) : COLOR 2 : PRIN T "l,"S U LU

710 IF M(X.Y)=6 THEN TT=l 720 RETURN

730 TE=9999 : GOSUS 610 : GOTO 530 740 CLS : COLOR 4;1 : KEYOFF

750 SCREEN 0

760 LOCATE 12,5

illi 770 PRINT"SAJ.UA INVISIVEL"
780 LOCATE 5p17
@ 790 PRINT"Aperte uma letra para come:car
"
800 IF INK EY $=""" THEN GOTO 800
§ @ 810 RETURN ANALISE

A fd6ia fundamental de pregrama , mapaar a tala 8ssDclando a cada uma de suas posl~Bes urn elemento de urna mil t til de 28 col una; S p 0 r 1 81 j nil a s (1'1( 28 • 1 E ) ). A pas i I; i'i a da tela Que estlver livre tem. como correspondincle na matrll. um elementa Igual a zerD.A posil;io Que contlver uma armad rt n e assume 0 v a I or I 9U a I a5, a s 'Que c nn f I ve r em as plillas r s c ab em os v e t o r e s 1 a 4 e a Que e c n t t v e r a. saida t e ra valor Igual a 8. Isso facilita as tomadas de decisBes 16glcas do prograrna. AI~m dlsso as coordenadas da salda siD armazenadas nas variiveis XS e YS.

A Ilnlia 10 dO programa 0 remete a uma sub-ratina de apresentaci'io ([inhas 740 a 830) cuja funci'io ~ tornar aIsat6rla a instilnte am que a ~xecuci'io do progtarna proprlamente dlto c eme.c a . Asslm. a varUi.vel TIME. QUs' s e r s utlllz a d a nil Iinha 200. realmente assume um v a t cr cu a t que r , Se I sso ni'io f..osse fe i to. a teme o qu e rs c o r r e r I a desds I) 1 nstante em Que D camando RUN fosse ~cionada at6 a execuci'io de Ijnha 200 seria sempre 0 mesmo. e 0 padri'io da tela a ser construfdo serla sempre rspetldo. 0 jogo perderla a "graca" pOis,ap6s rod~-Ia algumas vezas. vocij j~ saberla de cor onde est~ a safda.

A I Inha 20 abra um arqulvo na tela de alta resoluei'io para Qua p05sam05 8scraver nala posterlormente.

A I In~a 30 dimensiona a matriz de posicijes da tela a seleclona a telil de alta r.soluei'io apenas para Que as SPRITES possam ser deflnldos nas Iinhas segulntes.

A Iinha 4D atribulo valor t n t c t a t ao recorda (vari;ivel RE) e defIne as cadeias de caract.res que seri'io posteriormente utllizildas como argumento da Instruc~o DRAW.

As Ilnllas 50 e 60 deflnem respectlvamente os SPRITES correspondentes ao desenho de uma pi Iha II de uma cara sorridente Que representar;i 0 jogador no programa.

A I inha 80 zera 0 contadar de tempo (variivel TEl. 0 c o n r a d ur de p l I h a s j;i coletadas (varUvel PI). a ~ f I a s" qua t e 5 t a sea 5 a t d a f a I a tin 9 rdat va r I ~ val TT) e a varl;ival' retardadora do ~vanco de tempo enQuanto. durante o jOgo.voc~ estlver pa. ~do em alguma poslcil) (vari'vel WI.

Os ta c o s d e t t nr e c s entra as Iinhas 90 e 160 tim. par f l n a Lt d a d a . des811iJar a moldura.

A tt n n e 170. u t ttt e a nu o a a r cu t v o au s r t o na 11-

59

nha 20.escreve 0 trtulo do j090 na tela de alta resolu~ao. A fun~8o da instrucio PSET empregada nessa Iinha e Indicar a posicio do vertice superior eSQuerdo do campo reterento ao primeiro caractere a ser Impresso.

ultimo PSET antus do primeiro PRINT. 1 RS ...

As II nhas 180 e 190 remetem a e x e c uc s c Ilos subrotlnas Que Imprlmem respectivemente 0 RECORJE e 0 TEMPO. A I em d a tecn i ca j;i usada na I I nha 110 ( u s o do PSET I. e I as .e t n t am previamente com a cor de fundo t p.r e t c }. a regiii.o ande os valores 580 Impressos.

A I inha 200 sortela. alaatoriamente. um valor entre 1 a 1000 Qua sarvlr~ da argumanto para a fun~ao RNO ut II I zada na "c c ns t r u c ao " da t e I a.

As Iinhas entre 210 a 320 -esparham" areatorlamente 60 armadllhas. 4 pilhas e uma s a I d a na tela. ND t a c o deflnido por essas Iinhas. SiiD tambam atribu(dos os valores 5. 1 a 4. e 6 para os elementos da matrlz de posl~6es (M(X.V» Que conteriio as armadllhas. as pllhas e a saida. raspectlvamanta. Note Que os valores atrlburdes aDs alementos da rsferida matrlz corraspondentss as pi Ihas sao tarnbem as numeros da camada (1 a "I) em que 0 SPRITE relative a p l l h a e colocado (iinhas 280 e 290). Essa t'enlea , fundamental para Qua. postarlormente. 0 programa possa "r e e o nhe c s r " a c arna da em Que sa encontra a pi I he e I ean~ada pelo jogado~ e possa apag~-Ia ne tela.

Nas Iinhas 220 a 230 siio calculados os valore5 das vari~vei= I B J que 5e corraspondem com as coordenadas X e V. r8s~actlvamBnte. A dlferanca entre 0 par (X.V) 8 0 par II.JI I! que 0 prlmplro define urna posi~iio da ma t r r z M(X.V) a corresponde na tela de alta resolu~iio a 8K8 pontos. enQuanto QUu 0 segundo Oefine a posl~io do ponto de alt~ reselu~~c da tela correspondante ao v'rtlce sUPerior 8sQuerdo do par (X.Y).

A II nh a 330 a t u a t j z a as coordanadas em (1.1) na matrlz e (16.32) na tela. Elas sao relatlvas ao canto superior esquerdo da tela. A Iinha 340 coloca voce (SPRITES(2» na camada D e nas coordenadas atuais. a a 11- nha 350 Hespera" que ume tacla saja pressionada para que 0 J090 comeca.

so

A Ii n h a 3lio. armazena n a v a r Ilive ITo estedo des tecl3~ de sete pressionedas. Se nenhuma seta for dlgltade. a v a r t a v e t W 6 Incrementada, e quando atlnge 0 va~or·5. 0 tempo sofre 0 e c r s s c l mc de uma unidade {I inhas 380. a 4D.Q,}. Sa. por outro lado. qualquer uma das setes for presslon~de. 0 programa Ii desvlado pera a I inha 410. que Increment~

o contador de tempo em 10. unldades. Entre as I Inhas 420 e 450. testa-se se 0 movimento correspondente ~ sete digltada Ii ou nio possfvel. Gaso seja. as coordenadas da mat r t z (lLY) e da tela (I.J) sao a t u a t l z a d a s e voce Ii reposicionado pela I inha 460.

A t-I n h a 470 verlflca se a nova e o s t c ao corresn o-n d e a uma armad I I ha. Em c a s o n c s I t I vo 0 programa Ii desvlado para a I inha 730 e 0 jogo termlna.-

A linha 480 verlfica s e v o c s a l c a n c o u uma pllha.

Em caso posltivo. sera axecutada a sub-rotina 630. que incrementa a var i ave I PI (contadora do n ume r o de pi I has colet a d-a s) e " a p a s a" a p I I h are col hid a , r e con h e c end 0 0 numero da camada em que ela (SPRITE) se encontra. atravas do valor da matriz MIX.Y). A seguir. sssa elemento ~ "zaredo". para se tornar uma posicio I ivre para movimanto.

No retorno da su~-rotina descrlte aclma. sara v e r t f lc a uo pelelinha 490 se todas as pllhas ia foram alcanf;adas. Em caso aflrmativo. sera executada a sub-rotina 1i50 que "llga- 0 seu receptor. imprlmlndo as dire~Ses a serem seguldas, e verlflca se a salda fol atinglda.

Quando a sal da for a I c a n c ad a (TT~1), a I I nha 500 toca algumas notas musicais a desvla a programa para a I inha 520 Que, por sua vez. veriflca se 0 recorda fol batldo.

As linhas 530 a 600 flnalizam 0 jogo. Entra e l a s ha um I a c o (II nhas 540 a 570) qua "I imps- t n d a s as pas 1- eSss da matriz M(X,Y) para que 0 jogo possa r8came~ar.

Agora que voce ja sabe como 0 programa funclana em I Inhas gerais. experiments fazer algumas modlfjea~QBs.

Par exemplo. tente definlr novas figuras para con5truir a moldura e a5 armadi Ihas usanda a comando DRAW.

Tente tambem dafinir outros SPRITEs para as plIhas e para a care que representa voce no jOgo.

Dutra modificat;ao que voce pode tantar fazer para tornar 0 jogo mals diflei I ~ 81 Imlnar as Indicaf;Sus de d l r e c ji o (NORTE. SUL. LESTE e o.ESTE)' Nessa c a s o . as plIhas devem ser colhldas apenas para que a salda 58 torne acess[vel e a estrategia do j090 muda, voce deve avltar passar mais do Que uma vez num mesmo lugar.

61

mID m
i2J ID TIl TIl
i2J © EI
EI i2J i2J
EI lil i2JTIl
EI i2J m i2J i2J
m ill EI i2J~
IDID ID
ID El Elm ill "ill
ElElm m
ru ill i2J TIl
ID ru
'ill '~J Tela do s a t e a r n v t s I v s ! a e o s c o t n e r as o r t h a s

62

POU50

INSTRUCBES

Voce voltando a blse, ,batalha.

l! 0 pi loto de um c ac a super s Bn i co que estt. seriamente avarlado apbs uma vltorlosa

No cam; n n o de v c I fa, 0 c a c a acabou f I cando sem combustfval a comal;ou a perder altitude rapidamente.

Sua unlce salva~ao to fazer urn POUSO FORCADO numa pista inimiga que esta abandonadal

A cada segundo que passa seu ca~a supers6nico 5e aproxima mals e mats da plsta. que esta chela de obstacu- 105. fornando quase imposslvel qualquer tentatlva de pouso sem Que haja explosao do sau aviso.

Para conseguir pousar voce tera que desobstruir a plsta. lan~ando bombas sobre as obstaculos. ate que ela flque totalmante I impa. Sa voce consegulr acertar 05 obsttocu I 05 e de I x a rap I sta t rme e , sua a ta r r Issagem sera tr a n q u I I a. c a s o c o n t r a r 10 ...

Para lancar as bombas basta apertar a barra de espacos. mas davide as avarlas sofrldas durante a batalha. SBU ca~a 56 consegue lan~ar uma bomba de cada vez.

Faca uma boa mira e born pousol I I

DIGITACa:O

Para comecar a dlgitacio do programa dlglte 0 comando AUTO 1000.10 . Com 1550 0 micro Ihe +o r ne c e r a automat I c ame n t a 05 n urne r e s das II nh a s , I n I c I ando em mil e Indo de dez em dez. Voce notara que com essa numera~io a I Istagem de seu programa flcara mals estetlea.

Preste multa a t e n c a o ao dlgltar cada t t nh a , pols uma vtrgula a menos ou a mals sera'o bastante para que 0 programa nio funcione.

63

1000 --------------------------------

Ao termlnar cada t l n h a , v a r I f I q u e 56 e t a e s t a correta e se nao estlver. volta com 0 cursor at~ 0 arro e corrija-o. Quando tiver carteza que a I inha astli totalmente correta. dlglte RETURN.

Nesse instante 0 micro Ihe fornecera 0 numero da proxima I Inha que devera ser digltada.

Apes ter introduzldo todo a programa. dlglte CONTROL+STOP para Interromper a numerac~o automatlca e grave 0 programs em flta com, CSAVEnpOUSOn + RETUAN.

Para iniciar 0 jOgo. basta Gomandar RUN+AETURN (au a t a c l a F51.

A unice observacao a ser feita esta na I Inha de numero 2350. onde 0 caractere. semelhante a ume arvore. Que ests ap05 a primeira aspa que aparece. e obtido pressionando-se as teclas LGRA + D

64

j (H 0 j 0;;!() ioae

Jcgo : Pouso forcado

Rubens nov I 85

1040 --------------------------------

1.05'~ WIDTH 40

1060 DFFINT A-Z 1070 MAXFILES - 1 1080 X - RND(-TIME) 1.090

1100 INSTRUCOES

U1(,

U. ;~)0 I( EY OFF

j, j 3() ~;CR [EN 0.,0 1.1. 40 COLOI~ 1.7,7 1.150 CLS

1160 LOCATE 8,2,1

.1170 PRINT H»~ POUSO FORCADO «N 1180 LOCATE 0,6.0

1190 PRINT "Voce tem que fazer urn N~ 1200 PRINT "pauso forcado nurn"

1210 PRINT "campo inirnigo onde"; 1220 PRINT" forarn colocadosH

1230 PRINT "varios obstaculns paraH~ 1240 PRINT" impedir 0 pouso.H

1250 LOCATE 0,11,0

j,260 PRINT "Para dEsobstruir a"~ 1270 PRINT" pista voce deveu

1280 PRINT Nlancar barubas sabre"; 1290 PRINT" os obstaculos. ate" 1300 PRINT ilque a pista fiq.ue". 1310 PRINT H totalmente limpa." 1320 LOCATE 0.17.0

1330 PRINT "Use a barra de Espaco"; 1340 PRINT" para bombardear.N 1350 LOCATE 15,22,0

1360 PRINT NTEelE GUAlGUER TECLA "; 1370 X$ = INPUT$(l)

1380 •

1390' ROTINA PRINCIPAL 1400 •

1410 SCREEN 2,0

1420 OPEN "GRP:" FOR OUTPUT AS til 1430 GOSUB 1670

·1440 GOSliB 1860

1<150 (JOSUB 2290

1460 GOSUe 2420

1470 COLOR 1

1480 PRESET (60.20)

1490 IF IC$=HsH THEN GOSUe 1620 ELSE GO SUB 1570

1500 IF INKEY$ (> "" THEN GOTO 1500 1510 PRESET (60.60)

1520 PRINT Hl."TEClE QUAlQUER TECLA". 1530 X$ = INPUT$(I)

1540 lINE (60,20)-(220.2B).7.8F 1550 LINE (60.~~)-(220,6B).7.BF

.1.560 GOTO 1450

1570 • 1.580 •

ATERRISSOU

1590 •

1600 PRINT H1,"POUSO PERrEITO .1 !I" 1610 RETURN

1620 ' 1630 •

1640 •

COLIOIU

1650 PRINT "l,ffS~U AVIAO EXPlODIU I" 1660 RETURN

65

~
. :. @
~
!: {e~
~
~
~:
;= ~~*
;
·t
;: *1~
"
)
r:
e ~:[*
~
I !f;:
,
:
{~~ !
·1 ,
:..! :
~~ I
:~ ,
j~ ~.~* ,
,
~~ ,
::.
~ . :.:::.
:. "::~;
~
~ .':::'.
-:~~
.;
,
.:.
'.:
~ ~:~;~
~:
:=! .~~~
~
; .;~o;::.
;~ .. :~: ..
~:
f: @:
.:~
~
~
~
:: ~*~
I
~:~r:
.;
~l
~ ~t~:
=~
6 6 t 6"~ .. 1.6FJ(", '

LEr~ Sf! RITES

1.690 r

1700 HFSTORE

1.710 FOR I = 1 TO 3

1 ~, ;,:) \1 Y q; :" " 1/

.1.7::10 FOR ,J = 1 TO B

1740 READ Xi

1750 Y$=Y5+CHR$(UAL("&H"+X$»

1.71.J0 NEXT ,J

1.770 SPRITE$(I)=Y$

1713(' NEXT I

17<;'0 I~ETLJRN

11300 '

11310 r DEFINICAO DOS SPRITES

Hl;;'~0 •

1030 DATA 00,40.60,70,7B,FF,7F,00 i840 DATA 00.00.00,lC,7E,FF,FF,00 1850 DATA 00,3B,i0,38,7C,38,10,00 .1,060 •

lU70' PAISAGEM

1890 LINE (0.102)-(255,191',10.BF 1.900 ~OR I = 105 TO 190 STEP 5

1910 Xl ~ 256 * RNDel)

1920 X2 = 256 * RNO(l)

1930 LINE (Xl,I)-(X2,I).1

1.'/4(1 NEXT J

1950 rSE1' (0,100),12

1 'II., \) l:Hl f:1W "I~ 4 u;,:,~r~ 40 1.1~ 51) 1. R 4U 1 R 2U 11~ 4lJ 1. R 3" 1. f~7~:\ .I)'~ AW -u H~ 4U 1 R 2LJ2R 51) 11~ 2D i R 2D 1 R 5U2" l (;'!W [H~AIJ "1~5UU~4UH~5lJll~:::jIJ1R4U1R2E5U2" 19<;'0 DRAW "RiU3R2E4R2F5D4R3F3RBF2R7Ul" 2000 DRAW HR2UiR9F2R1E3R1E4R4U3R3U2R5" 2010 DRAW "E3R3U2R2UiR3DiR2F4D3R3F41)3" ;:)0:20 DR "'W "r~ 'H<ll~ 7D i I~ 7D i R 9E2r~ 4F21~ ~.!E3R 2" :)(\ ]1' DI~ "'W "F~lr~ 4F~!I~ 41) 1 RBD 1. R t,D 1 R 7D2R 5" 2040 L.INE (0,102)-(255,102),12

;:~<}::iO PillNT (~~,1.01).12

2060 POET (56,101),2

2070 DRAW "R4U2R~D1R5U1R4D1R2U1R4U1R3u 2080 DRAW "U1R4U1R2U2R5D1R2DIR2D1R5D2" 2090 DRAW "F2"

2100 LINE (0.102)-(255,102),2 2110 PAINT (80.100),2

2120 PSET (190.101),2

2130 DRAW "R4U2R4D1R5U1R4D1R2UiR4U1R3" 2140 DRAW "UiRAUIR2U2R5DIR2DIR201R5D2" 2150 DRAW "F2"

2160 PAINT (200,101),2 2170 CIRCLE (25.20),8,11 2180 PAINT (25.20),11

2190 LINE (128.5)-(150,6),15,BF 2200 LINE (124.7)-(158,B).15.BF 2210 LINE (131,9)-(147.10),15,BF 2220 LINE (180,4S)-(200,46),14.BF 2230 LINE (175,47)-(~04,48).14.BF 2240 LINE (180,49)-(202,50),14,BF 2250 PSET (30,160).14

2260 DRAW "R150E20L150G20" 2270 PAINT (40.159).14 2280 RETURN

2~~90 • ;;~300 •

2310 •

OBSTACULOS

2320 LINE (S8.143)-(180,152).14.BF 2330 AUg) ::: ""

2340 FOR I ::: 1 TO d

2350 IF RND(!» .5 THEN AU$ = AUi +

"+,, ELSE AU$ = AU$ +" "

2360 NEXT I

2370 IF AV$=STRING$(16.32) THEN GOTO 23

30

;!380 COLor~ 13

2390 PSET (60,145),14 2400 PRINT "I,AU$ 2410 RETURN

~!420 • 2430 • 2440 •

ROTINA DO JOGO

67

i $: ~
*
~
~
~
~ @
i
~ c
~
I i
G j
~ i
~ \
,
:~ e i
~
~,
~ I
*- e
:~ l
I ~
e
1
~
"
'. $
~
~
'"
,~
~ e
~
~
~ ~
~
~ @,
I'
~ Q
§
~
~ ®
~
~ e
I
0
~ e
i
~
~ $
'I
~ e
68 2450 YA=10 24110 XA=0 2470 TB'ii="N"

2480 ON STRIG GOSUB 2960 2490 STRIG(0) ON

2500 XA=XA+5 : IF XA } 240 THEN XA=0 2510 IF XA MOD 10 = 0 THEN YA=YA+i 2520 IF YA)127 AND XA=0 THEN GOTO 2600 2530 PUT SPRITE lS.(XA.YA),4.i

2540 PUT SPRITE 16.(XA+8.YA).4.2

2550 XB=XB+4 : IF XB } 248 THEN XB = 0

2560 YB=YB+5

2570 IF 18$ = "5" THEN PUT SPRITE 17,(X EI • YB ) . 1 .3

2580 IF Y8)140 AND TB$="s" THEN GOSUB 2

880

2590 GOTO 2500 2600 •

2610 •

ATERRISSOU

2620 •

2630 STRIG(0) OFF 2640 ICI[, = "5"

2650 FOR XA = 0 TO 35

2660 PUT SPRITE 15.(XA.140).4.1

2670 PUT SPRITE 16,(XA+B.i40),4.2

2t'.>B0 NEXT XA

2690 FOR XA = 36 TO 170

2700 PUT SPRITE IS.(XA.140).4,1

2710 PUT SPRITE 16.(XA+8.140).4.2

2720 IF POINT (XA+16.148) <} 14 THE

N GOTO 2760

2730 NEXT XA

2740 IC$ = "n"

2750 RETURN

2760 '

2770 • 2780 •

EXPLOSAO DO AVIAO

2790 FOR I = i TO 3 2800 ~OR J = 2 TO 14

2810 PUT SPRITE 15.(XA.140).J,i

AN&LISE

2820 2830 2EI40 2850 2860 ~~870 ~:~88(~ ;2890

PUT SPRITE 16,<XA+8.140).J,2 FOR K = 1 10 20

NEXT K

NEXT J NEXT I RETURN

EXPLOSAO OA BOMBA

2'700

2910 PUT SPRITE 17,<XB,YB),0,3 2920 TEI'li = "n"

2930 IF XB)50 AND XB(175 THEN LINE (XB- 4. YEI )--(XEl+12, YB+12) ,14,BF

~~940 STRIG(0) ON

2950 RETURN

2960

2970 LANCAR BOMBA

2980 •

2990 STRIG(0) OFF

3000 IF YA)112 THEN RETURN 3010 XB = XA + 4

3020 YEl - YA + B

:3030 T9$ = "s"

3040 PUT SPRITE 17,(XB,YB),8.3 3050 RETURN

So voci Qulser faler algumas modlflca~Oe5. aqul via algumas suyestoes.

Caso voce Quelra modlflcar a paisagem. 8sta , deflnida desde a I Inha 1860 at' a I inha 2280. Tome culdado com a cor da pista. que devera ser necessariamente clnza ( c 6 dig 0 14) a' n i 0 pod 0 so r des e n had a em 0 u t r 0 10 e a I .

o desenha do aViio e da bamba Istao definldos nao; linhas 1830.1840 e 1850.

, Se voci uu l s a r c n t o c a r som no programa, por e-

xe~plo. 0 de explosio da bomba. po de co'oc'-'o antre as 'inhas 2880"e 2950. Outra sugestio 'a de colocar musica para quando 0 pouso for perfelto ou outra muslc8 para 0 Impaeto do 8vlioou. alnda. a sam do motor do avlio enquanta ele, sobrevoa a pista. Voia 0 ultimo capitulo (TWO-tINERS SONOROS) P1ra se Inspirar.

69

o

L/++ +++ /

--============---- _. -

70

CH\PTRON

')JI

INTRODUt:30

Estamos no ano de 3003 onde os esportas gem multa for~a. mas sim reflexos r'pldos e multa dade,

nao eXivelocl-

Neste ano. na OLIMPIADA MSX. ocorrer~ a mals almejada provs de todos as tempos. 0 CHIPTRONI

Essa e r o va se r e e tt z a n urn a arena ci r c ut a r node daiS TRONS devem dirlglr suas motos sem se chocarem com as bordas. obst~culos au rastros delxados pelas motos.

o objetlvo de cada TRON i fazer com que seu adv e r s ar t o c n l l ua .

CUldado com as bordasl Em algumas partes existem escorregadores que sio passagens diretas para a morte.

As motos. ao partirem. acionam um contador de

tempo que ao f ina I ser a. soma du ao pi e c a r do v e n c e d o r .

Para controler as motos. use as teclas II.W.D.X (TRON esquerdo) e 2.4.6.8 (TRON direlto). 115 tecles de comando sio apenas pafa 0 contrale direClonal e nio para a movimenta~ao.

Para inlciar 0 jogo vocij deve aclonar a tecla GAPS LOCK antes de comandar RUN + ReTURN au F5.

DIGITAC30

AS l J n h a s de 180 a 250. de 260 a 330. de 90 a

120. de 400 a 530. e 370 e 380 devem ser digltadas como fol expl icado no capitulo 1. para reduzlr 0 tempo de dI9ita~io.

As l l nh a s 1<10 e 150 sao Identlcas as linhas 350

II 360.

o programa possul 103 I inhas.

71

72

10 ' Ch i p t ro n 20 GOmJB B'50

30 VZ=5:VX=VZ:PPX=0:PPZ=PX 4~' C'OL0IH 5,15, 1 ~'j

~':j0 !:;C1H_Ul ~!" 0

6 0 C 1 P C r. E ( 1. 28 , 96 ) r 90 • 1 70 P () ru r ( LW. 18~:; ) , 1 • 1 nOl [M[='O

'l0 L T 1< C L E ( i 2 B , 36 ) , 1 0 , 15

1 o 0 C J II C L [ ( 1 ~~ 8 , 1. ~'.'j (" ) , i 0 • 15

11.0 ClRCLE(16B,96),20,15",.85 120 CIRCLE(88,96),20,15.".85 130 X=t20:Y~96:Z=i36:U=Y

j4~) P!:iET(X,V),'1

ise I"EiFT(Z,U),6

1 6'~ D X <J : D Z = t

17() L ~",," Hil< [ Y!Ji: I F U~=="" THEN 260 iae IF l...~r'''''''4'' THEN D7=.1.

t9'~ IF t.·]j~~"8" THEN D7"'-'2

200 IF Lt="6" THEN D7=3

z i e rr L!Ji",,"2" THEN DZ='1

;~;;>(; rr L.~="A" TI~EN DX=i

;.:.~30 IF L. !Ji="w" TllEN DX'"'~~

;')40 JF l..!f,::o"[)" TIIEN DX=~I

;') ~j {} 1 F L.. 'Ii =:: " X II n lEN D X =" 4

260 1F DX=l THEN X=X-l

;,)70 JI- I'X<] TI·IEN X:::X+i

;'U'~ 11" DX":;,:; THEN Y::::Y--j_

;'! 9 (~ JT D X =: 4 T I lEN Y:::: y., i

:1 00 J r" D Z '"'.1. THE N Z:.::: Z:« j_

31~) J I Ii Z c'::I Til F N Z :," Z + 1

J;!~, II'"' [\;~':::;,~ THEN U:::U-j_

:J30 II" DZ""4 TH[U u==u+t

340 rX=POINT(X,Y):PZ=POINT(ZrU) :J ~j {) r ~~ r T ( X , Y ) , 4

] (, (1 P ~i r r ( 1 , LJ) ,6

::I7() rr I'X(}1 TII[N PUZ==PLJZ+TIME+20:GOTO 400

::UN .IT r' z < > 1 "I.I'IEN PYX=PYX+ T IME+20: GOrO 4lJ~)

:;)9 0 (:;(1 T () i 70

40e 1':OI~ F '" i TO ;:!0 STEP :1

410 CTlxCLF(X,Y),F,RND(-TIMEHH5 42" PLAY"S8T255L60GFAu

-iso NEXT F

440 VX=VX~1:IF VX)0 THEN 520 4~':;0 ooro 6130

460 FOR F=i TO 20 STEP 3

470 CIRCLE(Z,U),F,RND(-TIME>*15 480 PLAY"S8T255L60CAB"

49'~ NEXT F

500 VZ=VZ-l:IF VZ)0 THEN 520 ~j 10 noro 680

::.:j;'(; COl OR 1~,:;,1,:3r13:J(EY OFF 5 :1 0 G r P F r N 1

~:,:;4<~ PI( INT" MSX- Ch i p Tron"

~'j:;'~ LOC()TE :1, ~1

:::j/j (~ P R nn" J o gad or 1: V ida s P on t os" ~'j70 LOCATE 15,4

580 PRINT VX:LOCATE 20.4:PRINT PYX sve LOCATE 3 r (j>

600 rRINT"Jo~ador 2: Vidas Pontes"

(,1 {) LOCATE 15,10: PR INT VZ: LOCATE 20,10:

PI~INT PUZ

620 LOCATE12,6:PRINT"TEMPO" 630 LOCATE12.7:PRINTTIME

640 LOCATE 1,22:PRINT"Aperte urna tEcla

para cont." .

(J~,'.~(~ J F J: NI( Eyq; < ) "" THEN 650 660 IF INKEY~="" THEN 660 (,70 GOlO 40

680 KEY OFF:FOR F~l TO 14 STEP 2 690 COLOR F,F'~l,F-l

700 NEXT F

710 COLOI~ 15, i , 1 7~?() ~;CI~EENl

730 PRINT" MSX- Chip Tron" 740 LOCATE 5,10:PRINT"O j09ader"~

750 IF PYX)PUZ THEN PRINT" 1 venceu." E L!:!E F'1~:rNT" ~~ ve nc eu v "

73

~ ~$'
i
'.
i G
:;
>
~ f"~
'.
>
J @;
~
j
.: @
~
~
~ ,f:~
<
,~
'1 *]:,
~:,
<
~
{
f~' §j"
., ~
[:
~ ~~~
~
<
~
1 ~f~
:i
~ ~w
~j
~
:: ~3l~
:!
1
~ @:
1
l
>
\ ($
~:
i :;§!
~ t:.::
i~ AN,!$LI5E

760 PRINT:PRINT:PRINT"Jogador 1 fez"PYX "pontDs."

770 PRINT:PRINT"JogadoF 2 fez"PUZ"ponto

s.

780 FOR F=1 TO 14 .

790 COLOR F,F-1,F+1:FOR G=0 TO 30=NEXT G

Fl00 NEXT f--

810 PLAY"T6003L24EB04C03ABGEB04C03ABdEC ();.:!.~ II O::JCO:3AU03C"

020 IF INI(EYIJi( v:: THEN 820 830 IF INKEY$="" THEN 830 U40 RUN

ase COLOI< 1~:;,1,1 n{~(} !:;CI~EEN 2

870 DRAW"S8BM65,20NR5U7RSBR3ND7D3R4NU3D '1 n r~ 3U/ B I~ :]N[)71~ ::Jr2G2L::IB U4"

880 DRAW"BR15R3ND7R3BR3ND7R3F2G2L2F3BU7 DR3D7R5U7NL5BR3ND7F7U7Sb"

890 DRAW"BM130,150E7D7UH3GFBUBR6EU3HGD6 F I{ NE:,m 4NLJ6R 2L1::H~ 3D3NL38 U2R"

900 DRAW"BR80U3R4DBL4U4NR4U4BR7NR4D4R3F D:JGL:J!;4"

910 CIRCLE(50,145),30,7 9;:,1,} PA TNT (~:j0, t74) ,7,7 9::10 F()I~ F=0 TO 1.2B

940 PSET(F,70),4:PSET(255-F,70),6 <1'50 NEXT F

960 FOI~ F=1. TO 40 STEP 3

970 CIRClE(128,70).F,RND(-TIME)*15 980 PLAY"S8T255L60EDGFA"

In(} NEXT F

1000 IF INKEYI(>"U THEN GOTO 1000 1010 IF INKEy~=HH THEN GOTO 1010 to::1(? PLAyHCEG"

10:10 I~ ETURN

o programa dlvlde-sB em trijs partes. apressnta!;lio. i o sc e finaI12a!;iic.

7"1

A a p r e se n t a cji o segue d a Ii n h a 850 a 1030.

Nas I inhas 850 e 860 definimos a cor e 0 tipo de tela a ser uti I ilado.

Nas I inha 870 e 880 escrevemos CHIPTRoN e na 890 e 900 a assinatura do autor e 0 anD (atraves da Instru~ao DRAIY) .

Nas I inhas 910 e 920 fazemos

um c(rculo azul

c I a r n .

Da I inha 930 ~ 950 movemos as dois TRONS e as I inhas de 960 a 990 falem a explosao do choque das motos.

As I inhas 100b e 1010 verlflcam sa alguma tacla fOI p r e s s t o o ao a .

A I inha 1020 emite um som e a 1030 retorna a rotina prinCipal.

o jogo segue da I inha 3D ate 390.

Na t r nn a 30 l n r c r a t l z amo s as v a r t av e t s Que irao contar os pontos e as vidas de ambos os jogadores.

Nas i r n n a s 40 e 50 definimos a cor eo t I p o de tela Que usaremos.

Nas I inhas 60 e 70 dssonhamos a arena.

Na Iinha 80 inicial Izamos 0 tempo, zerando a v a r t a v e t do sistema TIME.

Da I Inha 90 a 120 desenhamos os obstiiculos.

Na Iinha 130 Iniciallzamos as v a r I a ve I s r e s p c n-;

~~veis pelas coordenadas x e y de ambas as motos.

As I Inhas 140 e 150 colocam as motos na tela. A I inha 160 dafine a dlre~ao de cada mota,

A linha 170 varifica 58 alguma tacla foi presslonada. Em caso positivo ala desvta a execu~ao para a rotin ado t e c I a cI 0 (I i 11 has de 1 80 a 250) . cas 0 con t r a rio a e x e c u c s o va i par a a rot i na de mov Imento ( Ii nhas de 260 a 330 l.

Na rotina do teclado verlfica-se 58 alguma te.c I a d Ire c Ion a I f 0 I pre 5 5 ion a d a e em cas 0 P 0 5 i t I v 0 a I t eras e a d I r e c s o d a moto.

Na r o t t n a de movimento sao v e r t t t c a d a s as dlre~6es de ambas as motes e executados as movlmentos.

Na I I nha 340 I emos 0 Que hi no e s e ac o ocupado pelas motos.

Nas I inhas 350 e 360 desenham-se as motes. Na r r n n a 370 e 380 verlficamos se e t a s c o t Ld l+

ram.

A I inha 390 desvia a e~ecucao do pregrama para a Inlcial l z a c j o .

Oa I inha 400 a 450 fazemos a explosao das motos. com um laeo Que determlna 0 numero de vazes e os ralOs das clrcunfer~nclas. A cor das mesmas ~ dada por RND (-TIME) * 15.

Na

inhe 420 e gerado 0 som e na 430 a final

do

la~o.

Na inhe 440 decrementamos as vidas everiflcamos se chegou a lero~ Caso saja zero 0 programa segue para

75

a rotlna de DISPLAY.

caso

contra, 10

vai

para a

A forma desta

rotina repete-sa da

I I n h a 460 a

510.

Nas I Inha da 520 a 670 esta a rotlna do

DISPLAY

da 5ituacio do jogo. imprimindo na tela 0 numero do ]098- d o r . SHU n urna r n de _I/Idas. seus pontos e a t eme o d e c n r r ido.

A I Inhe 670 del/olve 0 programa para urn novo con-

1ronto (montagem de tela e I o sc i .

Da linha 680 a 8"10 d e c o r r e a fi.nalizacia. Na I inhe 750 e decldido quem e a vencedor.

Na I Inha 850 reiniciamos desde a apresentacio.

[H IF>

,A fJ.dn B 5

76

NAUTILUS

c(,

INSTRUCBES

Nas profundezas dos mares de urn distante pafs v as a 5 i I e n c i o s ams n t a . e s e r e i tando e: s s p i o n a n d n , urn submarino nuclear, 0 N~UTILUS I

A ~nica forma de acabar com a representa i destruf-Io, e isso taber~ tante almlrante comandando pessoalmente de urn destroyer.

o Niiut i I us e s t a c o n+ i n a n o pe I a levo submarino a uma regiio de 10 km ,de comprimento e 10 km de profundidade (urn to,er encontra-se num dos v~rtices deS56

ameaca que sle a, v o c d . urn i mna r « o ataque a bordo

topografla do relargura, 10 km de c uno t ) . Seu descuba (ti9'.10.1).

f i 9 _ 1 0 . 1

/

10 km

E

""

) ,

J ./

, '

/

o

77

Voce dlsp5e de dez cargas de profundidade e. para lan~a-Ias. basta digital' as coordenadas das posi~5es em que elas devem explodlr. em relacio i sua posl~iol

A caordenada X reprasenta a dlstincla ao longo da dlrec&o Norte-Sui.

A coordenada Y representa a distincia ao lange da dlrecao Laste-Ooste.

A coordenada Z representa a profundidade da ex-

plosaol

Cada VB~ Que uma carga explode. devldo a turbuI enc I a das 6guas. a Naut I I us A for c auo a I i gar seus motores para establ I Izar-sa. Saus paquenos movimentos permltem que ela seja detectado POI' um sonar ramoto lan~ado junto com a carga a que resiste a explosao.

Atraves dos dados anvlados pelo sonar remota. voce pode saber a Que distincia (0) a carga explodiu do Nautilus. Sendo urn almlrante s ab l o , t n t e r t s e n t e • astuto. lobo-cia-mar masmo. voce nio tera diflculdade em acertar a Nauti Ius depois de uns Ii au 7 l a n c ame n t o s .

Sa POI' algum motivo urn total de dez lancamentos forem fe I t n s e 0 Naut i I us nio t I ver s i do destru r do. voci 0 se r {o! I I

Nessa caso. urn outro ~estroyer sera deslgnado para a tarefal

Se a Nautilus for d a s t r u r uo . outro s u bma r Ino sera enviado para suas (oguas terrltorlals e nova batalha tera Que ser travada.

Para reinlciar a batalha au chamaI' outro destroyer. dlgite a barra de espa~os.

B a a s 0 r t e. a I·m ira n tel I I

DIGITACl'l:o

Este programa contem muitas I inhas semelhantes e voce pode economlzar urn born tempo usando algumas para gerar as demais. As mals Importantes 590 as de 140 a 270 que lmprlmem alguns sprites na tela. e as I Inhas de 770 a 860. que apenas armazenam dados. Sa voce der uma boa olhada no e r o s r ama. n o t a r 9 que ex i stem mu i tas u u t r a s I I n h s s Que sio praticamente repatldas. Experimente. como exercrcio. Identifld.-Iasl

Ap6s que modo for. 10.

digital' totalmente 0 programa seja Is de revlse-o ao menos uma viz antes de executa-

10 ;;:!0

N AUT I L U INTERVALON=ONINTERVAL=90GOSUB870 SCREEN2:0PENNGRP:HFOR OUTPUTASHl

C.' ,.)

]0 40 LINE(0,0)-(255,70),4,BF 50 LINE(0,70)-(.255,191),7.BF

78

~ @
~
~
~ @
~
I
&
I
®
,~
r:
~ ~r.*
~:
s
"
:~ ($
:~
:0:
~:
~~
:.: .~'i~
c
f~
:~
,l i~§
*
~ ~§~
~
::
~~ t;;~
::
.,
::
j~ ;:t:~
~ ~,:~,
-<:-"
I !':~::
~
I itt:
$.~~
l
,
~
:; (~l:~}
,.
~
:.
:!
t~ !:I0 !='Ol~ Fe::0 TO 15

70 C 1 c:';?56*lmD ( t ) : C2:::~~56*RND ( 1 ) 80 L~121*RND(-TIME)+70

90 LINE(C1,L)-(C2,L).3

1.00 NEXT F

110 FORG=lT08:S$=NH:FORF~iT08=READA$ 120 S$=S$+CHRS(VAL(H&HN+AS»:NEXTF 1.30 SPIHTE$(G)=S$:NEXTG

140 PUT SPRITE 0.<40,63>.1.1 150 PUT SPRITE 1,(48.63).1.2 160 PUT SPRITE 2.(98,170),4.3 170 PUT SPRITE 3,(106,170).4,4 180 PUT SPRITE 20,(210.25),11.5 190 PUT SPRITE 4.(190.120}.8.6 200 PUT SPRITE 5.(150,10),15,7 210 PUT SPRITE 6.(158,10>.15.8 220 PUT SPRITE 7.(110.12),15,7 230 PU1' SPRITE 8.(118.12),15.8 240 PUT SPRITE 9.<180.20),15.7 250 pur SPRITE 10,(188.20).15,8 260 PUT SPIUTE 11;(200.5),15.7 270 PUT SPRITE 12,(208.5),15.8 280 G=98:FOR F=40 TO 210

290 PUT SPRITE 0,(F.63).1.1

:;)0() PUT SPIHTE 1,(F,t·O,b::l)rl.~~

310 IFF/2=F\2THEN G~G+l:PUTSPRITE 2.(G. 170),4,3~PUTSPRITE 3,(G+O,170).4,4

::120 NEXT F

330 Gl=150:G2=110:G3=180:G4=200 340 FOR F=t00 TO -100 STEP -1

350 G1=G1-1:PUT SPRITE 5,(Gl,10).i5,7:P UT SPRITE 6,(Gl+7.10),15.8

360 G2=G2-1:PUT SPRITE 7,(G2,i2),15,7:P UT SPRITE 8.(G2+7,12),15.8

370 G3=G3-1:PUT SPRITE 9,(G3,20),15.7:P UT SPRITE 10,(G3+7,20),15,8

380 G4=G4-1:PUT SPRITE 11.(G4,S).1S,7:P UT SPRITE 12,(G4+7,5),15,8

::190 NEXT

400 COLOR1.5,5=SOUND8.10:S0UND9,9

~ #) l 410

~ j 420

~ 1 4:]0

,;;fj 1 440

~ ~

~ @ i. :~:

:, 1 4"0

!i ~

:, $ i 480 PRESETCi0,70):PRINTtti."TIRO X Y Z

:~, ·l DN; PRESET C 14, I(I(): PR INTtH, r

~ &.,~! 490 XGJ=INI<EY9i:IFX1i("0"ORX9i)"9"THEN490

:l ;.w> 1500 Xi""VAL(X!Ii):PI~ESETC42.KK)

:~ ~

:,l. l ~510_ prnNTlIt. Xi

i~ <li~ ; ~~~~~) Y$::".T NI< EY9i: I rn', < "0" OR Y9i > "'9"'TI-IEN520

':~ ~

~ i 530 Yl=VAL(Y$)~PRESET(58.KK)

~. @ ~:j40 pnINTII1 .• Yi

~.: :')~';0 7Qj,::: I NI< EY$: I rl$< "0"ORZ$ >"9"'THEN550

,:0:, ~:d)o(l Zt::VAL(ZYi):PHESET(74,KK)

~ '~7 ::'j 7 o r' I~ UH II i . Z t

, 580 DX=Xi-X0=DY=Yi-Y0:DZ=Zi-Z0

~ .. »

.• 590 RESTORE860=JNTERVAlOFF:FORF=6TOi3:R

~ EADX:SOUNDF.X=NEXTF

~'m 600 0"= INT ( .5+ 100*SGR (DX*DX+DY*DY+[)Z*DZ)

,. )/t00

I. 610 PRESET(96,KK):PRINTH1.D

i 6;,:,~'} 11"7 D::00 THEN 690

! 6:W r Ol~ F"" 1. TO~10: NEXTF.: I NTERVAlON: NEXTT

'. $ f,1):('l PIHSET(~!0,~) :PRtNTlH,"SlJblllal~ ino SI::'

!

.~ i':\PICD~: i m a n d ol " :LINE (20.30) - (130.40),4. SF

~:@" ~,50 pr~[!:;ET(10,30):PIHNTlH,'''Tol'"pE'do em n

~ il

:8 i;$ ~

'j ~

~

" ,1&

~~

80

LINE ( 0 r 42) _. ( 154 • 191 ) .5 • B F , LINE(6.65)-(148.190).1,B PRESET(30,52):PRINTII1."NAUTIlUS" X0=lNT(RND(-TIME)*10) Y0=INT(RND(-TIME)*i0) Z0=INT(RND(-TIME)*1.0)

FOR T~l TO 10:KK=~0+T*10

os !,; CI d i t'" £'c a 0 ! "

660 IN'!'ERVALOFF:FORF=lT020:PLAY"05L36F"

• "0 5l.::J~, F" : NE X T F :

670 FORG=0T060:NEXTG:RESTORE850:FORF=6T 013:READX:SOUNDF.X:NEXTF:FORF=1T01S:COL ORF.F,F:PUTSPRITE0.(212.63)~F,1:PUTSPRI

TE1.(220,63),F,2:NEXTF:COLOR1,5,5

680 IF STRIG(0)=0 THEN 670 ELSE CLOSEHi =RESTORE 770=GOTO 10

690 IF 10-T)R THEN R=10-T

700 LINE(20.30)-C130.40).4,BF

~ @
'~
~
~
~ $
I
~ -.$
i$
~ e
il
:l
~l $~
~
~ @
~
~
§ $
~
~
~ ;t,
"
x
>:
§
!l
>:
~ e
~
~
~
x
:~ ... !-!-r.
- ... ~
,~
--:
;.: AN~LISE

710 PRESET(30.30):PRINTH1,"RECORDE:H;R 720 LINE(26,44)-(120,62),i.BF:COLOR15,1 730 PRESET(40.54):PRIN1'Hi.uPONTOS:u~i0- T

740 FORG=0T060=NEXTG:RESTORE850:FORF=6T 013:REAOX=SOUNDF,X:NEXTF:FORF=1TOi5:COL ORr.F.F:PUTSPRITE2,(182.i70),F.3:PUTSPR I TE3, ( :I. '}0. 170) ,F r 4: NEXTF: COLOR 1,5.5

750 PU1'SPRITE2.(i82,170),4,3:PUTSPRITE3 .090,170),4,4

760 IFSTRIG(0)=0THEN740:ELSESOUNDi0.0:1 NTERVnLON~GOT0400

770 DAT~ 00,00,00,03,0F,83.FF.3F 780 DATA 00,00.00,00.F0.FF,FE.FC 790 DATA 00,00.0i.BF.7F.BF,00.00 800 DnTn C0.80.E0.FE.FF.FC.00,00 Ui0 [)(H-A 3C,7E,FF ,FF ,FF ,FF .7E,3C 820 DATA 18.3C,3C,18.36,59,A9,A5 U30 DATA 1C.2B,DF;EF,FF,7D,lA,06 _840 DATA 40,F8.34,FE,6F,FB,BC,78 850 DATA ~0,220,0,0,15,f00.60,0 860 DATA 20,220,15,15,15,r00,60,0

{370 PLAyUv1011205aa613g''.''v911305ao613g n: r~ETurm

o funcionamento do NAUTILUS e bastante simples, Exlste uma parte Inlclal do programa (I Inhas entre a 30 a a 390) Que ,panas Membelezam" a abertura visual. apresentando uma paisagem maritima e movendo pela tela alguns sprites t um p o l v o , n a v en s , 0501.0 NautiluS eo s e u destroyer). Os dados us ados para definicao dos sprites estao armazenados nas I Inh15 3ntre a 770 e a 840.

A I inha 20 'a responsavel pelo Irrltante scm e r c duz i da pelo sonar do destroyer. s srnp r e Que 0 ra I fig i 0 i nterno dO MSX allan~a um seg~'do e melo. a sub-rotlna da 11- nha 870 ( um PLAY) e executada. Se voce qu 1 ser e I Imi n a r esse sam. e l l m l n e a Iinha 20. Sa voce qu t s e r a t t e r a= t o • altere as nota~ na instru~ao PLAY da 1 inha 870.

A arte principal do l c s o a s t a antre as Iinhas 400 e 760. Vamos cementar rapldamente alguns trechas mais Imp 0 r t sn t e s ,

As I Inhas ~ntre a 440 e ~ 460 escalhem uma posi-

81

t;iio para 0 Nat II us. sorteando cad" uma de s u a s coordenadas ( XO. YO e ZO).

A I Inha 470 abre um la~o qu~ pode ser repetldo dez v e z e s • uma para c a e a carga (t i r o ) que a dastrorer poCle lant;ar. As coordenadas Cle cada tiro sio insariClas nas varlavsls Xl. Yl e Z1 e Impressas na tela pelas linhas entre a 490 e a 570.

As Iinhas de 580 a 610 calculam a dlstincla (0) da eXPlosiio at~ 0 submarino e geram um som de explosio fusando dados da 1 Inha 860).

Se a Nautilus foi atlngldo (0 = 0). a p r n s r ama i desvlado para a Iinha 690. onde a rotina de flnallzat;1ia v I tor I c s a i s x e c u t a d a (I I n h 'IS de 690 a 750). Caso contrario. um novo lancamento (tiro) 6 r a a t t z a dc .

Ao termi narem os t I ros. sa II Naut II us nio t i ve r s l do a t l ns l dc (0 = 0), a rotlna de flnalizacio p e r d e do r e ~ e x e cu t a d a (iinhas de 630 • 670).

Em ambos as casas. digltando-sa a barra de espa- 1;05 (iinhas 680 e 760) uma nova batalha 6 travadal

Propositadamente nio antramlls em detalhes sobre cada I Inha do programa, mas com urn pouco de esforco voce mesmo pode analls6-lo IInha por t l nh a , Suas rotlnas sio bastante simples e a mals complexa envolve apenas 0 teorerna de -trltagoras" (fig. 10.2). Fica como exercfclo a alterat;io e complementacao do programa por sua propria conta 1

fig. 10.2

82

z

Xi - X0 Yi V0 Zi - Z0

Zi

I!.xpioSio

Z0 t"-'-----------Y

o :: 6.x2 +Ay2 +6.z2

SGR( AX *AX + AY .AY +AZ .Az)

o

TANK

INSTRUCSES

Neste j090 sua missio ~ roubar urn diamanta que est~ guardado no fundo de urn subterrineo protegldo por quatro robes guardiies e em segulda trazi-Io de volta 8 superflcle. Voci dlspoe de urn tanque de guerra que pode abrir caminho a tlros e r a a e r t r 05 robBs que tentario cerc'-Io. Para pegar 0 dlamante. basta passar com 0 tanque por clma dele.

o tanque e controlado barra de espa~o. As taclas ~ a tec I a 6 0 move par a a frente usada para atirar.

A salda fica no canto superior esquerdo ~a tela. sobra 0 lugar onde 0 tanque 6 colocado Inlclalmente. Nao tente salr sam ter pego 0 dlamante (voc8 percebar6 tardlamente que Isto ~ desastroso 8 extremamante desaconselhive I). s e mesmo ass 1m vocl! q u I s a r exper Imentar. ao menos grave 0 programa antes I"

pelas taclas da cursor a e C> glram 0 t a n qu e , e a barra de espa~os fi

DIGITACI'iO

o programa nao oferece dlflculdade da dlgltacio. mas 6 Importante transcrever as I inhas com bastants atencio para nio haver surpresas na hora de rodar 0 programa. ~'"

1 TANK ATTACK

10 OArA 24,10,10,D6,D6,FE,FE,FE,C6 20 DATA 25,FC,FC,70,7F,70,FC,FC,00 30 DATA 26,C6,FE.FE,FE,D6,D6,10,10 40 DATA 27,3F,3F,0E,FE,0E,3F,3F,00 se DATA 4,HI,:1C,3D,3E,3D.3C,18,3C

83

~ ®
I
$
~
~ @
~
~
I @
~
# ~~
~
<
~ ®
~
~
~
~
~ *
~
~f
., $
~
~
~ q~
~
~
~
:~
~~ tts
~
~
~ @
~ .
l 0
~
s
~
~ $
~
I
-$~
~
I
~ ~*
~
~
x
~ @
~
~
" Q=$
~
::
~
;:
8'1 60 DATA 5,18,3C,BC,7C,BC,3C,18.3C 70 DATA 6,00,00,00.18,18,00,00,00 80 DATA 16,00,3C,56,FF,56,34,18,00

190 DATA 8,FF,FF,FF,FF,FF,FF,FF,FF 'i00 DATA -32,1,32,-1

110 SCREEN 1,,0=GOSUB 490

i20 KEYOFF:DEFINT A-Z=GOSUB 450:CLS:WID TH 30:PRINTCHR$(219);CHR$(203);ST~ING~( 28,2i9);:FOR 1=1 TO 21:PRINTCHR$(219);:

FORJ=lT028:PRINTCHR$(1);CHR$(72);:NEXT:

PRINTCHR$(219);=NEXT I:PRINTSTRING$(30, 219);=FOR 1=0 TO 3=READ DS(I):NEXT

130 INTERVAL ON:ON INTERVAL=3 GOSUS 340 :DEF FNPOeX,Y)=6144+X+32*Y:VPOKE 6831,1 C)

140 A~6i78:D=2:F=0:P=0:VPOKE A,D+24:STR IG(0)OFF:ON STRIG GOSUS 330:FOR 1=1 TO 4:X(I)~i5+I:Y(I)=15:NEXT I

150 STRIG(0)OFF:C=STICK(0):IF C=3THEND= [)+lELSEIFC=7THEND=D-1ELSEi70

160 OUT170,154:0UT170.26

170 IF D~-lTHEND=3ELSEIFD=4THEND=0 180 VPOKE A,D+24:STRIG(0)ON

190 X=(A-6144)MOD32:Y=(A-6144)\32:FOR I =1 TO 4=Z=8=IF I(4THENZ=32

200 VPOKEFNPO(X(I),Y(I»,Z:Z=4:DX~0:DY= 0:IFRND(1».5THENDX=SGN(X-X(I»ELSEDY=S UN ( Y _. Y ( I ) )

210 IF I(4THEN 250

220 IFVPEEK(FNPO(X(I)+DX,Y(I»)(}32THEN IFVPEEK(FNPO(X(I)-DX,YCI»)=32THENOX=-D XELm::DX""0

;?30 IFVPEEI< (FNPO (X (I) , Y (I) +OY) ) ( )3~.~THEN IFVPEEK(FNPO(X(I),Y(I)-DY»=32THENOY=-D YEU;[DY=0

240 U=FNPO(X(I).Y(I»:IF VPEEK(U+l)+VPE EKCU-l)+VPEEKCU+32)+VPEEK(U-32)=32THENG . ()SLJB400

250 X(I)=X(I)+OX:Y(I)=Y(I)+DY:IFX(I»XT HENZ=:~.j

@

!

~ e 1

-j @ I

,

I@

~

260 IFVPEEK(FNPOeX(I),Y(I»)=6THENX(I)= 20:Y(!)::::1~:j

270 K~VPEEK(FNPO(X(I),Y(I»):IFK)23ANOK (28THENT=0:STRIG(0)OFF:GOT0410ELSEVPOKE FNPO(X(I),Y(I»,Z:NEXT I

280 K=VPEEK(DS(D)+A):IFC<>lTHEN320

290 IFKC)8ANDK()219THEN VPOKE A,32:A=A+ OS(O):VPOKE A,D+24:0UT 17~,154:0UT 170, ;~~ 6

300 IFK=16THENF=1:FORI=lT010:BEEP:NEXTI :ELSEIFK=40RK=5THENT=0:STRIG(0)OFF:GOTO 410

310 IFK=203THENIFF=1THEN420ELSECLS:PRIN THVOCE NAO OEVIA T~NTAR FUGIR ••• H:NEW 320 GOTO j.50

330 IF T)0 THEN RETURN ELSE T=A:DT=D:BE EP=INTERVAL ON:RETURN

::140 IF T=0 THEN r~ETLJRN

350 IF VPEEK(T)=6 THEN VPOKE T.32

360 T=T+DS(OT)cIF VPEEK(T)=32 THEN VPOK E T,6:RETURN

370 IF VPEEK(T)=8 THEN VPOKE T,32

380 IFVPEEK(T)=40RVPEEK(T)=5THENGOSUB47 o

390 INTERVAL OFF=T=0:RETURN

400 U=FNPO(2,Y(I»:FOR J=U TO U+27:VPOK E J,32:NEXT J:RETURN

410 CLS:LOCATE 0.10:PRINT"VOCE FOI CAPT URADO":GOT0430

420 CLS:LOCATE 0,10:PRINT"VOCE CONSEGUI U"

430 PRINT"JOGA DE NOVO ?H,

440 A$=INPUT$(l):IFA$=HSHTHENRUNELSEIFA $=HNHTHENENDELSE440

450 CLS:FOR 1=0 TO 8:READ Z:FOR J=0 TO 7:READ B$:VPOKE J+8*Z,VAL("&H"+8$):NEXT

J:VPOKE 6150+2*I.Z:NEXT I 460 I$=INPUT$(l)=RETURN

470 FOR l=iT04:IFFNPO(X(I}.Y(I})<>TTHEN NEXTI:RETURN

85

480 VPOKE T.32:X(I)~20:Y(I)=15:FORJ=iTO 5:0UT170.154:0UT170.26:NEXTJ:RETURN

490 VPOKE8192.13S:VPOKE8193.96

500 VPOKE8194.246:VPOKE819S.39:FORI~819 6T08210:VPOKEI.7=NEXTI=VPOKE8219.i76 510 RETURN

AN~LISE

o programa Inlcla chamando uma sub-rotina (11- nhas 450-510) Que ie as instru~oes DATA do Inlclo do programa B faz a redBfini~ao dos caracteres (tanque. robBs. diamante. etc).

Em e e s u t d a . 0 programa imprime a cenlirio (iinha 120) e Inicia as variliveis (I Inhas 120-140). A a~ao centra I do j ogo flea entre as I I nhas 330 e 390. A Ii nha 400 serve para abrlr uma passagem para a robo obturado (0 que nao Bscava t~nels) e as I inhas 410 a 440 encerram 0 iogo.

86

BOLICHE

INSTRUC6ES

Esta joga' aKtramamante slmplas, a daspelto de sau programa sar um tanto complsKo.

Ao sar exacutado, ele gara na tela a Imagem de uma pista"de bollche vista d e c rma , Exlstam 21 garrafas que deverio ser derrubadas com 6 bolas.

fig. 12.1 BOLICHE

Bol.a:6 Pontos'10

0
0
0 0
0 0 'b C:
0 0
0 0 0
0 0 0
0 0
0 0
0
0 A bola surge numa posl~ia a dlralta da plsta e val se desloeando para a asquerda. Voce pode mova-Ia para eima nu para baixo com as setasL\e'V. por6m apenas enquanta ela nio chegou a faixa demarcat6rla central. Ap6s esse I Imi t e , a bo I a segue uma Ii nha rata.

Ao Inserlrmos este programa neste Ilvro. nio pensamos am suas qualldades como jogo. mas slm no e s emp to que ala representa quanto a uti I Iza~io da Instru~io ON SPR I TE.

87

Como voee deve ter notado. 0 programa pareee om pouco longo para produzir algo tao simples. Esse aparente excesso de programa ser~ compreeodldo mals adlante. na ANHISE.

DIGITACi3;O

o programa e relativameote extenso e um born tempo pode ser ecooomizado atraves da re-uti I izacao das 11- nhas j~ introduzldas. Sa voci Qulsar. pode digltar 0 programa seQuencialmente. comecando da I inha 10 e terminando n a 800. Nos. entretanto. s u s e r Imos Que voce uti II ze as I inhas semelhantes. Para faci Iitar seu trabalho. relacionamos a ssgulr as I inhas separadas em grupos .

... l l n h a s , 40.70.100.210.220.300.360,

FOR •..• = •••• TO ••.. etc .

... l t nh a s , 50. 80

5$:5$+ ....

... Iinhas. 60, 90. 110

SPRITE$(n)= ....

... II nh a s , 120. 130

DATA ....

* llnhas, lBD. 190. 200. 320. 340. 450

LINE ....

1< l l n b a s , 230. 260. 370. 510. 601l. 660.730.800

PUT •...

* I inhas. 240. 270

CIRCLE ...•

... I Inhas. 250. 410. 420. 430. 470, 500. 530. 570. 621l. 680

If ••.. THEN .•..

* t t nh a s , 330. 350. 460

PRESET ••..

88

... r t nh as , 540. 580. 590. 630.640.650.690.700.710. 720. 750. 760. 770. 780. 790

IF .... T~E~ .•.. PUT SPRITE ....

... I l n h a s • 10. 30. 140. 290. 480. 520. 560. 610. 670. 740.

Linhas REM

As I I nlias nao i n s s r I das em nenhum desses grupos

sao as s e n u l n t e s , 10. 20. 150. 160. 170. 280. 310. 380.

390. 400. 440. 490. 550.

Apbs dlgl tar c omp l e t ame n t e 0 programa. q u a l u u e r

ue saja a sequijncia escolhlda. conflra-o. ao manos uma

ez. I Inha por I inha.

~ 10 ' B 0 L I C H E

'e··I~! 20 ::10

@ 40 i se @\ i i @

~

SCREEN 2,0,0

• tI till It It It It It tilt tI tt u tt tt H"" IHI Uilil tHHI IHt 1111 It It It FOR F~i TO 8:READ Ai S$=SI+CHR$(VAL(H&HH+A$»:NEXT F

60 SPRITE$(l)~S$:S$~HH 70 FOR F=l TO 8:READ A$

80 S$=S$+CHR$(V~L(H&HH+A$»:NEXT F

90 SPRITE$(2)=S$:S$=HH

100 FOR F~l TO 8:S$~S$+CHR$(0):NEXT F 110 SPRITE$(3)~S$

120 DATA 3C,66,FB,FD,FF,FF,7E,3C 130 DATA 38,44,BA,BA,BA,44,38,00

j_ 40 '" tI" nit" "* Ittl It 14 n It tt tt It It n!ttt It 14 1t""II"""" It" 150 MAXFILES=i:PT=0:COLOR 15,6,6:CLS

160 OPENHGRP:" FOR OUTPUT AS 1t1 170 PRESET(60,2):PRINT "l,H

BOLICHE

Bola: Pontos:u

180 LINE(0,30)-(255,35),1,BF 190 LINE(0,134)-(255,139),l,BF

200 LINE(145,34)-(147,135),I,B:A=1 210 FOR K=0 TO 5=X=K*16+20

220 FOR Y=40+8*K TO 80 STEP 16 230 PUT SPRITE A,(X,Y),15.2:A=A+l

240 CIRCLE(X+2,Y+2),3,1:PAINr(X+2,Y+2), j.

250 IF Y=80 THEN 280

260 PUT SPRITE A,(X,160-Y),15,2:A=A+l

89

~
Q
*
f2
~~
1
@ 1
I
~ t
I
f~ ~
~
@ i
l
,
@ !
1
® !
<
!
@ I
I
1
e !
I
<
e !
I
e
I
@
!
® I
,
90 270 CIRCLECX+2,162-Y),3,1:PAINT(X+2,162 --- Y ) , j

;':!80 NEXT Y,I<

290 'HHH""""""""""""""""""""""""""""" 300 FOR !3:=::I. "TO 6

310 Y=36+INTCRNDC-TIME)*78) 320 LINE(78.19)-(90.28),6,BF 330 PRE!3ET(70,19):PRINT"1,S 340 LINE(182.19)-(220.28),6,BF 350 PRESET(175.19):PRINT"1,PT 360 FOR X=255 TO 0 STEP-i

370 PUT SPRITE 0,(X,Y),1,1

3D0 SPlnT!: ON

390 ON SPRITE GOSUB 490 400 T=STICI{(0)

410 IF X(i45 THEN 440

420 IF T=5 THEN Y=Y+!:IF Y>125 THEN Y=l

")1::i.: •• ..J

430 IF T=1 THEN Y=Y-l=IF Y(35 THEN Y=35 440 NEXT X,S

450 LINE(182,19)-(220,28),6,BF 460 PRESEt(175,19):PRINTHi.PT

470 IF STRIG(0)=-1 THEN RUN ELSE 470

480 '"H"""""H"""""""""""H"""""""""""" 490 SPRITE OFF:BEEP:PT=PT+i

500 IF XCi00 THEN 530

510 PUT SPRITE 21,(X,Y),0.3:RETURN

520 '"""""""""""""""""~"""H"""""""""" 530 IF X(84 THEN 570

540 IF YCB0 THEN PUT SPRITE 19.(X,Y).0, 3 ELSE PUT SPRITE 20,(X,Y),0,3

5S0 RETURN

560 'MM""""""HHHMHH"""M""H""""H"""HH"

570 IF X(68 THEN 620 -

SS0 IF Y(72 THEN PUT SPRITE 16,(X,Y>.0. 3:RETURN

590 IF Y(88 THEN PUT SPRITE 18.<X.Y).0, 3=RETURN

600 PUT SPRITE 17,(X.Y),0.3:RETURN

610 'H"H"M""""""""H"HHH""HH""HHHH""H"

~ tl 620 IF X<52 THEN 680
;j
~ 630 IF Y(64 THEN PUT SPRITE 12,<X,Y),0,
~. ~(. 3:RETURN
~
I 640 IF Y(80 THEN PUT SPRITE 14,~X,Y),0.
$ 3=RETURN
650 IF Y(96 THEN PUT SPRITE 15,(X,Y),0,
3=RETURN
~ "',
.€ *>.f;!.'" 660 PUT SPRITE 13,<X,Y>,0,3:RETURN
~: 670 '""""""""""""""""""""""""""""""""
~:
Ii * 680 IF X(36 THEN 750
~: 690 IF Y<S6 THEN PUT SPRITE 7,(X.Y),0,3
~:
~. (~ :RETURN
~:
§ 700 IF Y(72 THEN PUT SPRITE 9, (X,Y) ,0,3
~ $ :RETURN
::: 710 IF Y(88 THEN PUT SPRITE 1i,(X,Y),0,
i
3:RETURN
1- m 720 IF Y(104 THEN PUT SPRITE 10. (X, Y>,0
k
~ ,3:RETURN
~
:~ ~% 730 PUT SPRITE 8,<X,Y),0,3:RETURN
., 740 .""""""""""""""""""""""""""""""""
~ ,~~ 750 IF Y(48 THEN PUT SPRITE 1.<X.Y>,0,3
:1 :RETURN
760 IF Y(64 THEN PUT SPRITE 3.<X,Y),0,3
~. @ :RETURN
.<
,
:~ 770 IF Y(80 THEN- PUT SPRITE 5,<X,Y),0,3
~
~ (E} =RETURN
I 780 IF Y(96 THEN PUT SPRITE 6,(X,Y),0,3
~ @ :RETURN
~~
:!: 790 IF Y(112 THEN PUT SPRITE 4.<X,Y),0,
$
~ 3=RETURN
~ :f.>, 800 PUT SPRITE 2,(X,Y),0,3:RETURN
.,
:§ AN.diLISE

Para fac I I i tar a ana lise do programa. vamos d 1-

vidi-Io em q bloeos principalS,

1) BIDeD de deflni!;iio de SPRITEs lin h a i n I cia 1- qO

I i n h a 1inal- 130

91

2) 810co da tela Inlclal

I In h a I n I c I a I - 150 lin h a fin a 1- 280

3) 810co do j090

linha l n t c t a l> 300 Iinha fln81- 470

4) 81 ceo de VBr If i ca~iiD d a s gar r afas linha l n t c t a l> 490

Iinha flnal- 800

Os tres prlmairos blocos sao bastante simples e p a s s a r amo s a d a s c r e v a= l n s suel ntamente a s e s o : r. Quanto ao quarto bloeo. discutlremos um poueo mals detalhadamente seu funeionamento. E ele. na verdade. a parte complaxa do p r o s r ama , e S8 voce consegulr a n t a n d fi-e l e . t e r a uma val i o s a chave para eria~ilo de muitos outros programasl

o bloeo de definl~ilo de SPRITEs gera tres SPRITEs: um para as garrafas. Dutro para a bola e, a ultimo. v az I o.

Os codlgos do 'SPRITE das garrafas Hstilo armazanados em hexadecimal na I Inha 130. a as do SPRITE da bola na I inha 120.

o SPRITE vazio e uma sequencia de 8 codigos O.

o trloco da tala inicial apresenta as mensagens, a pista e as garrafas no Infcio do jogo. Note que para cada garrafa silo Impressos um SPRITE branco (I inhas 230 e 260) e um ~rrculo preto (I inhas 240 e 2701. A forma como Isso e feito'nilo e multo Importante agora, Voce mesmo. com um pouco de paclincla. ter~ condi~6e5 de entender.

Mals Importante ~ notar ~ue as SPRITEs das garrafas sao Impressos em fun~aD das variaveis X e Y. A sequencia de posic6es geradas e dada na tabela a segulr e 1 lustrada na flgura 12,2. Observe que as coordenadas de um SPRITE r e t e r em=s e . na v e r d e d e . ao s e u canto super lor es-

querdo! {

X=68

e '---Y=64

f19. 12.2 'e

'~ '@

@ '®

e '® '@

'e .@ '0

'® '@ 'tg)

.~

'@

92

TABELA 12.1
X Y GAMAOA
20 40 1
20 120 2
20 56 3
~?0 104 4
;'~0 72 5
20 88 6
3b 48 7
::16 il. ~! 8
:36 64 9
36 96 10
:36 80 11
"") 56 1 C)
..j(;" c_
~:;~,~ 104 13
sa 7;.~ 14
~)~! 81:1 15
68 64 1b
68 <16 17
60 80 18
1:\4 72 19
134 88 20
1,00 80 21 Vamos. agora. ao bloco do logo.

Sua parte principal e um t a c o FOR ... NEXT. r e e e+ t I do 6 v e z a s . uma par a c a d a bol a I e n c a d a . Ii. I I nn a 300 a n re o l a c o . A t t nn a 310 sortela a e o s l cji o vertical em que'cada bola surglra no t a d n dlrelto da tela. As duas Iinhas seguinfes. 320 e 330, apresentam. na tela. a n~mero da bola Que fo i t a n c a d e . As t i nhas 3~0 8 350 apresentam n s e o n t o s do jogador.

A linha 360 l n l c l a 0 l a c o que f a z a bola Ir s e deslocando para a e5Querda.

A I Inha 370 imprlme a bola na tela. Observe que a sua posicio depende das vari'veis X e Y.

A I inha 380 aelona os desvlos produzidos pela linha 390.

Essa I Inha (390), desvla 0 programa para a rotina da I Inha 490 sempre que a bola atlnglr alguma raf a. Se nao ex I st I sse a I n s t r u c s o SPR I TE ON na II nha a 390 nio funcldnarlal

As quatro I Inhas segulntes permitem que a bola seja deslocada para cima e para baixo at raves das setas 6

e ~ enQuanto ela estlver antes da Iinha limite.

A I inha 440. faeha os lacos abertos para as bolas e seus movimentos.

Flnalmente. as I inhas 450 e 460 apresentam a p n n t u a cji o f ina I do j ogador e a Ii nh a 470 parmi te 0 rei nreio do jogO mediante 0 pressionamento da barra de espa~05.

5ubgar- 380.

93

Ghagamos. por flm. ill sub-rotina que constltul 0 bloeo de verlflca~io das garrafas.

Quando a bola atlnge uma garrafa, 0 programa deve apage-Ia da tela. 0 problema este em determlnar em qual eamada esta a garrafa atlnglda, pols isso e assenclal para apaga-Ia.

Exlstem •. l n I c t a l me n t a . 21 garrafas no video. cada uma em uma camada (de 1 a 21).

A rotlna a partir da I inha 490 verifica a garrafa atlngida atraves da posi~io da bola na tela.

Vejamos como isso e feito.

Quando a bola atlnge alguma garrafa. ocorre uma sobreposl~ao de SPRITEs e a I inha 390 desvla 0 programa para a I I nh a 490. Essa I I nha "des I i ga" 0 desv i 0 p r o du z i do pela I inha 390. gera um -beep" e Incrementa a pontua~io do j e s a nn r . Sa a I ns t r uc sc SPR I TE OFF fosse e I Imi nada da I inha 490. 0 desvlo produzldo pela Iinha 390 nio serla d8S1 igado 8 0 programa flcaria indeflnldamente "parado" asslm que alguma garrafa 105se atinglda pela bola. Experimente ellmlnar a l n s t r u c ao SPRITE OFF para compreender melhor porque ela ~ essenclal.

logo depols. na I inha 500. verlflca-sB se a garra1a mals ill dlrelta da tela foi atinglda. Essa garrafa esta na camada 21 e suas coordenadas SiD X=100 e Y=80. Se a coordenada X da bola for malor ou Igual a 100, certamente a garrafa atlngida fol a da camada 21 (veja a fig. 12.2J.

Gaso a coordenada X da bola seja manor Que 100~ alguma outra garra1a foi ~tlngida e a programa val para a Ilnha530.

Se a coordanada X da bola for maior ou Igual a 84. slgnifica que a garrafa atingida fol a da camada 19 ou da camada 20. Nesse caso. a decisio e felta com base na coordenada Y da bola. 5e Y e menor que 80. a garrafa atinglda e a da camada 19, 8 se Y for malor ou Igual a 80. a garrafa ~ a da camada 20.

Sa a coordenada X da bola for menor que 84. a p r o s r arna e d e s v t a d o para a I inlla 570. pols a garrafa atinglda 101 alguma outra.

Assim.o programa prossegue na sub-rotina. aV8- rlguandO garrafa por garrafa, ate achar a que fol atlnglda. Entao retorna ~ rotina principal.

Essa versijo do BOllGHE necesslta de todas essas I Inhas porqua usa SPRITEs. Um afeita mals modesto e obtldo com 0 programa a sagulr que uti I iza a tela de baixa re50- lu~iio.

10 ' B 0 L I C HEll 20 COLOR 15,6,6:SCREEN3

30 OPEN"GRP:"FOROUTPUTASMl

40 PRESET(24,0):PRINTM1,"BOLICHE":PT=0 50 LINE(0,30)-(255,3S).1,BF

94

60 LINE(0,12B)-(255,133),l,BF 70 FOR K=0 TO S:X=K*16+20

80 FOR Y=40+B*KT080STEP16:PSET(X,Y) 90 IF Y()80 THEN PSET(X,160-Y)

100 NEXT Y.K

110 FOR 9=1 TO 11:AX=320001*RNOt-TIME) 120 LINE(10,150)-(90,191),6,BF

130 PRESET(10,150)IPRINT"1,S

140 LINE(140,lS0)-(2S0,191),6,BF 150 PRESET(140,150);PRINTM1,PT 160 Y=36+4*INT(RNO(AX>*20)

170 FOR X=2SS TO 0 9TEP-4

180 IF POINT(X.Y>=15 THEN PT=PT+l 190 FORF=IT05:NEXTF

200 PSET(X,Y),1;PRESET(X+4,J) 210 T=STICK(0):J=Y

~20 IFT=5THENY=Y+4=IFY)124THENY=124 230 IFT=ITHENY=Y-4:IFY(36THENY=36' 240 NEXT X,S

250 LINE(140,150)-(2S0,191).6~BF 260 PRE9ET(140,lS0);PRINTM1,PT

270 IF STRIG(0)=0 THEN 270 ELSE RUN

Muitas altera~DSS podsm ser feitas no programa que usa SPRITEs a flm de melhors-Io. Uma delas pods ser a substitul~io do -beep- da tlnha 490 peto barutho de choque caracterlstlco do bol Iche. Dutra altera~io serla a op~io de mats de urn l c s a uur . com a l n o l c a c s o do recorde 0 d o s nomos. Espa~o na tela he de sobra para Issol

Com urn pouco de Imaglna~aa. voce mesmo pode Implementar seu programa!

95

96

INSTRUC6ES

Neste JOgo. vDci gula uma mlnhoca multo famlnta que preclsa comer vltamlnas para poder contlnuar viva.

A cada vltamina que' devorada. a mlnhoca aumenta suas energlas e. em consequ@ncla. cresce um pouco.

5e a mlnhoca nio comer as vitaminas. ela acaha morrendo de desnutrl~io. E ~ por lsso que a mlnhoca nunca para de andar. sampre ~ procura das praclosas vltamlnas que estio espalhadas pelo camlnho.

Voci deve 9uli-la de manalra a fazer com qua ala v, ao aneontto de qualquer uma das quatro vltamlnas que foram colocadas aleatorlamente na tela.

,Sa e minhoca morder a 51 me5ma OU a uma des quetro parades laterals. morre 0 0 jogo termlna. Culdado ao 9ul'-lal Ela 56 pode comer vltamlnas e deve fazer 1550 0 mals r~pido possrvel. A cada passo dado. urn poueo de anergia , consumlda e a mlnhoca pods morror do fomel

Para 9 u I a r a· min hoc a use as s e t as q u eo 5 t ion a parte Inferior ~ dlrelta no teclado. Aclonando slmultaneamante duas teclas voce pode gula-Ia tamb'm nas dlre~5es diagonals.

Na par t e I nfer I or n a t e I a voce vara uma Ii nha que indica quanto a mlnhoca tern de energla. Inicialmante ela val do canto asquerda aD dlraito. Com a perda da energla ela dimlnui da dlrelta para a esquerda.

Simultanea~ente ao movlmento da mlnhoca. urn alarma 50noro ~ regularmente emltldo. lndlcando atrav~9 da frequencla a quantidade de energla. Quanta mal5 8gudo. menDs energla a mlnhoca possul.

Quanto mals vitamlnas forem abocanhadas. mals

tempo a minhoca permanecerll viva e mals tempo voci'flca jllgandll.

No final dll jogo. , apresentada a quantldade de vltamlnas Que a mlnhoca comeu e Qual a RECORD at' eQuele

momentll.

Se voc~ consegulr bater 0 RECORD. ouvlrll uma m6- sica em sua homenagem. pois conseguiu fazer a minhoea comer ma!s vltamlnas do qua nlngu'ml 80a sortel

OIGITAC~O

Para I n t r e e u z t ro j ago ml n n o ca . amb o r a a I a saj a bastante slmplas. ~ nacesslirlo urn pouea de aten~ijo a eUidado. prlnelpalmenta nas I Inhas de 19BO at6 2150, onde as careeteres ostia juntos a a laltura II urn pouca dlfleultada.

Para come~ar a dlgltar. comande AUTO 1000 (e tacla RETURN). Asslm 0 E~pert val nume r an d o as l l nh a s aut nma t l c ame n t e . slmpllflcandomulto a t r an a l b o ,

Uma tilt I c a I nta Ii gente para uma boa dig I ta~.1io II Ir conferindo eada I Inhe dlgltada antas de teclar RETURN. AS5Im. ao termlnar uma I inha. conflra-a a corrlja 05 eventuals arros deteetados. Com iSso, eVitam-sa dasagradllvels surpresas ao e~ecutar 0 programa.

Apbs termlnar a dlglta~io. conv6m gravar e programa em fita 58 voc@ pretende usll-Io posterlormenta .. 01- glte e comando CSAVE"mlnhoc", prepare 0 gravador a eeman-

de RETURN .

Ouando aparaeer a "Ok" na tela. rode a programa e comeca a jogar.

~~ 1
,: :1.000 --------------------
::t
~ $} ! .1.0:1.0 .JOGO MINHOCA
~ ~ :1. 0~~~ 0
l: @; i 1030 RUBENS DEZ / 05
~ I
! 104,,) --_._----------------
I i :l.0~i0 CLEAR 3000
.$ I
! 1060 DEFINT A-Z
! 1.070 MA - 1O
$ 108O SCREEN 1,O,0
~ 1.090 WIDTH 32
I
~ @ :I.:I~ 00 COI ... ()I~ 15,1,1
~ :1.110 CLS
t. .1.1 ;,.~ ~ I(EY OFF
l @ :1.1 ]0 LOCATE 7,1,O
~ 1140 PRINT "») MINHOCA ({(H
~:: e U.~:;0 LOCATE 0.4
;~
98 I $
:j
~
I @
¢~
,I
~ @
~
~ ~
~
.~
I @
~ ®
~
~
~
~ @
~
~
~
~ t.~
~ $:
,
.~
.::
.~ ®
~
~ $
I
~l~
~
i $'
~ $
~
~ ~
:~
~ ®
~.
~
~, 1160 PRINT "Voce deve guiar uma minhoca

1170 PRINT "maneira a faze-la comer 0 m

. "

alor

1180 PRINT "numero possivelde vitamina

u s.

1190 LOCATE 0,9

1200 PRINT "A cada vitamina que e comid

C\, a "

1210 PRINT "minhoca cresce urn pouco." 1;_:!~:0 LOCATE 0,13

1230 PRINT "Para guiar a minhoca,ut iliz

1240 PRINT "sstas do lade direito do te

cI a d o "

12~:i0 LOCATE 5,22

1260 PRINT "TECLE GUALGUER TECLA "; 1270 IF INKEY$ () "" THEN GOTO 1270 1280 X$ = INPUT$(i)

1;;_~90 7

1.300 ' 1'·01: ina principal 13H~ 7

13;20 (lOU(JB :l.5B0 1330 INTERVAL OFF 1340 SOUND 7,255

1350 FOR I = 1 TO 500 j 36'~ NEXT I

i~17" SCREEN j.

1380 LOCATE 5,5

1390 PRINT "Voce comeu H; 1400 PRINT VT;" vitaminas" 1410 LOCATE 5,El

1420 PRINT "0 record e "; 1430 PRINT MA

:1.440 IF VT ) MA THEN MA. = VT 1450 IFMA ) VT THEN (lOTO 1250 141.>0 LOCATE 0,:1.3

1470 PRINT "PARABENS !! BATEU 0 RECORD

I! 1 u

:I. 400 X'f,::::"T 1 ~i0L4"

99

Você também pode gostar