Escolar Documentos
Profissional Documentos
Cultura Documentos
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