segunda-feira, janeiro 31, 2022

MSX Programas: Revista MSX Micro 01

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 0K=10 * 10 + 0
8 0 0K=10 * 8 + 0
7 0 0K=10 * 7 + 0
6 7 0K=10 * 6 + 7

Quadro 2

Valores Cálculo de K
2 0 0K=10 * 2 + 0
1 0 0K=10 * 1 + 0
8 0K=10 * 0 + 8
7 0K=10 * 0 + 7
6 70K=10 * 0 + 6

Referência de Listagem

Listagem Arquivo
Listagem Únicagrafbar.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
Única

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 Únicabancodad.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      
Única

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 Únicasenha.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

Única

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 Únicak7ctrl.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

Única

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 Únicapiano.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,"&#960
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
Única

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

ListagemArquivo
Decatlhondecathlo.bas
Lode Runnerloderun1.bas
Froggerfrogger.bas
Pac Manpacman.bas
Beamriderbeamride.bas
Tennistennis.bas
Pitfall Ipitfall.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