Revista MSX Micro 04
1986
Programas: Duplicador, Bilot, Guie o Balão
Jogos: Funky Mouse, Lazy Jones, Galaga.
Errata
O programa Aprendendo a Somar publicado em MSX Micro número 3, saiu com alguns erros.
Duplicador
Artigo Orignal: MSX Micro, Digitação: Wilson Pilon
O armazenamento de dados no MSX pode ser feito por 2 comandos distintos: SAVE e CSAVE, e pela instrução PRINT #1.
O comando SAVE transfere um programa BASIC carregado na memória do computador para um dispositivio, seja gravador ou disco, e salvando o programa em ASCII. A leitura poderá ser feita através dos comandos LOAD ou MERGE. Alguns tipos de acesso têm que ser em formato ASCII e programas gravados em ASCII podem ser lidos como Arquivos de Dados BASIC ou Arquivos Texto.
A instrução PRINT # escreve dados em um arquivo sequencial. O arquivo deve ser aberto através do comando OPEN e no modo OUTPUT.
O comando CSAVE salva um arquivo de programa BASIC em cassete, no formato binário (comprimido) e só pode ser utilizado com gravador, sendo que a leitura será feita através do comando CLOAD.
Este utilitário copia um arquivo que foi criado em ASCII por um comando PRINT #1 existente no BASIC, ou então no próprio programa que foi salvo com SAVE (não CSAVE). O novo arquivo será idêntico ao original.
Para isso o arquivo original precisa ser menor ou igual a 1000 registros.
O duplicador lhe dará também o número de registros lidos, além de você poder copiar o arquivo ou programa em cassete, ou em cassete e impressora ao mesmo tempo. A cada registro ou bloco carregado, o Duplicador o exibirá na tela para sua verificação. Em caso de erro de leitura, o programa lhe dirá se foi proveniente de periférico, arquivo muito longo ou registro muito longo.
Variáveis Principais
Referência de Listagem
Listagem | Arquivo |
---|---|
Listagem Única | duplica.bas |
Listagem
1 ' **** **** 2 ' **** Duplicador **** 3 ' **** **** 4 CLS:SCREEN0' * * MSX 4 * * 5 KEYOFF:WIDTH 40:CLEAR 17000:DIM A$(1000) 6 ON ERROR GOTO 54 7 PRINT TAB(13);"Duplicador" 8 PRINT TAB(13);"----------" 9 PRINT" Este programa tem como funcao copi-":PRINT"ar um arquivo criado pelo comando":PRINT"print#n ou o proprio programa BASIC" 10 PRINT"que tenha sido salvo com SAVE (nao CSAVE)":PRINT 11 PRINT" O novo arquivo tera formato identicoao original":PRINT 12 PRINT" O arqiuvo original precisa ser <= 1000 registros.":PRINT 13 GOSUB 62 14 PRINT" Coloque a fina no gravador, ajuste ovolume e press. <PLAY>" 15 OPEN F$ FOR INPUT AS#1 16 PRINT"Tecle 'C' - le fita original" 17 IF INKEY$<> "" THEN 17 18 I$=INKEY$ 19 IF I$="" THEN 18 20 IF I$="C" OR I$="c" THEN CLS:GOTO 21 ELSE GOTO 16 21 X=X+1:LINE INPUT#1,A$(X) 22 PRINTA$(X) 23 IF EOF(1)=0 THEN 21 24 FOR I=1 TO 2000:NEXT I 25 CLS 26 PRINT:PRINT"****** EOF ******":PRINT"Registros lidos= ";X+1;" do ";F$:PRINT 27 CLOSE#1 28 GOSUB 66 29 PRINT" Mude p/ uma fita virgem, ajuste o volume e prepare p/ gravar." 30 PRINT:PRINT" Tecle 'P' - p/ impressora enquanto a fita e copiada.":PRINT 31 PRINT" Tecle 'C' - p/ copiar somente." 32 IF INKEY$ <> "" THEN 32 33 I$=INKEY$ 34 IF I$="" THEN 33 35 IF I$="P" OR I$="p" THEN SW=1:GOTO 37 36 IF I$="C" OR I$="c" THEN 37 ELSE GOTO 30 37 OPEN F$ FOR OUTPUT AS#1 38 FOR I=1 TO X 39 PRINT#1,A$(I) 40 IF SW>0 THEN LPRINT A$(I) 41 NEXT I 42 PRINT:PRINT"Transferencia completa" 43 CLOSE#1 44 PRINT"Registros copiados - ";I;" do ";F$ 45 PRINT"Tecle 'Q' - sai do programa." 46 PRINT"Tecle 'C' - p/ copiar outra fita" 47 IF INKEY$<>"" THEN 47 48 I$=INKEY$ 49 IF I$ = "" THEN 48 50 IF I$ = "C" OR I$ = "c" THEN SW=0:GOTO 1 51 IF I$="Q" OR I$="q" THEN 52 ELSE 45 52 CLS:PRINT"-- Parada Normal do Programa --" 53 STOP 54 PRINT"!!!!!!!!!!!!!!!!!!!!!!!" 55 IF ERR=19 THEN PRINT"Erro E/S" 56 IF ERR=7 THEN PRINT "Insuficiencia de Memoria":PRINT"* Arquivo provavelmente muito largo" 57 IF ERR=15 THEN PRINT"String muito longa" 58 PRINT"Linha ";ERL;" erro ";ERR 59 PRINT"Nao sera possivel a copia por este pro-grama" 60 CLOSE#1:PRINT 61 RESUME 45 62 F$="cas:" 63 PRINT" Entre com nome do original (<= 6 ca-racteres).";:INPUT"Se nao houver nome, entao <RETURN>";I$ 64 F$=F$+MID$(I$,1,6) 65 RETURN 66 F$="cas:":I$="" 67 PRINT"Entre nome da BACKUP (<= 6 caracteres).":INPUT"Apos isto, press. <RETURN>";I$:PRINT 68 IF I$="" THEN PRINT"A BACKUP precisa ter nome!":GOTO 67 69 F$=F$+MID$(I$,1,6) 70 RETURN
Bilot
Artigo Original: MSX Micro, Digitação: Wilson Pilon
Bilot é um show de gráficos aplicado em conhecidos jogos e u m dos raros exemplos de software ambivalente. Isto é, tanto pode ser considerado como um aplicativo ou um game, tudo dependendo de como e onde for empregado.
Escrito em BASIC claro e nítido, sem o esoterismo de POKEs e PEEKs, ele demonstra como usar a maioria das instruções gráficas da linha MSX. Dividido em dois jogos que são selecionados a partir do menu principal, traz, ainda, a novidade do item de demonstração, para que possa ser usado na vitrine de uma loja ou em uma casa lotérica.
O primeiro jogo é o Bingo de clube que extrai em ordem aleatória consecutivamente cem números (0 a 99) e, como o próprio nome indica, pode substituir com vantagem a tradicional roleta de bola, já que espalhando-se TVs pelo salão do clube todos os participantes poderão tomar conhecimento do sorteio sem a necessidade do alto-falante e de constantes verificações dos que pensaram ter ganho. O segundo jogo do programa é ideal para donos de casas lotéricas colocarem à disposição dos apostadores em potencial, incentivando-os a jogar. Com o Loto, o apostador seleciona o número de aposta que deseja visualizar num gráfico quase que idêntico ao próprio cartão de apostas. Prestem atenção especial na ilusão de ótica gerada pelo girar da roleta esférica, na sub-rotina que em BASIC consegue selecionar em tempo hábil cem números aleatórios sem nenhuma repetição e, na maneira pela qual os números que aparecem na cartela da Loto foram desenhados com o uso da instrução DRAW.
Uma última observação: Para voltar ao menu principal, tecle [CTRL]+[STOP] em qualquer uma das quatro funções.
Referência de Listagem
Listagem | Arquivo |
---|---|
Listagem Única | bilot.bas |
Listagem
60 REM por J.Canali 70 CLEAR 2000:OPEN "grp:"AS#1 80 STOP ON 90 DIM Y%(110),CO%(110),LI%(100):CLS:KEY OFF:COLOR 15,1,1:R=RND(-TIME) 100 ON STOP GOSUB 1860 110 SCREEN0:LOCATE16,12:PRINT"Aguarde";SPC(32);" ":GOSUB 1250:CLS 120 LOCATE 7,5:PRINT " ",,,TAB(15)"Loto",,,TAB(7)" " 130 PRINT ,,TAB(10)"1-Bingo de Clube",,,TAB(10)"2-Cartela de Loto",,,TAB(10)"3-Demonstrando",,,TAB(10)"4-Fim de Programa",,,TAB(7)" Escolha " 140 FOR I=5 TO 18:LOCATE 5,I:PRINT " ":LOCATE 30,I:PRINT " ":NEXT I 150 E$=INKEY$ 160 IF VAL(E$)<1 OR VAL(E$)>4 THEN 150 170 IF E$="3" THEN DD=1 ELSE DD=0 180 ON VAL(E$) GOTO 200,1320,200,1850 190 REM Boca no Virar 200 DATA 0,3,15,31,60,120,112,112,112,112,120,56,31,15,7,0,0,96,240,248,60,28,14,14,14,14,14,28,248,240,224,0 210 SCREEN0 220 REM 1 Parte do Bocal pra Baixo 230 DATA 128,192,255,255,255,255,255,127 240 REM 2 Parte do Bocal par Baixo 250 DATA 1,3,255,255,255,255,255,254 260 REM Haste do Bocal pra Baixo 270 DATA 0,0,252,240,224,0,0,0 280 REM 1 Parte do Bocal pra Cima 290 DATA 127,255,255,255,255,255,192,128 300 REM 2 Parte do Bocal pra Cima 310 DATA 254,255,255,255,255,255,3,1 320 REM Haste do Bocal pra Cima 330 DATA 0,0,0,224,240,252,0,0 340 REM Bolinha 350 DATA 60,126,255,255,255,126,60,0 360 SCREEN2,2:RESTORE 200 370 FOR I=1 TO 32 380 READ D: S$=S$+CHR$(D):PRINTCHR$(D); 390 NEXT I 400 SPRITE$(1)=S$ 410 S$="" 420 FOR A=2 TO 8 430 FOR B=1 TO 8 440 READ D: S$=S$+CHR$(D) 450 NEXT B: SPRITE$(A)=S$ 460 S$="":NEXT A 470 CIRCLE (128,52),31,10 480 FOR I=1 TO 23:READ C,L:CIRCLE(C,L),2,15:NEXT I 490 DATA 107,70,149,70,128,62,128,81,111,69,115,72,120,68,125,64,132,64,140,66,145,68,128,67,128,72,124,71,132,70,114,76,119,78,124,77,129,76,133,78,140,72,138,76,144,73 500 LINE (103,34)-(153,34),10:LINE (97,52)-(159,52),11:LINE (103,70)-(153,70),10 510 LINE (103,33)-(103,71),11:LINE (108,28)-(108,76),10:LINE (113,24)-(113,80),11 520 LINE (118,22)-(118,82),10:LINE (123,21)-(123,82),11:LINE(128,21)-(128,83),10:LINE(133,21)-(133,82),11:LINE(138,22)-(138,82),10 530 LINE(143,24)-(143,80),11:LINE(148,28)-(148,76),10:LINE(153,33)-(153,71),11 540 PSET (86,106) 550 DRAW "c11u5r5u65l2u2r5d2l2d16r3d1l3d48r72u48l3u1r3u16l2u2r5d2l2d65rd5l84" 560 LINE(86,107)-(170,107),12:PAINT(128,105),11 570 LINE(0,111)-(86,107),12:LINE(170,107)-(255,111),12:LINE(255,111)-(0,111),12:PAINT(128,110),12 580 FOR I=111TO191STEP8:LINE(0,I)-(110,I),12:LINE(145,I)-(255,I),12:NEXTI 590 FORI=0TO110STEP22:LINE(I,111)-(I,191),12:NEXTI 600 FORI=145TO255STEP22:LINE(I,111)-(I,191),12:NEXT 610 PAINT(128,191),12:LINE(110,112)-(145,112),1 620 PUTSPRITE2,(122,82),10,2:PUTSPRITE3,(126,82),15,3:PUTSPRITE4,(134,82),10,4 630 PRESET(47,0):PRINT#1,"Aperte qualquer tecla" 640 LINE (110,111)-(110,191),12:LINE(145,111)-(145,191),12 650 IF DD=1 THEN 670 660 IF INKEY$="" THEN 660 670 GOSUB 1220 680 IF SO%=100 THEN GOSUB 1860 690 RESTORE 490:SL%=82 700 PUTSPRITE2,(0,209):PUTSPRITE3,(0,209):PUTSPRITE4,(0,209) 710 FOR MO=1 TO 4 720 SL%=SL%-16:C1%=C1%+2:C2%=C2%-2 730 PUTSPRITE1,(120,SL%),11,1 740 IF MO=2 THEN PUTSPRITE1,(121,43):CIRCLE(128,52),21,10:CIRCLE(128,52),11,10 750 IF MO=2 THEN CIRCLE(128,52),21,1:CIRCLE(128,52),11,1 760 CIRCLE(128,52),31,15 770 CIRCLE(128,52),31,10 780 NEXT MO 790 PUTSPRITE1,(0,209) 800 PUTSPRITE5,(122,13),10,5:PUTSPRITE6,(126,13),15,6:PUTSPRITE7,(134,13),10,7 810 CIRCLE(128,52),31,11 820 PUTSPRITE5,(0,209):PUTSPRITE6,(0,209):PUTSPRITE7,(0,209) 830 FOR DE=1TO54 STEP 13 840 CIRCLE(128,52),31,15 850 PUTSPRITE1,(120,SL%+DE),10,1 860 IF DE=27 THEN CIRCLE(128,52),21,11:CIRCLE(128,52),11,10:CIRCLE(128,52),21,1:CIRCLE(128,52),11,1 870 CIRCLE(128,52),31,10 880 NEXT DE 890 PUTSPRITE1,(0,209):PUTSPRITE2,(122,82):PUTSPRITE3,(126,82):PUTSPRITE4,(134,82) 900 LINE(103,71)-(103,33),10:LINE(108,76)-(108,28),11:LINE(113,80)-(113,24),10:LINE(118,82)-(118,22),11:LINE(123,82)-(123,21),10 910 LINE(128,83)-(128,21),11:LINE(133,82)-(133,21),10:LINE(138,82)-(138,22),11:LINE(143,80)-(143,24),10:LINE(148,76)-(148,28),11:LINE(153,71)-(153,33),10 920 LINE (103,34)-(153,34),10:LINE (159,52)-(97,52),11:LINE (103,70)-(153,70),10 930 GOSUB 1230 940 IF DD=1 THEN 960 950 IF INKEY$="" THEN 950 960 PUTSPRITE 4,(134,81):FORT=1TO150:NEXTT:PUTSPRITE4,(134,82) 970 FOR BA=1 TO 11:PUTSPRITE8,(124,82+BA):FORT=1TO20:NEXTT:NEXTBA:GOSUB1240 980 PUTSPRITE8,(124,88):FORT=1TO110:NEXTT:PUTSPRITE8,(124,100):GOSUB1240:FORT=1TO110:NEXTT 990 PUTSPRITE8,(124,94):FORT=1TO110:NEXTT:PUTSPRITE8,(124,105):GOSUB1240:FORT=1TO110:NEXTT 1000 PUTSPRITE8,(124,95):FORT=1TO110:NEXTT:FOR I=109TO183:PUTSPRITE8,(124,I):FORT=1TO5:NEXTT:NEXTI:GOSUB1240 1010 FORI=183TO151STEP-1:PUTSPRITE8,(124,I):FORT=1TO5:NEXTT:NEXTI:PUTSPRITE8,(0,209) 1020 PRESET(114,136),12:COLOR12:PRINT#1,CHR$(1);CHR$(219);CHR$(219);CHR$(219):SO%=SO%+1:OS%=OS%+1:COLOR15 1030 IF Y%(SO%)=0 THEN 1060 1040 IF Y%(SO%)<10 THEN 1070 1050 PRESET(114,136),12:PRINT #1,Y%(SO%):GOTO1080 1060 PRESET(122,136),12:PRINT#1,"00":GOTO 1080 1070 PRESET(122,136),12:PRINT#1,"0":PRESET(122,136),12:PRINT#1,Y%(SO%) 1080 CIRCLE(128,140),10 1090 C$=STR$(Y%(SO%)) 1100 IF Y%(SO%)<=10 THEN 1170 1110 L%=VAL(MID$(C$,2,1))*8+112 1120 IF VAL(MID$(C$,3,1))>=6 THEN W%=40 ELSE W%=0 1130 C%=VAL(MID$(C$,3,1))*21+W%-21 1140 IF MID$(C$,3,1)="0" THEN L%=L%-8:C%=232 1150 IF DD=1 AND OS%>=6 THEN OS%=0:GOTO 1320 1160 BEEP:PRESET(C%,L%),0:PRINT#1,Y%(SO%):GOTO 640 1170 IF Y%(SO%)=10 THEN :BEEP:PRESET(233,112),0:PRINT#1,Y%(SO%):GOTO 640 1180 IF VAL(C$)>=6 THEN W%=41 ELSE W%=0 1190 L%=112:C%=VAL(C$)*21+W%-14 1200 IF Y%(SO%)=0 THEN C%=236:L%=184 1210 BEEP:PRESET(C%,L%),0:PRINT#1,CHR$(48):PRESET(C%,L%):PRINT#1,C$:GOTO640 1220 FOR I=0TO13:SOUNDI,30:NEXTI:RETURN 1230 FOR I=0TO13:SOUNDI,0:NEXTI:RETURN 1240 FOR I=0TO6:SOUNDI,18:NEXTI:FORJ=6TO13:SOUNDJ,16:NEXTJ:RETURN 1250 A$="000102030405060708091011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798999" 1260 I%=INT(RND(1)*LEN(A$)+1) 1270 IF INT(I%/2)=I%/2 THEN I%=I%-1 1280 V%=V%+1:Y%(V%)=VAL(MID$(A$,I%,2)) 1290 C$=MID$(A$,1,I%-1):D$=MID$(A$,I%+2,ABS(LEN(A$)-LEN(C$)-2)):A$=C$+D$ 1300 IF DD=1 AND V%=100 THEN V%=0:SO%=0:GOTO 200 1310 IF V%=100 THEN V%=0:SO%=0:RETURN ELSE 1260 1320 SCREEN 3 1330 FOR I=0 TO 191 STEP 16:COLOR 10:PSET(80,I),1:PRINT#1,"Loto":COLOR1:PSET(80,I),1:PRINT#1,"Loto":NEXTI 1340 PSET(50,95):COLOR 4:PRINT#1,"Loto":FORT=1TO1000:NEXTT:COLOR 15,1,1 1350 IF DD=1 THEN 1410 1360 SCREEN0:LOCATE3,5:PRINT" Use: ",,,TAB(9)"Teclas do Cursor",,,TAB(2)"Direita & Esquerda n. de apostas" 1370 LOCATE 6,11:PRINT"Para baixo obter dezenas",,,TAB(3)"Para cima preparar novo sorteio",,,TAB(5)"CTRL-STOP voltar para menu" 1380 LOCATE 6,18:PRINT "Pressione qualquer tecla":PRINT" " 1390 IF DD=1 THEN 1410 1400 I$=INKEY$:IF I$="" THEN 1400 1410 SCREEN2:RESTORE 1420 1420 DATA 16,56,124,254,56,56,56,0 1430 FORI=1TO8:READ A:D$=D$+CHR$(A):NEXTI 1440 SPRITE$(10)=D$:D$="" 1450 PSET(59,11),1:DRAW"c6r135d132l135u132":N=0 1460 DW$(1)="r3d4l3u4":RESTORE 1530:FOR J=2TO10:READ A$:DW$(J)=A$:NEXTJ 1470 FOR L=14 TO 131 STEP 13:RESTORE 1530 1480 FOR C=64 TO 183 STEP 13:BEEP 1490 LINE(C,L)-(C+10,L+8),6,BF:G%=G%+1:CO%(G%)=C:LI%(G%)=L 1500 READ A$:PSET(C+6,L+1),6:DRAW"c1"+A$ 1510 NEXT C:GOTO1540 1520 NEXT L 1530 DATA bd2e2d4l2r3,r3d2l3d2r3,r3d2l2r2d2l3,d2r3u2d4,r4l4d2r3d2l3,r3l3d2r3d2l3u3,d1u1r3d4,r3d2l3d2r3u2l3u2,r3d4u2l3u2,r3d4l3u4 1540 N%=N%+1 1550 FOR J=63 TO 170 STEP 13 1560 PSET(J+1,L+1),6:DRAW"c1"+DW$(N%):BEEP:NEXT J 1570 IF L=131 THEN PSET(J+1,L+1),6:DRAW"c1"+DW$(1):GOTO 1600 1580 PSET(J+1,L+1),6:DRAW "c1"+DW$(N%+1) 1590 GOTO 1520 1600 PSET(59,150),1:DRAW"c6r135d40l135u40bd13r135d13l135r23u13r22d13r23u13r22d13r23u13" 1610 PSET(113,153),1:PRINT#1,"Loto":PSET(68,166),1:PRINT#1,"5 6":PSET(113,166),1:PRINT#1,"7 8" 1620 PSET (158,166),1:PRINT#1,"9":PSET(178,166),1:PRINT#1,"10" 1630 PSET(104,163),6:DRAW"u13r45d13":PAINT(82,162),6:PAINT(170,162),6 1640 IF DD=1 THEN PUTSPRITE10,(93,176),11,10:F%=6:GOTO 1790 1650 X%=66:BEEP:PUTSPRITE10,(X%,176),11,10 1660 S=STICK(0) 1670 IF S=0 THEN 1660 1680 IF S=7 AND X%>=66 THEN X%=X%-1 1690 IF S=3 AND X%<=177 THEN X%=X%+1 1700 IF S=5 THEN 1730 1710 IF S=1 THEN G%=0:N%=0:GOTO 1470 1720 PUTSPRITE10,(X%,176):GOTO 1660 1730 IF X%<=82 THEN F%=5 1740 IF X%>82 AND X%<=104 THEN F%=6 1750 IF X%>104 AND X%<=127 THEN F%=7 1760 IF X%>127 AND X%<=149 THEN F%=8 1770 IF X%>149 AND X%<=172 THEN F%=9 1780 IF X%>172 THEN F%=10 1790 FOR I=1TOF%:M%=INT(RND(1)*100)+1:LINE(CO%(M%),LI%(M%))-(CO%(M%)+10,LI%(M%)+7),1,BF:PSET(CO%(M%),LI%(M%)),1:DRAW "c10r10d7l10u7":BEEP:NEXT I 1800 IF DD=1 THEN G%=0:N%=0:FORT=1TO5000:NEXTT:PUTSPRITE10,(93,209):GOTO 1870 1810 S=STICK(0):IF S=1 THEN BEEP:G%=0:N%=0:GOTO 1470 1820 IF S=7 OR S=3 THEN 1720 1830 IF S=5 THEN 1790 1840 GOTO 1810 1850 CLS:END 1860 BEEP:G%=0:N%=0:V%=0:SO%=0:DD=0:E$="":RETURN 110 1870 IF SO%<90 THEN 200 ELSE SO%=0:GOTO 1250
Guie o Balão
Artigo Original: MSX Micro, Digitação: Wilson Pilon
Você está em apuros, seu balão está com uma fenda e é preciso fazer uma longa viagem. Você possui 3 vidas para completar 3 telas. Para ultrapassar cada espaço é necessário guiar o balão sem tocar em nenhum dos obstáculos espalhados pelo caminho. Jogue usando o joystick ou teclado. Para joystick tecle "J" e "C" para começar. Para teclado, tecle somente "C", boa viagem!
O program é auto-explicativo, com todas as instruções. Após o OK, teclar F5 e escolher no menu a asua opção.
OBS: O [CAPS LOCK] precisa estar ligado antes de se iniciar o programa.
Referência de Listagem
Listagem | Arquivo |
---|---|
Listagem Única | balao.bas |
Listagem
1 REM ******************* 2 REM * * 3 REM * GUIE O * 4 REM * * 5 REM * BALAO * 6 REM * * 7 REM * -MSX- * 8 REM * 3 * 9 REM ******************* 10 COLOR1,15,15:KEYOFF:HI=0:PLAY"o2g#f#bo3c#gd#c#f#d#o2bc#c#f#":Q=0:GOSUB1300:OPEN"grp:"AS#1:N$="M S X" 20 LI=3:S=1:CLS:SC=0 30 SCREEN2,0 40 RESTORE:A$="":FORF=0TO7:READD$:A$=A$+CHR$(VAL("&b"+D$)):NEXTF:SPRITE$(0)=A$ 50 DATA00001000 60 DATA00011100 70 DATA00111110 80 DATA00111110 90 DATA00010100 100 DATA00010100 110 DATA00011100 120 DATA00011100 130 REM* Tela * 140 TIME=0 150 CLS 160 GOSUB1910 170 ONSGOSUB380,530,680,830,1140 180 DRAW"bm230,11c1r10d10l10u10f10l10e10" 190 COLOR15:PRESET(10,3):PRINT#1,"Vidas = ";LI:PRESET(10,180):PRINT#1,"Pontos = ";SC 200 REM*Loop Principal* 210 ST=STICK(Q):IFST=0THEN250 220 IFST=1THENY=Y-1:GOTO260 230 IFST=3THENX=X+1:GOTO260 240 IFST=7THENX=X-1:GOTO260 250 Y=Y+1 260 PUTSPRITE0,(X,Y),3 270 IFPOINT(X,Y)=6THENGOTO330 280 IFPOINT(X,Y)=1THENGOTO360 290 X%=X+7:Y%=Y+8 300 IFPOINT(X%,Y%)=6THEN330 310 IFPOINT(X%,Y%)=1THEN360 320 GOTO210 330 LI=LI-1:IFLI<1THEN1710 340 PLAY"o4l5cccd#ddcccc":FORT=1TO100:NEXTT 350 GOTO130 360 IFTIME<3000THENSC=SC+3000-TIME 370 PLAY"o6db":S=S+1:GOTO130 380 REM Tela 1 390 A$="e10f10h5g5" 400 LINE(0,100)-(100,108),6,BF:LINE(111,100)-(250,108),6,BF 410 LINE(111,0)-(119,30),6,BF:LINE(111,43)-(119,100),6,BF 420 DRAW"bm84,70c6xa$;" 430 FORT=30TO200STEP20 440 DRAW"bm=t;,165c6xa$;" 450 NEXTT 460 DRAW"bm70,50c6xa$;" 470 DRAW"bm18,68c6xa$;" 480 DRAW"bm18,60c6xa$;" 490 DRAW"bm220,40c6xa$;":DRAW"bm122,50c6xa$;":DRAW"bm142,40c6xa$;" 500 DRAW"bm165,33c6xa$;" 510 X=150:Y=130 520 RETURN 530 REM Tela 2 540 B$="r10h5g5d10r4u4r2d4r4u10d10l10" 550 FORT=30TO230STEP11 560 DRAW"bm=t;,50c6xb$;" 570 NEXT 580 FORT=10TO220STEP11 590 DRAW"bm=t;,100xb$;" 600 NEXT 610 FORT=30TO230STEP11 620 DRAW"bm=t;,145xb$;" 630 NEXT 640 X=220:Y=160 650 DRAW"bm109,78xb$;":DRAW"bm130,70xb$;":DRAW"bm160,78xb$;" 660 DRAW"bm109,128xb$;":DRAW"bm130,120xb$;":DRAW"bm160,128xb$;" 670 RETURN 680 REM Tela 3 690 LINE(30,50)-(45,190),6,BF 700 DRAW"bm32,25c6xb$;" 710 LINE(60,0)-(75,147),6,BF 720 DRAW"bm62,165xb$;" 730 LINE(90,50)-(105,190),6,BF 740 DRAW"bm92,25xb$;" 750 LINE(120,0)-(135,147),6,BF 760 DRAW"bm122,165xb$;" 770 LINE(150,50)-(165,190),6,BF 780 DRAW"bm152,25xb$;" 790 LINE(200,0)-(230,100),6,BF 800 LINE(200,112)-(215,190),6,BF 810 X=15:Y=150 820 RETURN 830 REM Tela 4 840 LINE(120,0)-(126,60),6,BF 850 X=200:Y=160 860 LINE(120,72)-(126,135),6,BF 870 LINE(120,147)-(126,190),6,BF 880 LINE(0,90)-(70,96),6,BF 890 LINE(80,90)-(250,95),6,BF 900 C$="u10r12u5r3d15l15" 910 DRAW"bm90,62xc$;" 920 DRAW"bm97,75xc$;" 930 DRAW"bm78,82xc$;" 940 DRAW"bm73,57xc$;" 950 DRAW"bm200,140xa$;" 960 DRAW"bm185,130xa$;" 970 DRAW"bm157,140xa$;" 980 DRAW"bm215,135xa$;" 990 DRAW"bm132,151xa$;" 1000 FORT=20TO115STEP11 1010 DRAW"bm=t;,156xb$;" 1020 NEXT 1030 DRAW"bm82,105xb$;" 1040 DRAW"bm60,105xb$;" 1050 DRAW"bm73,105xb$;" 1060 D$="u30r10d30l10u26br3r3d3l3u3bd5r3d3l3u3bd5r3d3l3u3bd5r3d3l3u3bd5r3d3l3u3" 1070 DRAW"bm220,78xd$;" 1080 DRAW"bm205,46xd$;" 1090 DRAW"bm136,45xd$;" 1100 DRAW"bm136,87xd$;" 1110 DRAW"bm157,67xd$;" 1120 DRAW"bm188,82xd$;" 1130 RETURN 1140 REM Fim do Jogo 1145 REM Volta p/ inicio 1150 SCREEN0:COLOR1 1160 CLS 1170 PRINT" Parabens, balonista ! Voce " 1180 PRINT 1190 PRINT" Completou todas as telas !" 1200 PRINT" 1210 PRINT" Seus pontos foram:" 1220 PRINT 1230 PRINT" ";SC 1240 PRINT 1250 PRINT" Press. Espaco ou Tiro" 1260 PRINT 1270 PRINT" Para a proxima jornada" 1280 S=1:IFSTRING(Q)THENSCREEN2,0:GOTO40 1290 GOTO1280 1300 COLOR1:CLS 1310 PRINT" Guie o Balao":PRINT 1320 PRINT:PRINT:PRINT:PRINT:PRINT 1330 PRINT" " 1340 PRINT 1350 K$=" 'D' p/ ver telas " 1360 X$="Guie o Balao ...........'C' p/ comecar ........'J' p/ joystick ........'I' para instrucoes." 1370 COLOR1:J$=K$+X$ 1380 FORT=1TOLEN(J$) 1390 LOCATE4,15:PRINTTAB(2);MID$(J$,T,18) 1400 LOCATE4,15:FORK=1TO100:NEXT 1410 A$=INKEY$:IFA$=""THENNEXT 1420 IFA$="C"THENRETURN 1430 IFA$="J"THENQ=1 1440 IFA$="I"THEN1470 1450 IFA$="D"THEN1960 1460 GOTO1380 1470 CLS 1480 PRINT" Guie o Balao " 1490 PRINT 1500 PRINT" Seu balao esta furado e voce " 1510 PRINT" Precisa viajar atraves de" 1520 PRINT" quatro telas de suspense" 1530 PRINT" para continuar no ar." 1540 PRINT 1550 PRINT" Para completar a tela voce " 1560 PRINT" precisa pousar na cruz" 1570 PRINT" negra no topo direito " 1580 PRINT" da tela":PRINT 1590 PRINT" Tocando em qualquer coisa" 1600 PRINT" resulta na perda de uma " 1610 PRINT" vida.":PRINT 1620 PRINT" Cuidado ! O balao inicia " 1630 PRINT" caindo quando a tela " 1640 PRINT" e desenhada.":PRINT 1650 PRINT" Boa Sorte !" 1660 PRINT 1670 PRINT" -Press. Espaco-" 1680 A$=INKEY$:IFA$=""THEN1680 1690 IFA$<>""THEN1680 1700 CLS:GOTO1380 1710 COLOR1:SCREEN0 1720 CLS:PRINT" Voce bateu mas seus pontos sao :" 1730 PRINT:PRINT 1740 PRINT" ";SC 1750 IFSC>HITHENGOSUB1850 1760 PRINT:PRINT 1770 PRINT" O record agora e: " 1780 PRINT:PRINT 1790 PRINT" ";HI 1800 PRINT:PRINT" Por:- ";N$ 1810 PRINT:PRINT" Press. 'C' p/ jogar novamente" 1820 A$=INKEY$:IFA$=""THEN1820 1830 IFA$="C"ORA$="c"THENGOTO20 1840 GOTO1820 1850 PRINT" Um novo recorde !":PRINT 1860 PRINT"Digite seu nome ":PRINT 1870 LINEINPUTN$ 1880 IFLEN(N$)>15THENPRINT:PRINT"Muito longo ":GOTO1860 1890 HI=SC 1900 RETURN 1910 LINE(0,0)-(250,10),6,BF 1920 LINE(0,0)-(10,190),6,BF 1930 LINE(250,0)-(240,190),6,BF 1940 LINE(0,190)-(250,180),6,BF 1950 RETURN 1960 SCREEN2,0:CLS:D=1 1970 ONDGOSUB380,530,680,830 1980 IFD=5THENFORT=1TO1000:NEXT:CLS:SCREEN0:GOTO1380 1990 GOSUB1910:D=D+1:FORT=1TO1000:NEXT:CLS:GOTO1970
Games
Funky Mouse
Nota 4
Você é um homem ou um rato? Não adianta tentar responder, já que neste jogo você será um ratinho muito ligeiro que terá de driblar gatos para poder alimentar-se e saborear seu queijo predileto. Além dos adversários felinos, ainda terá o tempo contra você já que quanto menos tempo levar, mais pontos faz (bônus). O jogo é composto de duas telas básicas: uma casa azul com escadas e uma verde, ladrilhada, com tubulações contendo escadas. A estratégia consiste na memorização dos locais onde se encontram os pedaços de queijo em cada fase e, o melhor trajeto para pegar todos, sem gastar muito tempo. Lembre-se também, que em cada fase os queijos não se encontram no mesmo local.
Funky Mouse requer muita agilidade, pois, tudo acontece muito em cima, mas, existe a possibilidade do ratinho pular, livrando-se dos vidros de veneno e imobilizando os gatos. Para imobilizar os famintos felinos, basta cair em cima da cabeça deles, que ficará rosa na mesma hora. Você também encontrará uma armadilha, que poderá ser usada par prender os gatos, mas, não perca muito tempo com isso já que você não o terá suficiente para dedicar-se à caça aos gatos.
O gráfico deste jogo é simples, mas bem estruturado e, o som também é simples - não chegando a chtear - valendo mesmo pela sua ação. Acredito que o jogo deve ter sido criado visando o público infantil, com o objetivo de estimular a memorização e os reflexos, mas, mesmo assim, não deixa de ser uma aquisição interessante para sua coleção de games.
Nota 5
Este jogo se passa em um hotel com 18 quartos distribuídos em três andares com diferentes níveis de dificuldade. O interessante, no caso, é que este game se passa dentro de outro, que é o que você está jogando.
A história começa com um boneco, obedecendo a seu comando, que joga um videogame, sendo que através dele é que você vai penetrar nos diferentes quartos, subir ou descer de elevador e, até mesmo entrar num banheiro para fazer pipi. A cada porta aberta, as dificuldades aparecem na tela e o boneco some durante algum tempo, passando-se a enfrentar os obstáculos diretamente.
Este game pode ser controlado por joystick ou teclado, apresentando além disso, uma novidade: o boneco pode ter de uma a nove vidas, sendo você que escolhe o número que mais lhe convier. Este é mais um bom jogo para a linha MSX e, vale a pena tê-lo em casa.
DICA: Para subir ou descer do elevador, basta se posicionar em frente à porta e pressionar a barra de espaço. Boa sorte!
Nota 5
Este deverá estar entre os cinco melhores da coleção de todos que gostam de jogos de ação, habilidade e reflexos rápidos. Galaga é um jogo que se torna gradativamente rápido, difícil e implacável, sendo baseado num tema que já inspirou famosos jogos de ação: o homem contra alienígenas, principalmente mutantes como moscas, répteis, etc..
Conheça suas variações, sendo promovido a cada estágio e, só tomando cuidado para não se deixar destruir e não ser capturado no momento errado. O gráfico é ótimo, não seguindo à risca seu original no fliperama, o que não quer dizer que haja alguma perda significante em termos de qualidade, particularmente porque o som é idêntico e muito bom também.
Referência de Listagem
Listagem | Arquivo |
---|---|
Funky Mouse | funkymou.bas |
Lazy Jones | l-jones.bas |
Galaga | galaga.bas |
Nenhum comentário:
Postar um comentário