Revista MSX Micro 01
Dezembro de 1985
Programas: Programas: Gráfico de Barras, Banco de Dados, Senha, Controle do Gravador e Piano
Jogos: Decathlon, Lode Runner, Frogger, Pac Man, Beamrider, Tennis, Pitfall, H.E.R.O., Keystone Kapers
Gráfico de Barras
Artigo Original: Randolfo S.Julião, Revisão: Wilson Pilon
Os gráficos estão se tornando um recurso essencial nos programas profissionais, por possibilitam organizar os dados de forma que se possa visualizá-los e compará-los entre si mais facilmente.
O programa abaixo, que na realidade é uma sub-rotina para utilização em diversos programas, plota um gráfico comparativo de duas grandezas correntes nos doze meses do ano. O gráfico é feito em alta resolução, em prespectiva e duas cores diferentes, o que o torna altamente profissional.
O Programa
As linhas 1 a 120 foram colocadas para possibilitar a visualização do funcionamento do gráfico. A sub-rotina gráfica que poderá ser usada nos seus programas começa na linha 6000 e termina em 60001.
Primeiramente a rotina ajusta a cor do fundo para preta (contrastando com as barras gráficas), e habilita a tela gráfica para escrita através do comando OPEN, isto porque o vídeo no MSX é tratado como um dispositivo de saída. Logo após o programa desvia-se para a linha 6800 que imprime os títulos, a base do gráfico, a marcação e a legenda. A seguir, será atribuída à variável P o tamanho do maior valor de crédito e/ou débito, atendendo a função de determinar a escala e seu ajuste. Explicando melhor: A altura máxima de uma barra qualquer do gráfico é de 100 pontos (posição 160 a 60), por exemplo, para plotar os valores 1000, 800, 700, 670, o primeiro será convertido em 100, 800 pares 80 e assim por diante, sempre baseado no maior valor(tamanho) do crédito e/ou débnito, como se pode ver no quadro 1. Por outro lado se um dos valores de crédito ou débito for igual a 2000 haverá então um ajuste na escala (linhas 6030 e 6040). Isto ocorree pois não seria possível plotar o valor 2000 na escala anterior. Este ajuste faz a variável CH ficar igual a 1. Isto fará com que o programa use somente as rotinas de plotagem nas linhas que a condicao CH=1 seja verdadeira. Estas linhas fazem com que o dígito a menos de cada crédito e débito seja considerado na confecção da barra. Compare o quadro 1 com o quadro 2 e note que o no primeiro quadro, quando o valor é igual a 670, o K é igual a 67 e no segundo, por causa do 2000 há o ajuste para a direita. (K=6)
Resumindo, quando CH é igual a 1 a escala é aumentada. Observe que a variável K é às vezes do tamanho da barra.
A linha 6600 testa uma condição(que propositalmente nunca é verdadeira) para voltar da sub-rotina (HC<>666). HC é uma variável que não existe no programa, portanto é igual a zero. Para Usar esta sub-rotina, você deverá substituir o 'HC <> 666' por 'INKEY$=""' para que haja o retorno principal ao se pressionar qualquer tecla.
A perspectiva do gráfico é construída nas linhas 50000 e 50001 para crédito e nas linhas 60000 e 60001 para débito. Se você ainda trocá-las por 50000 RETURN e 60000 RETURN você terá um gráfico comum sem perspectiva.
O programa tem uma lógica simples o que torna a plotagem do gráfico quase instantânea. Entretanto devido ao fato da estrutura de montagem da barra se basear nos 5 primeiros dígitos do valor, adquiridos através de funções strings, o gráfico não plotará nenhuma barra se todos os valores forem menor que 100, pois não é possível acessar o terceiro dígito. Além disso o gráfico poderá apresentar alguma distorção no caso de existirem valores excessivamente discrepantes.
Quadro 1: CH=0, P=4, ESCALA=100
Valores | Cálculo de K |
---|---|
10 0 0 | K=10 * 10 + 0 |
8 0 0 | K=10 * 8 + 0 |
7 0 0 | K=10 * 7 + 0 |
6 7 0 | K=10 * 6 + 7 |
Quadro 2
Valores | Cálculo de K |
---|---|
2 0 0 | K=10 * 2 + 0 |
1 0 0 | K=10 * 1 + 0 |
8 0 | K=10 * 0 + 8 |
7 0 | K=10 * 0 + 7 |
6 70 | K=10 * 0 + 6 |
Referência de Listagem
Listagem | Arquivo |
---|---|
Listagem Única | grafbar.bas |
Listagem
1 REM ************************ 2 REM * GRAFICO DE BARRAS * 3 REM * * 4 REM * M S X * 5 REM * * 6 REM * RANDOLFO S. JULIAO * 7 REM * * 8 REM * SETEMBRO 1985 * 9 REM ************************ 10 COLOR 3,1 11 FOR I=1 TO5: KEYI, " ": NEXT I 30 DIM R#(12) 35 DIM T#(12) 40 FOR M=1 TO 12 50 CLS 60 PRINT"*****************************" 70 PRINT 80 PRINT"=====> MES: "M: PRINT: PRIN T 90 INPUT"ENTRE COM A RECEITA: "; R#(M) 100 PRINT:PRINT 110 INPUT"ENTRE COM A DESPESA: "; T#(M) 120 NEXT M 6000 COLOR 3,1,1: SCREEN 2: OPEN"GRP:"FO R OUTPUT AS #1: HC=0: GOSUB 6800: CH=0: P=0: FOR J=1 TO 12: IF(LEN(STR$(R#(J)))- 1) > P THEN P=LEN(STR$(R#(J)))-1 6010 IF LEN(STR$(T#(J)))-1 > P THEN P =LEN(STR$(T#(J)))-1 6020 NEXTJ: IF P<3 THEN6600 6030 FOR J=1 TO 12: D=LEN(STR$(R#(J)))-1 : IF D=P AND VAL(MID$(STR$(R#(J)),2,2)) > 10 THEN CH=1 6040 IF (LEN(STR$(T#(J)))-1) = P AND VAL (MID$(STR$(T#(J)),2,2)) > 10 THEN CH = 1 6045 NEXT J 6050 FOR J=1 TO 12 6300 IF CH=1 AND LEN(STR$(R#(J)))-1<P -1 THEN GOTO 6400 6360 IF CH=0 AND LEN(STR$(R#(J)))-1<P -2 THEN GOTO 6400 6370 IF CH=0 AND P=LEN(STR$(R#(J)))-1 TH EN K=VAL(MID$(STR$(R#(J)),2,2)): K=K*10: K=K+VAL(MID$(STR$(R#(J)),4,1)): LINE(34 +(J-1)*16,160)-(34+(J-1)*16+5,160-K),7,B F: GOSUB 50000 6380 IF CH=0 AND P-1=LEN(STR$(R#(J))) - 1 THEN K=VAL (MID$ (STR$ (R#(J)),2,1)):K =K*10:K=K+VAL(MID$(STR$(R#(J)),3,1)):LIN E (34 + (J-1)*16,160)-(34+(J-1)*16+5,160 -K),7,BF:GOSUB 50000 6385 IF CH=0 AND P-2=LEN(STR$(R#(J))) -1 THEN K=10:K=K+VAL (MID$ (STR$ (R#(J)),3 ,1)):LINE (34 + (J-1) * 16 , 160)-(34 + (J-1)*16+5,160-K),7,BF:GOSUB50000 6390 IF CH=1 AND P=LEN (STR$(R#(J)))-1 T HEN K=VAL(MID$(STR$(R#(J)),2,1)):K=K*10: K=K+VAL (MID$(STR$(R#(J)),3,1)):LINE(34+ (J-1)*16,160)-(34+(J-1)*16+5,160-K),7,BF :GOSUB 50000 6395 IF CH=1 AND P<> LEN(STR$(R#(J )))-1 THEN K=VAL (MID$(STR$(R#(J)),2,1)) :LINE(34+(J-1)*16,160)-(34+(J-1)*16+5,16 0-K),7,BF:GOSUB50000 6400 IF CH=1 AND LEN(STR$(T#(J)))-1 < P-1 THEN GOTO 6500 6420 IF CH=0 AND LEN(STR$(T#(J)))-1 < P-2 THEN GOTO 6500 6430 IF CH=0 AND P=LEN(STR$(T#(J)))-1 TH EN K=VAL(MID$(STR$(T#(J)),2,2)): K=K*10: K=K+VAL(MID$(STR$(T#(J)),4,1)): LINE(40 +(J-1)*16,160)-(40+(J-1)*16+5,160-K),8,B F: GOSUB 60000 6440 IF CH=0 AND P-1=LEN(STR$(T#(J)))-1 THEN K=VAL(MID$(STR$(T#(J)),2,1)): K=K*1 0: K=K+VAL(MID$(STR$(T#(J)),3,1)): LINE( 40+(J-1)*16,160)-(40+(J-1)*16+5,160-K),8 ,BF: GOSUB 60000 6450 IF CH=0 AND P-2=LEN(STR$(T#(J)))-1 THEN K=10: K=K+VAL(MID$(STR$(T#(J)),3,1) ): LINE(40+(J-1)*16,160)-(40+(J-1)*16+5, 160-K),8,BF: GOSUB 60000 6460 IF CH=1 AND P=LEN(STR$(T#(J)))-1 TH EN K=VAL(MID$(STR$(T#(J)),2,1)):K=K*10:K =K+VAL(MID$(STR$(T#(J)),3,1)):LINE (40+( J-1)*16,160)-(40+(J-1)*16+5,160-K),8,BF: GOSUB 60000 6470 IF CH=1 AND P<>LEN(STR$(T#(J) ))-1 THEN K=VAL(MID$(STR$(T#(J)),2,1)): LINE(40+(J-1)*16,160)-(40+(J-1)*16+4,160 -K),8,BF: GOSUB 60000 6500 NEXT J: PRESET(160,24),1: PRINT#1," 1";STRING$(P-2+CH,"0"); 6600 IF HC<>666 THEN GOTO 6600 ELS E CLOSE: SCREEN0: RETURN 6800 T=10: X=0: COLOR2: PRESET(60,12),4: PRINT#1,"Grafico de barras": PRESET(60, 24),4: PRINT#1,"Escala:1 por ": FOR D=60 TO 160 STEP 10: PRESET (2+X,D-6): PRINT #1,STR$(T): T=T-1: X=8: NEXT D: LINE(24, 60)-(24,160),4: LINE(24,161)-(250,161),4 6801 LINE(48,180)-(55,188),7,BF: PRESET( 58,182): PRINT#1,"CREDITO": LINE(144,180 )-(151,188),8,BF: PRESET(154,182): PRINT #1,"DEBITO" 6810 X=0: FOR J=1 TO 9: PRESET(34+(J-1)* 16,164),1: A$=RIGHT$(STR$(J),1): PRESET( 34+(J-1)*16+4,164),1: PRINT#1,A$: NEXT J : PRESET(34+9*16,164),1: PRINT#1,"1": PR ESET(16*9+34+6,164),1: PRINT#1,"0": PRES ET(34+10*16,164),1: PRINT#1,"1" 6811 PRESET(34+10*16+6,164),1 6812 PRINT#1,"1": PRESET(11*16+34,164),1 : PRINT#1,"1": PRESET(11*16+34+6,164),1: PRINT#1,"2": RETURN 50000 D=34+(J-1)*16: K=160-K: D=D+4: LIN E(D-4,K-1)-(D-1,K-7),7: LINE(D+1,K)-(D+5 ,K-7),7: LINE(D-1,K-7)-(D+5,K-7),7: LINE (D+5,K-7)-(D+5,160),7 50001 RETURN 60000 D=34+(J-1)*16: K=160-K: D=D+10: LI NE(D-4,K-1)-(D-1,K-7),7: LINE(D+1,K)-(D+ 5,K-7),7: LINE(D-1,K-7)-(D+5,K-7),7: LIN E(D+5,K-7)-(D+5,160),7 60001 RETURN
Programa Banco de Dados
Artigo Original: Luiz C. Duffles, Revisão: Wilson Pilon
Devido à necessidade que se tem de arquivar diversos tipos de materia, os programas de Bancos de Dados aparecem como uma ferramenta de grande auxílio. São uma forma segura e rápida de armazenar uma gama enorme de dados, que normalmente seria colocados em uma gaveta em forma de fichário. Com Banco de Dados o esquema é diferente. Basta buscar a ficha pelo campo que for conveniente, sem contar com outras vantagens como ordenação do arquivo.
Logo que começa a rodar, o programa pergunta se existe um arquivo de dados gravado em fita cassete. Se não houver, digite 'PRIMEIRA'. Depois aparecerá o menu com as opções:
Programa Banco de Dados
- Inicializar Banco de Dados
- Inclusão
- Busca, Cancelamento e Alteração
- Ordenação do arquivo
- Listagem do arquivo
- Gravação do arquivo
Iniciar Banco de dados
Usando esta opção, todas as variáveis serão inicializadas. Portanto, tenha cuidado ao utilizá-la.
Inclusão
Na inclusão você poderá dar entrada a todos os campos com a possibilidade de fazer inclusões consecutivas sem voltar ao Menu.
Busca, Cancelamento e Alteração
A busca poderá ser feita por qualquer um dos campos. Você poderá cancelar toda ficha ou alterar cada uma das opções.
Ordenação do Arquivo
Num arquivo contendo muitos registros ele poderá demorar um pouco, pois você terá a oportunidade de escolher o campo que desejar. Por isso também haverá uma busca para saber qual o campo que será ordenado.
Listagem do Arquivo
Será apresentado o registro número 1, a partir daí você poderá avançar até o registro desejado e utilizar as opções de cancelar e alterar o registro.
Gravação do Arquivo
Esta opção grava sometne o arquivo em fita cassete.
Obs: Programa bugado!
Referência de Listagem
Listagem | Arquivo |
---|---|
Listagem Única | bancodad.bas |
Listagem
1 REM ************************* 2 REM ** ** 3 REM ** BANCO DE DADOS ** 4 REM ** ** 5 REM ** LUIZ C. DUFFLES ** 6 REM ** ** 7 REM ** M S X ** 8 REM ** ** 9 REM ** AGOSTO DE 1985 ** 10 REM** ** 11 REM************************* 20 CLEAR20000 25 DIM ND$(150) : DIM NE$(150) : DIM NF$ (150) : DIM NG$(150) : DIM NH$(150) : DI M NB$(150) : DIM NC$(150) 27 LD$="ARQ" 30 CLS : LOCATE 0,10:PRINT"SE JA' HOUVER UM ARQUIVO PRESSIONE <ENTER>, CASO CONTRARIO DIGITE 'PRIMEIRA ' E PRESSIONE <ENTER>" : GOSUB 500 : IF R$ <> "PRIMEIRA" THEN GOSUB 8000 50 GOTO 1000 500 R$="" : INPUT R$ : RETURN 1000 CLS:LOCATE 12,0:PRINT"BANCO DE DADO S" :PRINT: PRINT" OPCOES" :PRINT : PRINT " 1- INICIALIZAR BANCO DE DADOS" : PRINT " 2- INCLUSAO" : PRINT" 3- BUSCA, CANCEL AMENTO E ALTERACAO" : PRINT " 4- ORDENAC AO DO ARQUIVO" 1002 PRINT " 5- LISTAGEM DO ARQUIVO" : PRINT" 6- GRAVACAO DO ARQUIVO EM FITA" : PRINT 1005 GOSUB 500 1010 ON VAL (R$) GOSUB 2000,3000,4000,50 00,7000,9000 1050 GOTO 1000 2000 REM INICIALIZACAO 2005 CLS : PRINT "CONFIRMA INICIALIZACAO (S/N)?": GOSUB 500 : IF R$ = "N" THEN R ETURN 2011 CLS :LOCATE 10,8: PRINT "INICIALIZ ANDO O ARQUIVO" 2013 FOR K = 1 TO 150 : ND$(K) = "" : NE $(K) = "" : NF$(K) = "" : NG$(K) = "" : NH$(K) = "" : NEXT K : I=0 2015 CP$(1) = "NOME" 2020 CP$(2) = "ENDERECO" 2030 CP$(3) = "BAIRRO" 2040 CP$(4) = "CIDADE" 2045 CP$(5) = "ESTADO" 2046 CP$(6) = "CEP" 2047 CP$(7) = "TELEFONE" 2050 RETURN 3000 CLS : PRINT"CONFIRMA INCLUSAO?" : GOSUB 500 : IF R$ <> "S" THEN RETU RN 3010 IF I < 150 THEN I=I+1 3015 K=I 3020 GOSUB 3090 : GOSUB 3700 : GOSUB 38 00 : GOSUB 3900 : GOSUB 3950 : GOSUB 310 0 : GOSUB 3200 3025 CLS : PRINT "DESEJA OUTRA ENTRADA ( S/N)?" : GOSUB 500 : IF R$ = "S" THEN 30 10 3030 GOSUB 3500 3035 RETURN 3090 CLS : PRINT"QUAL O "; CP$(1) : GOSU B 500 : ND$(K)=R$ 3092 R$ = "" : RETURN 3100 CLS : PRINT "QUAL O ";CP$(6) : GOSU B 500 : NB$(K) = R$ 3110 R$ = "" : RETURN 3200 CLS : PRINT "QUAL O ";CP$(7) : GOSU B 500 : NC$ = R$ 3210 R$ = "" : RETURN 3500 CLS:LOCATE 15,0:PRINT"ficha : ";K:P RINT: PRINT CP$(1), ND$(K) 3510 PRINT : PRINT CP$(2), NE$(K) 3520 PRINT : PRINT CP$(3), NF$(K) 3530 PRINT : PRINT CP$(4), NG$(K) 3535 PRINT : PRINT CP$(5) , NH$(K) 3536 PRINT : PRINT CP$(6),NB$(K) 3538 PRINT : PRINT CP$(7),NC$(K) 3540 PRINT : PRINT : PRINT "(1-7) ALTE RACAO - C/ CANCELAR - F/FIM - A/AVANCAR - V/VOLTAR" 3550 GOSUB 500 3560 IF R$ = "F" THEN RETURN 3570 IF R$ = "C" THEN GOSUB 11000 3580 IF R$ = "1" THEN GOSUB 3090 3590 IF R$ = "2" THEN GOSUB 3700 3600 IF R$ = "3" THEN GOSUB 3800 3610 IF R$ = "4" THEN GOSUB 3900 3615 IF R$ = "5" THEN GOSUB 3950 3616 IF R$ = "6" THEN GOSUB 3100 3618 IF R$ = "7" THEN GOSUB 3200 3620 IF R$ = "A" THEN GOSUB 10500 3623 IF R$ = "V" THEN GOSUB 10600 3625 GOTO 3500 3700 CLS : PRINT "QUAL O "; CP$(2) : GOS UB 500 : NE$=R$ 3705 R$ = "" : RETURN 3800 CLS : PRINT "QUAL O "; CP$(3) : GOS UB 500 : NE$(K)=R$ 3805 R$ = "" : RETURN 3900 CLS : PRINT "QUAL O "; CP$(4) : GOS UB 500 : NG$(K) = R$ 3905 R$ = "" : RETURN 3950 CLS : PRINT "QUAL O "; CP$(5) : GOS UB 500 : NH$=R$ 3960 R$ = "" : RETURN 4000 REM busca 4010 CLS : PRINT "DESEJA FAZER BUSCA POR QUE CAMPO ?" : GOSUB 500 : FOR K = 1 TO 7 : IF R$ = CP$(K) THEN 4015ELSE NEXT K 4012 CLS:PRINT"CAMPO NAO DEFINIDO. PRESS . <ENTER> P/ CONTINUAR":GOSUB 500:RETURN 4015 CLS : PRINT "QUAL O ITEM PROCURADO ?" : GOSUB 500 4020 IF K=1 THEN 4100 4022 IF K=2 THEN 4200 4024 IF K=3 THEN 4300 4030 IF K=4 THEN 4400 4032 IF K=5 THEN 4500 4040 IF K=6 THEN 4600 4050 IF K=7 THEN 4700 4100 FOR K=1 TO I : IF R$=ND$(K) THEN GO SUB 3500 4120 NEXT K : RETURN 4200 FOR K=1 TO I : IF R$=NE$(K) THEN GO SUB 3500 4220 NEXT K : RETURN 4300 FOR K=1 TO I : IF R$=NG$(K) THEN GO SUB 3500 4420 NEXT K : RETURN 4500 FOR K=1 TO I : IF R$ = NH$(K) THEN GOSUB 3500 4510 NEXT K : RETURN 4600 FOR K=1 TO I : IF R$=NB$(K) THEN GO SUB 3500 4610 NEXT K : RETURN 4700 FOR K=1 TO I : IF R$=NC$(K) THEN GO SBU 3500 4710 NEXT K : RETURN 5000 REM ordenacao 5010 CLS : PRINT "DESEJA ORDENACAO POR Q UE CAMPO ?" : GOSUB 500 5015 FOR K = 1 TO 7 : IF R$ = CP$(K) THE N 5100 ELSE NEXT K 5020 PRINT "ESTE CAMPO NAO ESTA DEFINIDO " : FOR R = 1 TO 500 : NEXT R : GOTO 501 0 5100 CLS : PRINT "ORDENACAO POR ";CP$(K) 5200 FOR J=1 TO I-1 5210 FOR R=J+1 TO I 5220 GOSUB 10000 5230 NEXT R 5240 NEXT J 5250 RETURN 5500 REM TROCA GERAL 5510 T$=ND$(R) : ND$(R)=ND$(J) : ND$(J)= T$ 5520 T$=NE$(R) : NE$(R)=NE$(J) : NE$(J)= T$ 5530 T$=NF$(R) : NF$(R)=NF$(J) : NF$(J)= T$ 5540 T$=NG$(R) : NG$(R)=NG$(J) : NG$(J)= T$ 5545 T$=NH$(R) : NH$(R)=NH$(J) : NH$(J)= T$ 5547 T$ = NB$(R) : NB$(R) = NB$(J) : NB$ (J) = T$ 5548 T$ = NC$(R) : NC$(R) = NC$(J) : NC$ (J) = T$ 5550 RETURN 7000 REM LISTAGEM 7010 K = 1 : GOSUB 3500 7050 RETURN 8000 LEITURA 8010 CLS : PRINT"PREPARE O GRAVADOR E PR ESS. <ENTER>" : PRINT "OU PRESS. & lt;C> E <ENTER> P/ DESISTIR": G OSUB 500 : IF R$ <>"" THEN RETURN 8015 OPEN "CAS:ld$" FOR INPUT AS1 8030 INPUT #1,I 8031 FOR R=1 TO 7 8032 INPUT #1,CP$(R) 8037 NEXTR 8040 FOR R = 1 TO I 8051 INPUT#1,ND$(R) 8052 INPUT#1,NE$(R) 8053 INPUT#1,NF$(R) 8054 INPUT#1,NG$(R) 8055 INPUT#1,NH$(R) 8056 INPUT#1,NB$(R) 8057 INPUT#1,NC$(R) 8060 NEXT R 8070 RETURN 9000 REM GRAVACAO 9010 CLS : PRINT"PREPARE O GRAVADOR E PR ESS. <ENTER>" : PRINT "OU PRESS. & lt;C> E <ENTER> P/ DESISTIR" : GOSUB 500 : IF R$ <>"" THEN RETURN 9015 OPEN "CAS:ld$" FOR OUTPUT AS1 9030 PRINT #1,I 9031 FOR R=1 TO 7 9032 PRINT #1,CP$(R) 9037 NEXTR 9040 FOR R = 1 TO I 9051 PRINT#1,ND$(R) 9052 PRINT#1,NE$(R) 9053 PRINT#1,NF$(R) 9054 PRINT#1,NG$(R) 9055 PRINT#1,NH$(R) 9056 PRINT#1,NB$(R) 9057 PRINT#1,NC$(R) 9060 NEXT R 9070 RETURN 10000 IF K=1 AND ND$(J) > ND$(R) THEN GOSUB 5500 10010 IF K=2 AND NE$(J) > NE$(R) THEN GOSUB 5500 10020 IF K=3 AND NF$(J) > NF$(R) THEN GOSUB 5500 10040 IF K=5 AND NH$(J) > NH$(R) THEN GOSUB 5500 10042 IF K=6 AND NB$(J) > NB$(R) THEN GOSUB 5500 10044 IF K=7 AND NC$(J) > NC$(R) THEN GOSUB 5500 10050 RETURN 10500 IF K > = I THEN RETURN 10510 K = K + 1 10520 RETURN 10600 IF K = 1 THEN RETURN 10610 K = K - 1 10620 RETURN 11000 REM CANCELAMENTO 11005 IF I = 0 THEN RETURN 11010 FOR B = K + 1 TO I 11020 ND$(B-1) = ND$(B) : NE$(B-1) = NE$ (B) : NF$(B-1) = NF$(B) : NG$(B-1) = NG$ (B) : NH$(B-1) = NH$(B) : NB$(B-1) = NB$ (B) : NC$(B-1) = NC$(B) 11030 NEXT B 11035 ND$(I) = "" : NE$(I) = "" : NF$(I) = "" : NG$(I) = "" : NH$(I) = "" : NB$( I) = "" : NC$(I) = "" 11037 I = I - 1 11040 RETURN
Programas Senha
Artigo Original: Marcos da Cunha Barbosa, Digitação: Wilson Pilon
Senha é um jogo bastante conhecido e interessante. Possui variações para a mioria dos microcomputadores existentes, e requer raciocínios lógicos para se descobrir as sequências escolhidas. Além disso ele trabalha com cores, ao contrário da maioria dos outros que usam números, o que o torna visualmente muito interessante.
Na tela aparecerão seis cores. Serão escolhidas quatro para formar a senha, sendo que poderá haver cores repetidas fazendo com que o jogo fique mais instigante.
Deve-se então tentar descobrir as cores e suas combinações usando as setas para movimentar o cursor, o "V" para escolher a cor e o "L" para conhecer o resultado da tentativa. O vermeho indica cor e posiçõa corretas, o branco indica cor correta na posição errada. Tente descobrir a SENHA no menor número de vezes possível, usando o máximo de sua lógica.
Referência de Listagem
Listagem | Arquivo |
---|---|
Listagem Única | senha.bas |
Listagem
10 REM ***************** 20 REM * * 30 REM * S E N H A * 40 REM * * 50 REM * M S X * 60 REM * * 70 REM ***************** 140 COLOR 2,1,1:SCREEN 2 150 REM 160 LINE(160,20)-(240,20) 170 LINE(160,40)-(240,40) 180 LINE(160,60)-(240,60) 190 LINE(160,80)-(240,80) 200 LINE(160,100)-(240,100) 210 LINE(160,120)-(240,120) 220 LINE(160,20)-(240,20) 230 LINE(160,140)-(240,140) 240 LINE(160,160)-(240,160) 250 LINE(160,180)-(240,180) 260 REM 270 LINE(160,20)-(160,180) 280 LINE(240,20)-(240,180) 290 REM 300 OPEN"grp:" FOR OUTPUTAS#1 310 DRAW "bm162,27":PRINT#1,"S E N H A" 320 REM 330 FOR Y=50 TO 170 STEP 20 340 FOR X=170 TO 180 STEP 10 350 CIRCLE(X,Y-5),2 360 CIRCLE(X,Y+5),2 370 NEXT 380 FOR X = 200 TO 230 STEP 10 390 CIRCLE(X,Y),2 400 NEXT X 410 NEXT Y 420 REM 430 DRAW "bm70,0":COLOR9:PRINT#1," S E N H A " 440 DRAW "bm5,26": PRINT #1," ESCOLHA UM A COR " 450 DATA 3,4,7,9,10,13 460 I = 0 470 FOR X = 10 TO 85 STEP 15 480 I = I + 1: READ C: C(I) = C 490 CIRCLE (X,50),2,C: PAINT (X,50),C 500 NEXT X 510 REM 520 DATA 00010000 530 DATA 00010000 540 DATA 00111000 550 DATA 01010100 560 DATA 00010000 570 DATA 00010000 580 DATA 00010000 590 DATA 00010000 600 FOR L = 1 TO 8 610 READ L$: S$ = S$ + CHR$ ( VAL ("&B" + L$ )) 620 NEXT L 630 SPRITE$(1) = S$ 640 REM 650 FOR I = 1 TO 4 660 T(I) = C ( INT ( RND ( - TIME ) * 6 ) + 1 ) 670 NEXT I 680 Y = 50: CP = 1 690 REM 700 P = STICK(0) 710 IF P = 7 THEN X1 = X1 - 15 720 IF P = 3 THEN X1 = X1 + 15 730 IF X1 < 7 THEN X1 = 7 740 IF X1 > 82 THEN X1 = 82 750 PUTSPRITE1,(X1,53),15 760 I$ = INKEY$ 770 IF I$ = "V" THEN C = POINT(X1+3,50): BEEP : GOTO 810 780 IF I$ = "L" THEN BEEP: BEEP: GOTO 93 0 790 FOR TE = 1 TO 50: NEXT TE 800 GOTO 700 810 P = STICK(0) 820 IF P = 7 THEN X2 = X2 - 10 830 IF P = 3 THEN X2 = X2 + 10 840 IF X2 < 197 THEN X2 = 197 850 IF X2 > 227 THEN X2 = 227 860 PUTSPRITE1,(X2,Y),15 870 I$ = INKEY$ 880 IF I$ = "V" THEN BEEP: GOTO 920 890 IF I$ = "L" THEN BEEP: BEEP: GOTO 93 0 900 FOR TE = 1 TO 50: NEXT TE 910 GOTO 810 920 CIRCLE(X2+3,Y),2,C: PAINT(X2+3,Y),C: GOTO 700 930 REM 940 FOR I = 1 TO 4: N1(I) = 0: N2(I) = 0 : NEXTI 950 N = 0: FOR I = 1 TO 4 960 IF T(I) = POINT(190+I*10,Y) THEN N=N +1: N1(I) = 1: N2(I) = 1 970 NEXT I 980 IF N = 4 THEN 1280 990 B = 0:FOR I = 1 TO 4 1000 FOR J = 1 TO 4 1010 IF N1(I)<>1 AND N2(J)<>1 AND T(I) = POINT(190+J*10,Y) THEN N1(I) = 1: N2(J) = 1: B = B+1 1020 NEXT J 1030 NEXT I 1040 FOR I = 1 TO N: P(I) = 6: NEXT I 1050 FOR I = N + 1 TO N + B: P(I) = 15: NEXT I 1060 IF N + B < 1 THEN 1140 1070 CIRCLE (170,Y-5),2,P(1): PAINT(170, Y-5),P(1) 1080 IF N+B<2 THEN 1140 1090 CIRCLE (180,Y-5),2,P(2): PAINT(180, Y-5),P(2) 1100 IF N+B<3 THEN 1140 1110 CIRCLE(170,Y+5),2,P(3): PAINT(170,Y +5),P(3) 1120 IF N + B < 4 THEN 1140 1130 CIRCLE(180,Y+5),2,P(4): PAINT(180,Y +5),P(4) 1140 Y = Y + 20: CP = CP + 1: IF Y > 170 THEN Y = 50 1150 COLOR 2 1160 FOR X = 170 TO 180 STEP 10 1170 CIRCLE(X,Y-5),2: PAINT(X,Y-5),1 1180 CIRCLE(X,Y-5),2 1190 CIRCLE(X,Y+5),2: PAINT(X,Y+5),1 1200 CIRCLE (X,Y + 5),2 1210 NEXT X 1220 FOR X = 200 TO 230 STEP 10 1230 CIRCLE(X,Y),2:PAINT(X,Y),1 1240 CIRCLE(X,Y),2 1250 NEXT X 1260 GOTO 700 1270 REM 1280 LINE(160,Y - 10) - (240,Y-10),6 1290 LINE(160,Y - 10) - (240,Y-10),6 1300 LINE(240,Y - 10) - (240,Y + 10),6 1310 LINE(240,Y + 10) - (160,Y + 10),6 1320 LINE(160,Y + 10) - (160,Y - 10),6 1330 DRAW "bm10,100": PRINT #1,"VOCE ACE RTOU EM ": DRAW "bM10,112": PRINT #1, CP ;"TENTATIVAS" 1340 REM 1350 COLOR7: DRAW"bm10,130" 1360 DRAW "bm10,142": PRINT #1," QUER RE COMECAR?" 1370 COLOR11: DRAW "bm10,155": PRINT #1, "SE SIM PRESS.": DRAW "bm10,167": PRINT #1,"<ESPACO>" 1380 I$ = INKEY$ 1390 IF I$ = "" THEN 1380 1400 IF I$ = " " THEN BEEP: RUN 1410 BEEP: END
Programa Controle de Gravador
Artigo Orignal: MSX Micro, Digitado por: Wilson Pilon
Apoiado numa estrutura muito simples este programa dá ao usuário a possibilidade de inserir vários programas numa fita cassete e, posteriormente, recuperá-los sem o uso de um contador de fita. Quando o usuário fornecer o nome do programa e o tempo de duração do mesmo, o micro emitirá um beep e desligará o gravador.
Esse utilitário é especialmente interessante nos casos onde o usuário não dispõe de um gravador contador para posicionamento da fita, pois elimina a estafante tarefa de chamar cada programa até localizar o software procurado. Para cronometrar o tempo de carregamento do produto utilize um relógio de pulso, ou mesmo um cronômetro. A marcação do tempo de duração de cada programa pode parecer uma tarefa estafante a princípio, mas compensa plenamente o esforço desprendido para se localizá-lo normalmente.
Referência de Listagem
Listagem | Arquivo |
---|---|
Listagem Única | k7ctrl.bas |
Listagem
1 REM ***************** 2 REM * * 3 REM * CONTROLE * 4 REM * DE * 5 REM * GRAVACAO * 6 REM * * 7 REM * M S X * 8 REM * * 9 REM ***************** 10 REM 40 WIDTH39:CLEAR2000 50 DIM L(1000):DIM N$(100) 60 KEYOFF:CLS:SCREEN0:COLOR15,12 70 LOCATE0,1:PRINT FRE(X);SPC(27);FRE("" ) 80 LOCATE0,2:PRINT"*************** OPCOE S ****************":PRINT"(";R 90 LOCATE0,6:PRINT" 1 Criacao" :PRINT 100 PRINT" 2 Visualiz acao e busca":PRINT 110 PRINT" 3 Modifica cao e ajuste":PRINT 120 PRINT" 4 Carga":P RINT 130 PRINT" 5 Gravacao " 140 LOCATE0,18:INPUT"************* ESCOL HA *************";F 150 IF F<1 OR F>5 THEN 60 160 ON F GOSUB 180,580,250,480,380 169 REM 170 REM * CRIACAO 171 REM 180 CLS:SCREEN 0 190 PRINT:PRINT"* Entre com as seguintes coordenadas:":PRINT 200 INPUT"* Numero de seus programas (<5 8):";R:PRINT:IF R>57OR R=0 THEN 200 210 FOR X=1 TO R 220 PRINT"* Nome do programa numero:";X: INPUT N$(X):PRINT:IF N$(X)="" THEN 220 230 INPUT"* Duracao da busca rapida (em segundos):";L(X):PRINT:IF L(X)=0 THEN 23 0 240 NEXT X:RETURN 60 244 REM 245 REM * MODIFICACAO E AJUSTE 250 IF R=0 THEN 60 256 REM 260 CLS:PRINT"[";R:LOCATE10,1:PRINT"Modi ficacao e ajuste" 270 PRINTTAB(10)"==================" 280 LOCATE0,4:PRINT"* Opcoes: 1 Mod ificacao 2 Ajus te" 290 PRINT:INPUT" Escolha (1-2):";B:IF B= 1 THEN R=R-1:IF B=2 THEN R=R+1 300 PRINT:INPUT"* Numero do programa:";X 310 LOCATE10,11:PRINT"*N.: ";X 320 PRINT" Nome: ";LEFT$ (N$(X),6) 330 PRINT" Segundos: ";L(X) 340 PRINT:PRINT"* Faca sua modificacao e ajuste:":LOCATE10,17:PRINT"N.:";X 350 INPUT" Nome: ";N$(X): IF N$(X)=""THEN350 360 INPUT" Segundos: ";L(X) 370 R=R+1:LOCATE7,21:INPUT"Confirma (SIM /NAO):";V$:IF V$="SIM"THEN 60 ELSE 260 374 REM 376 REM 380 IFR=0 THEN 60 390 LOCATE 0,20:PRINT"* Coloque o gravad or em RECORD/PLAY ate escutar um beep *" :X$=INPUT$(1) 400 PRINT"[";R 410 OPEN"cas:f1" FOR OUTPUT AS#1 420 PRINT #1,R 430 FOR X=1 TO R 440 PRINT #1,N$(X):PRINT #1,L(X) 450 NEXT X 460 CLOSE 470 RETURN 60 475 REM * GRAVACAO 479 REM 480 REM * CARGA 481 REM 490 PRINT : LOCATE0,21:PRINT"* Coloque o gravador em leitura *" 500 OPEN"cas:f1" FOR INPUT AS#1 510 INPUT #1,R 520 FOR X=1TO57 530 IF X=R+1 THEN 560 540 INPUT #1,N$(X):INPUT #1,L(X) 550 NEXT X 560 CLOSE 570 RETURN 60 574 REM 575 REM * VISUALIZACAO E BUSCA 576 REM 580 CLS:COLOR15:IF R=0 THEN 60 590 PRINT "[";R:LOCATE 6,0:PRINT"Visuali zacao dos registros" 600 PRINTTAB(6)"======================== ==":LOCATE0,3 610 FORX=1TO19:PRINT;X;" ";LEFT$(N$(X),6 );" ":NEXT 620 B=3:FORX=20TO38:LOCATE13,B:PRINT;X;" ";LEFT$(N$(X),6);" ":B=B+1:NEXT 630 B=3:FORX=39TO57:LOCATE27,B:PRINT;X;" ";LEFT$(N$(X),6);:B=B+1:NEXT 640 LOCATE0,23:INPUT"* Sua escolha";N:IF N=0 THEN RETURN60 650 CLS:LOCATE14,5:PRINT"Busca":PRINTTAB (14)"=====" 660 PRINT:PRINT"numero: ";N:PRINT"nome: ";LEFT$(N$(N),6):PRINT"segundos: "; L(N) 670 C=50*L(N) 680 LOCATE0,15:PRINT"1) Rebobine o casse te ate ouvir o beep ":X$=INPUT$(1):MOTOR ON 690 LOCATE0,15:PRINT"2) Apoie o gravador ao sinal do beep ":X$=INPUT$(1):MOTOR OFF 700 LOCATE0,15:PRINT"3) Ouca o beep ":X$=INPUT$(1) 710 ON INTERVAL=C GOSUB 770 720 INTERVALON 730 CLS 740 BEEP:MOTOR ON 750 PRINT"> "; 760 GOTO 750 770 MOTOR OFF:BEEP 780 COLOR8:LOCATE 15,11:PRINT" PARE ":FOR I=1TO800:NEXT 790 CLS: COLOR15:LOCATE0,10:PRINT"4) Toq ue o gravador e ouca o beep ":X$=IN PUT$(1) 800 LOCATE2,16:PRINT"cload:";LEFT$(N$(N) ,6):CLOAD 810 END
Programa Piano
Artigo Original: Frederico de Moraes, Revisão: Wilson Pilon
Não se pode deixar de elogiar os recursos musicais do MSX. Por isso ligue o seu equipamento a um amplificador para dessa forma aproveitar ao máximo suas qualidades de som.
Você poderá tocar até oito oitavas que estão programadas nas teclas numéricas, 1=oitava 1, 2=oitava 2, ..., 8=oitava 8.
A duração das notas se situa em: W,X,C,V,B e N. Sendo que 'W' é a mais lenta, e 'N' a mais rápida. Para tocar utilize as teclas Q, S, D, F, G, H, J sendo: Q=Dó, S=Ré, F=Fá, G=Sol, H=Lá e S=Sí. Pode-se também usar os sustenidos e os bemóis da seguinte maneira:
Sustenidos: A=Dó#, Z=Ré#, E=Mí#, R=Fá#, T=Sol#, Y=Lá# e U=Sí#.
Bemóis: I=Dób, O=Réb, P=Míb, K=Fáb, L=Solb, M=Láb e C=Síb.
Além disso, existem três músicas programadas, bastando que se pressione as teclas '9', '0' ou '-'
Referência de Listagem
Listagem | Arquivo |
---|---|
Listagem Única | piano.bas |
Listagem
0 SAVE"piano.bas" 10 REM PIANO 60 CLS 70 COLOR 7,1,1 80 REM ****************** 90 REM * * 100 REM* APRESENTACAO * 110 REM* * 120 REM****************** 130 SCREEN3 140 OPEN"grp:"AS#1 150 PRESET(65,60):PRINT#1,"PIANO" 160 KEY OFF 170 FOR I=1 TO 2000:NEXT I 180 SCREEN0 190 REM O CARACTER '♪' E OBTIDO PR ESSIONANDO 'GRPH' E ']' . E O '♫' PRESSIONANDO 'GRAPH','SHIFT' E ']' 200 LOCATE 12,10:PRINT"♫ P I A N O ♪" 250 PLAY"t255cdecdeefgefggagfecgagfecco3 go4c" 260 FORI=1 TO 2000:COLOR,4:COLOR,2:NEXT 270 COLOR7,1,1:BEEP 280 CLS:LOCATE0,10:INPUT"QUER VER EXPLIC ACOES (S/N) ";R$ 290 IF R$="S" THEN 1620 ELSE 300 300 SCREEN 2 310 REM *********** 320 REM * * 330 REM * TECLADO * 340 REM * * 350 REM *********** 360 LINE(23,120)-(256,192),15,BF 370 LINE(36,120)-(36,192),4 380 LINE(49,120)-(49,192),4 390 LINE(62,120)-(62,192),4 400 LINE(75,120)-(75,192),4 410 LINE(88,120)-(88,192),4 420 LINE(101,120)-(101,192),4 430 LINE(114,120)-(114,192),4 440 LINE(127,120)-(127,192),4 450 LINE(140,120)-(140,192),4 460 LINE(153,120)-(153,192),4 470 LINE(166,120)-(166,192),4 480 LINE(179,120)-(179,192),4 490 LINE(192,120)-(192,192),4 500 LINE(205,120)-(205,192),4 510 LINE(218,120)-(218,192),4 520 LINE(231,120)-(231,192),4 530 LINE(244,120)-(244,192),4 540 LINE(32,120)-(40,160),4,BF 550 LINE(45,120)-(53,160),4,BF 560 LINE(71,120)-(79,160),4,BF 570 LINE(84,120)-(92,160),4,BF 580 LINE(97,120)-(105,160),4,BF 590 LINE(188,120)-(196,160),4,BF 600 LINE(123,120)-(131,160),4,BF 610 LINE(136,120)-(144,160),4,BF 620 LINE(162,120)-(170,160),4,BF 630 LINE(175,120)-(183,160),4,BF 640 LINE(214,120)-(222,160),4,BF 650 LINE(227,120)-(235,160),4,BF 660 LINE(80,0)-(170,13),6,B 670 LINE(23,54)-(256,54),2 680 LINE(23,64)-(256,64),2 690 LINE(23,74)-(256,74),2 700 LINE(23,84)-(256,84),2 710 LINE(23,94)-(256,94),2 720 CIRCLE(33,84),2,7 730 PAINT(33,84),7 740 PRESET(90,4):PRINT#1,"P I A N O" 750 PRESET(105,25):PRINT#1,"M S X" 760 COLOR 1:PRESET(249,135),15:PRINT#1," ♪" 770 PRESET(249,160),15:PRINT#1,"♫" 780 COLOR7:PRESET(67,0):PRINT#1,"♪ " 790 PRESET(180,9):PRINT#1,"♫" 800 A$=INKEY$ 810 REM *********** 820 REM * * 830 REM * NOTAS * 840 REM * * 850 REM *********** 860 COLOR7 870 IFA$="Q" THEN PLAY"C":PRESET(203,65) :PRINT#1,"♪" 880 IFA$="S" THEN PLAY"D":PRESET(233,61) :PRINT#1,"♪" 890 IFA$="D" THEN PLAY"E":PRESET(53,91): PRINT#1,"♪" 900 IFA$="F" THEN PLAY"F":PRESET(83,85): PRINT#1,"♪" 910 IFA$="G" THEN PLAY"G":PRESET(113,81) :PRINT#1,"♪" 920 IFA$="H" THEN PLAY"A":PRESET(143,75) :PRINT#1,"♪" 930 IFA$="J" THEN PLAY"B":PRESET(173,71) :PRINT#1,"♪" 940 REM ************* 950 REM * * 960 REM * OITAVAS * 970 REM * * 980 REM ************* 990 IFA$="1" THEN PLAY"o1" 1000 IFA$="2" THEN PLAY"o2" 1010 IFA$="3" THEN PLAY"o3" 1020 IFA$="4" THEN PLAY"o4" 1030 IFA$="5" THEN PLAY"o5" 1040 IFA$="6" THEN PLAY"o6" 1050 IFA$="7" THEN PLAY"o7" 1060 IFA$="8" THEN PLAY"o8" 1070 REM **************** 1080 REM * * 1090 REM * SUSTENIDOS * 1100 REM * * 1110 REM **************** 1120 IFA$="A" THEN PLAY"c#" 1130 IFA$="Z" THEN PLAY"d#" 1140 IFA$="E" THEN PLAY"e#" 1150 REM O CARACTER '█' E OBTIDO P RESSIONANDO 'GRAPH' E 'P' 1160 IFA$="T" THEN PLAY"g#" 1170 IFA$="Y" THEN PLAY"a#" 1180 IFA$="U" THEN PLAY"b#" 1190 REM ************ 1200 REM * * 1210 REM * BEMOIS * 1220 REM * * 1230 REM ************ 1240 IFA$="I" THEN PLAY"c-" 1250 IFA$="O" THEN PLAY"d-" 1260 IFA$="P" THEN PLAY"e-" 1270 IFA$="K" THEN PLAY"f-" 1280 IFA$="L" THEN PLAY"g-" 1290 IFA$="M" THEN PLAY"a-" 1300 IFA$="C" THEN PLAY"b-" 1310 REM ************* 1320 REM * * 1330 REM * DURACAO * 1340 REM * * 1350 REM ************* 1360 IFA$="W" THEN PLAY"t32" 1370 IFA$="X" THEN PLAY"t80" 1380 IFA$="C" THEN PLAY"t120" 1390 IFA$="V" THEN PLAY"t170" 1400 IFA$="B" THEN PLAY"t220" 1410 IFA$="N" THEN PLAY"t255" 1420 REM *************** 1425 REM * * 1430 REM * MUSICAS * 1435 REM * PROGRAMADAS * 1440 REM * MUSICAS * 1450 REM * * 1460 REM *************** 1470 IFA$="9" THEN PLAY"t250cdecdeefgefg gagfecgagfecco3go4c" 1480 IFA$="0" THEN A$="m2000s11t255o3cce eggaaa#a#aaggee" :B$="ffaao4ccddd#d#ddcc o3aa":C$="ggbbo4ddeeo3ffaao4ccdd":PLAY A $+A$:PLAY B$+A$:PLAY C$+A$:PLAY "o4":BEE P 1490 IFA$="-" THEN PLAY"o4t255edt120et20 0dco3bat150g#t255ao4" 1500 REM ******************* 1510 REM * * 1520 REM * INICIALIZACAO * 1530 REM * * 1540 REM ******************* 1560 IFA$=" " THEN PRESET(203,65):COLOR1 :PRINT#1,"█":PRESET(233,61):PRINT# 1,"█":PRESET(53,91):PRINT#1,"π 8;":PRESET(83,85):PRINT#1,"█":PRES ET(113,81):PRINT#1,"█":PRESET(143, 75):PRINT#1,"█":PRESET(173,71):PRI NT#1,"█" 1570 LINE(23,64)-(256,64),2 1580 LINE(23,74)-(256,74),2 1590 LINE(23,84)-(256,84),2 1600 LINE(23,94)-(256,94),2 1610 GOTO 800 1620 REM ***************** 1630 REM * * 1640 REM * EXPLICACOES * 1650 REM * * 1660 REM ***************** 1670 CLS:BEEP 1680 LOCATE 0,0:PRINT" PARA TOCAR PRESS. AS SEGUINTES TECLAS:Q=DO S=RE D=MI F =FA G=SOL H=LA J=SI ." 1690 LOCATE 0,7:PRINT" VOCE PODE TOCAR A TE OITO OITAVAS ... 1=OITAVA 1 2=OITAV A 2 3=OITAVA 3 E ASSIM POR DIANTE." 1700 LOCATE0,13:PRINT" A DURACAO DAS NOT AS SE SITUA EM : W,X,C,V,B,N. 'W' E A MAIS LENTA E 'N' E A MAIS RAPIDA. " 1710 LOCATE 7,22:PRINT"PRESSIONE <ESP ACO>" 1720 S$=INKEY$ 1730 IF S$=" " THEN 1750 1740 GOTO 1720 1750 CLS:BEEP 1760 LOCATE 0,0:PRINT" VOCE PODE TAMBEM USAR OS SUSTENIDOS E OS BEMOIS.":LOCA TE 0,5:PRINT" SUSTENIDOS: A=DO#.Z=RE#.E= MI#.R=FA#. T=SOL#.Y=LA#.U=SI#." 1770 LOCATE0,10:PRINT" BEMOIS: I=DOb.O=R Eb.P=MIb.K=FAb. L=SOLb.M=LAb.C=SIb ." 1780 LOCATE 0,14:PRINT" PARA REFAZER A P AUTA PRESSIONE A BARRA DE ESPACO" 1790 LOCATE 7,22:PRINT"PRESSIONE <ESP ACO>" 1800 Z$=INKEY$ 1810 IF Z$=" " THEN 1830 1820 GOTO 1800 1830 CLS:BEEP 1840 LOCATE 0,0:PRINT" COMO EXERCICIO VO CE TEM TRES MUSICAS PROGRAMADAS. PARA OUVI-LAS PRESSIONE A TECLA '9' , '0' OU '-'." 1870 LOCATE 0,18:PRINT "DIVIRTA-SE...... ......." 1880 LOCATE 7,22:PRINT"PRESSIONE <ESP ACO>" 1890 S$=INKEY$ 1900 IF S$=" " THEN BEEP:GOTO300 1910 GOTO 1890 1920 STOP:END
Games
Artigo Original: MSX Micro, Revisão: Wilson Pilon
Decathlon (nota 5)
Uma produção consagrada no universo dos jogos eletrônicos, Decathlon reúne dez provas olímpicas que devem ser disputadas por um ou até quatro jogadores. Arremesso de peso, salto em vara e corrida estão entre as competições durante as quais devem ser considerados os seguintes fatores: velocidade, tempo e distância. Uma vez classificado o jogador passa para a prova seguinte.
Nas provas de arremesso de peso, disco, darto, etc., o atleta não deve pisar na linha, para evitar o 'scratch', que poderá desclassificá-lo. Decathlon possibilita a competição de cada prova isoladamente. Basta selecionar o jogo até o nível desejado.
O recurso som não é muito explorado. Ouve-se apenas uma música durante a apresentação, enquanto a tocha olímpica está sendo conduzida. Os passos dos competidores também são levemente sonorizados, a fim de orientar o jogador.
A ação é o ponto forte do jogo. Cuidado com os comandos! Não há material que resista a tanta emoção. Controle-se ou danificará seu equipamento.
Prepare-se para os calos que aparecerão em seus dedos e aproveite para treinar seu espírito esportivo.
Dicas: A velocidade é um fator importante em todos os jogos. Cuidado com o 'scratch', ou será desclassificado.
Lode Runner (nota 4)
Este jogo pode ser disputado em teclado ou joystick, sendo a maior atração de Lode Runner, a grande quantidade de telas que fazem parte da aventura. O objetivo do jogo é recolher as caixas deixadas pelo caminho, tendo cuidado porém com o inimigo, que o seguirá em todos os lugares, como um verdadeiro míssil teleguiado, além de ser imprevisível.
Quando você estiver sendo perseguido por seus inimigos, poderá fazer buracos para que eles percam terreno. Esses buracos não atrapalham seu desempenho, só o de seus inimigos e, após recolher todas as caixas, você passará à fase seguinte, através de uma escada situada na parte superior da tela.
Frogger (nota 4)
A simplicidade é o segredo do sucesso de Frogger. Uma rã deve atravessar uma estrada e um rio repleto de toras e jacarés, para chegar em casa. O cartucho agrada bastante ao público feminino por ser um dos pioneiros em temas não violentos.
Efeitos sonoros e musiquinhas complementam Frogger, tornando-o ainda mais agradável. A ação é constante e cada jogador tem direito a cinco chances para atravessar a estrada e o rio. Um ritmo adequado e a evolução para níveis mais difíceis fazem com que o jogador não perca o interesse pelo desafio.
Dicas: Assim que um tronco sai da tela, reaparece pelo lado oposto.
A primeira casa à esquerda é muito próxima da tela, por isso, quando quiser penetrá-la, prefira ir para o outro lado, pegar o tronco e reaparecer à esquerda para efetuar o salto na hora certa.
Pac Man (nota 3)
O mais famoso de todos os games, e também o mais conhecido, pode ser considerado um sucesso porque se baseia na ação, que exige dos jogadores muita atenção e reflexos para que se obtenha um bom desempenho. Em Pac Man você é personagem principal e sua missão é comer todas as pastilhas do labirinto. A medida em que você devora tudo e limpa o labirinto, surge um outro e começa tudo novamente. Sua ação, entretanto, será dificultada por fantasmas que perseguem-no constantemente.
E muito cuidado, porque eles são quatro inimigos, dispostos a atacá-lo e para que isso, não aconteça, você deve se fortalecer alimentando-se com quatro vitaminas que se localizam nos cantos do labirinto. E não se anime muito não, porque o efeito das vitaminas é passageiro, durando apenas alguns segundos.
Neste jogo o gráfico e o som podem ser considerados razoáveis, por não apresentarem nada de excepcional além de, algumas vezes, rotnarem-se cansativos, pois o labirinto é sempre o mesmo. Através do som você pode se orientar quanto ao tempo de duração do efeito das vitaminas. Pac Man não requer dicas especiais para ser jogado, e só através da prática você poderá descobrir que vale a pena percorrer sempre o mesmo caminho no começo do jogo, além de achar um jeito de driblar os fantasmas.
Beamrider (nota 4)
A terra foi cercada por um Campo de Força consituido de 99 setores de profundidade. Você deve limpar o campo, eliminar os alienígenas que surgirem em seu caminho, atravessando o espaço em seu foguete e driblando os feixes de luz.
Na tela aparecem cinco feixes, enquanto os inimigos atacam, pulando de um lado para o outro. Para evitá-los você deve fazer o mesmo além de esquivar-se dos raios e dos choques com as naves adversárias, e ainda atingi-los com seu laser.
Para cada setor existem quinze naves, se você destruií-las surgirá o sentinela do setor, que só poderá ser destruído por torpedos. Se você conseguir elmiminá-lo ganhará um bônus.
Se você tocar uma chave amarela de nome Rejuvenescedor, poderá obter vidas extras. Se no entanto, você acertar por engano, ela ficará vermelha e indestrutível e não poderá ser tocada, senão lhe matará.
Cada novo setor ultrapassado, mais inimigos. Alguns vulneráveis ao laser, enquanto outros só poderão ser eliminados com o uso de torpedos. Pode-se dizer que os gráficos do jogo são bonitos que aliados aos efeitos sonoros criam a tensão necessária para tornar a ação mais envolvente.
Para atingir mais pontos guarde os torpedos para o sentinela do setor. Você também pode acertar as naves inimigas um pouco antes delas entrarem no feixe. Aproveite esta oportunidade para destruí-las antes que elas atirem. Alguns adversários não podem ser destruídos pelos lasers, deixe-os passar e só use os torpedos em última instância.
Tennis (nota 5)
Tennis é um dos melhores jogos de esporte produzidos até então, senão o melhor. A perfeição com que todos os passos do esporte foram reconstruídos na versão eletrônica, tornam este jogo uma obra prima.
Todos os golpes do tênis estão presentes: cruzadas, paralelas, voleios, lobs e os dois serviços, podendo ser dados com duas diferentes gradações de força. A bola pode ir para fora, se não for bem controlada, e até bater na rede e se desviar ou perder a força, igual ao jogo original.
E o melhor de tudo é que você não precisa esperar por uma quadra vazia ou rezar para que a chuva não interrompa o jogo. Pela complexidade da ação, Tennis desencorajará àqueles que gostam de ligar o aparelho e ir jogando. É preciso treino e concentração para ir dominando as jogadas. Dicas: varie os golpes para surpreender o adversário. Treine subidas à rede para volear e decidir o ponto. Elas são difíceis de dominar, mas, muito eficientes.
Pitfall I (nota 3)
Pitfall Harry, o valente caçador de tesouros, tem que penetrar na selva para apanhar um saco de dinheiro, uma barra de ouro, uma de prata e um anel de diamante. Existemmuitos perigos a serem evitados, dentre os quais barris que você não poderá esbarrar sob o risco de perder pontos, além dos crocodilos, as cobras e as fogueiras. Algumas vezes, haverá a possibilidade de cortar caminho através de uma passagem subterrânea mas, cuidado, porque nessa passagem vive um escorpião. Este jogo tem como principal qualidade a ação, que pode ser considerada muito boa.
Dicas: Uma das táticas mais usadas em Pitfall é correr no sentido favorável ao dos barris, ou seja, para a esquerda do vídeo. Assim você os evita com maior facilidade. Quando for passar pelo lago dos crocodilos e não houver um cipó para ajudá-lo, pule sempre na cabeça do primeiro crocodilo, espere-os abrir a boca e quando fecharem, avance rapidamente.
H.E.R.O. (nota 5)
Só um heroi como Roderick Hero, do grupo de salvamento H.E.R.O., pode livrar os mineiros das minas de Mouont Leone de uma catástrofe maior, após a erupção de um vulcão próximo à região. O trabalho não vai ser dos mais fáceis, mas com coragem e perspicácia os mineiros conseguirão sair ilesos das minas soterradas.
Hero tem muita aparelhagem especial para o resgate. O Prop-Pack é um mecanismo à hélice, acoplado nas costas, que permite uma rápida locomoção aérea em todos os sentidos. Outra grande arma, desta vez para proteger o herói dos insetos e répteis das minas, é o microlaser, instalado em seu capacete. Uma jangada resistente ao calor também pode ser usada para atravessar os pequenos rios de lava que estão se formando dentro das minas, e para superar as inúmeras paredes de rochas despredidas com os desabamentos, existe também a possibilidade de soltar várias granadas. Mas cuidado! Assim que atirar uma granada, Hero tem que sair ligeiramente do local para não sofrer com a explosão.
O jogo é bem complexo. As minas são verdadeiros labirintos, tanto no sentido horizontal como no vertical, e quanto mais fundo o herói penetrar, mais difícil será o jogo. Além disso, a visibilidade fica muitas vezes prejudicada, dificultando a passagem de Hero, quando o vento de sua hélice apaga o fogo dos lampiões nos corredores das minas.
Para adquirir pontos, é só destruir o maior número de insetos e répteis e eliminar várias paredes. A quantidade de bombas restantes também é outro fator importante para a contagem de pontos.
A ação do jogo é excelente e a maior responsável pelos momentos de emoção da partida.
Dicas: Quando acabarem as dinamites e seu herói ainda encontrar algumas paredes para ultrapassar, utilize o microlaser. Isso, porém, roubará mais tempo e energia, dois fatores importantíssimos para continuidade da açao, e contagem de pontos.
Keystone Kapers (nota 3)
Keystone Kapers é um jogo interessante e bem divertido, no qual você é o guarda e tem que pegar um ladrão, tendo como obstáculos um elevador e uma escada rolante, entre outros. O jogo, porém, pode perder algum interessa depois de certo tempo de prática, já que você acaba decorando os perigos e táticas para ajudar o guarda a alcançar o ladrão, mas apesar disso, é um jogo recomendável ela criatividade do visual.
Aqui vão algumas dicas para auxiliá-lo no jogo. Uma das mais importantes é começar o jogo com o elevador no 3o andar, porque o tempo que você leva para chegar até sua porta é o mesmo que ele leva para descer até o térreo. Ganha-se tempo que você poderá aproveitar para fazer mais pontos. Outra dica importante, mas, um pouco mais complicada, deve ser usada quando você estiver na fase mais difícil do jogo: você deve se utilizar apenas o elevador, aguardando que o ladrão passe sobre ele, para persegui-lo logo após.
Referência de Listagem
Listagem | Arquivo |
---|---|
Decatlhon | decathlo.bas |
Lode Runner | loderun1.bas |
Frogger | frogger.bas |
Pac Man | pacman.bas |
Beamrider | beamride.bas |
Tennis | tennis.bas |
Pitfall I | pitfall.bas |
H.E.R.O. | hero.bas |
Download
Autor: Diversos, Montagem: Wilson Pilon
msxmicro-01.dsk: Disco com os programas.
msxmicro-01.cas: Fita com as versões K7 dos programas.
msxmicro-01asc.zip: Arquivos em formato ASCII para leitura.
PSGMusiwriter.zip: Arquivo rom do PSG MusiWriter.
msxmicro-01.pdf: PDF Resumido com indice.
Nenhum comentário:
Postar um comentário