Neste número: Expertron, dica: amplicando caracteres, ficha comando PLAY
Expertron
Autor Original: Fábio Shiguemitsu Hara, Digitação: Wilson Pilon
Como o próprio nome já diz, esta é uma versão do TRON, feita para rodar em micros da linha MSX. Neste programa, dois jogadores perseguem um ao outro, tentando evitar o choque com barreiras e, ao mesmo tempo, construindo novas barreiras para encurralar o adversário.
Podem participar de cada partida um ou dois jogadores. No caso de haver apenas um, o adversário será o próprio micro. Neste tipo de partida, pode-se utilizar um joystick. Caso não possua, o jogador deverá usar as setas do teclado. Para isso digite:
400 IF STICK(0)=0 THEN Z=L(F):GOTO 430
410 Z=STICK(0):IF (Z/2)=INT(Z/2) THEN Z=Z+1:IF Z=9 THEN Z=1
Quando se desejar jogar com outra pessoa, pode-se utilizar dois joysticks ou um joystick e as setas do teclado. Para jogar com dois joysticks, digite:
400 IF STICK(2-F)=0 THEN Z=L(F):GOTO 430
410 Z=STICK(2-F):IF (Z/2)=INT(Z/2) THEN Z=Z+1:IF Z=9 THEN Z=1
Lembre-se que, para quem não possui pelo menos um joystick só é possível jogar da primeira maneira apresentada, ou seja, com apenas um jogador.
Digitação
A digitação do programa é longa e cansativa. Para facilitar, preste atenção às seguintes dicas:
Utilize "?", ao invés de "PRINT".
Quando houver duas ou mais linhas iguais ou parecidas, apenas troque o número da linha e faça as modificações necessárias. Ex.: As linhas 60 e 640 são idênticas. Para não refazer a linha 640, siga as instruções:
- Digite LIST 60
- Suba até o começo da linha 60 com o auxílio das setas.
- Troque o valor da linha e tecle <RETURN>
Macetes
Neste jogo, você se move em quatro direções: cima, baixo, esquerda e direita. Se jogar contra o computador, você verá que ele persistirá em segui-lo. Desse modo pode-se fecha-lo, fazendo-o encostar-se na parede.
Se a partida for jogada por duas pessoas, não haverá previsão de vencedor, já que existem mais de mil opções de jogadas. Aconselho o jogador a não ficar com o botão apertado, só um toque e sua moto irá para a direção desejada. Outra dica importante: nunca ande para trás.
Observações
Os caracteres entre aspas contidos no fim da linha 70 podem ser conseguidos pressionando-se Shift+LGRA+O.
Este programa possui linhas desnecessárias, podendo-se retirar as linhas 290 e 340. Depois dê um RENUM e as linhas ficarão em ordem de novo.
A parte do programa em que o computador "pensa" para onde vai se locomover, está entre as linhas 460 e 630. Este "pensador" foi copiado de uma versão para a linha Sinclair.
10 ' *** EXPERTRON ***
20 ' Copyright by
30 ' Fabio Shiguemitsu Hara
40 '
50 ON STOP GOSUB 860
60 STOP ON
70 SCREEN 0,,1:CLS:KEY OFF:COLOR 1,15,15:WIDTH 40
80 SOUND 8,16:SOUND 7,55:SOUND 6,5:SOUND 13,10:SOUND 12,180:SOUND 11,0
90 LOCATE 13,0:PRINT "EXPERTRON":LOCATE 13,1:PRINTSTRING$(9,195)
100 PRINT:INPUT "Quantos jogadores ";N
110 IF N<1 OR N>2 THEN 70
120 FOR C=1 TO N:CLS:PRINT "Nome do ";C;" jogador ===> ";:LINE INPUT N$(C)
130 PRINT:PRINT N$(C);" digite seu caracter===> ";:LINE INPUT C$:A(C)=ASC(C$)
140 IF N=1 AND A(C)=215 THEN 130
150 NEXT
160 CLS:LOCATE 15,10:PRINT "EXPERTRON":FOR T=1 TO 2000:NEXT:CLS
170 SCREEN ,,0
180 FOR V=0 TO 39:VPOKE V+80,219:VPOKE V+920,219:NEXT
190 FOR V=3 TO 22:VPOKE 40*V,219:VPOKE 40*V+39,219:NEXT
200 LOCATE 0,1:PRINT N$(1);" : ";J(1)
210 IF N=1 THEN LOCATE 15,0:PRINT "MSX : ";M
220 IF N=2 THEN LOCATE 34-LEN(N$(2)),1:PRINT N$(2);" : ";J(2)
230 IF J(1)=10 OR J(2)=10 OR M=10 THEN 770
240 X(1)=INT(RND(-TIME)*798)+161
250 IF VPEEK(X(1))<>32 THEN 240
260 L(1)=INT(RND(-TIME)*7)+1:IF (L(1)/2)=INT(L(1)/2) THEN 260
270 X(0)=INT(RND(-TIME)*798)+161
280 IF VPEEK(X(0))<>32 THEN 270
290 L(0)=INT(RND(-TIME)*7)+1:IF (L(0)/2)=INT(L(0)/2) THEN 290
300 SOUND 2,INT(RND(-TIME)*256):SOUND 3,INT(RND(-TIME)*16):SOUND 7,253:SOUND 9,16:SOUND 2,0:SOUND 3,0:F=1:GOSUB 400
310 IF X(1)<41 THEN 660
320 IF VPEEK(X(1))<>32 THEN 660
330 VPOKE X(1),A(1)
340 IF N=1 THEN 480
350 F=0:GOSUB 400
360 IF X(0)<41 THEN 660
370 IF VPEEK(X(0))<>32 THEN 660
380 VPOKE X(0),A(2)
390 GOTO 300
400 IF STICK(0)=0 THEN Z=L(F):GOTO 430:'IF STICK(F)=0 THEN Z=L(F):GOTO 430
410 Z=STICK(0):IF (Z/2)=INT(Z/2) THEN Z=Z+1:IF Z=9 THEN Z=1:'Z=STICK(F):IF (Z/2)=INT(Z/2) THEN Z=Z+1:IF Z=9 THEN Z=1
420 L(F)=Z
430 IF Z=1 THEN X(F)=X(F)-40
440 IF Z=3 THEN X(F)=X(F)+1
450 IF Z=5 THEN X(F)=X(F)+40
460 IF Z=7 THEN X(F)=X(F)-1
470 RETURN
480 Z=0:L0=INT(X(0)/40):C0=INT(X(0)-(L0*40))
490 L1=INT(X(1)/40):C1=INT(X(1)-(L1*40))
500 IF ABS(L1-L0)>ABS(C1-C0) THEN 540
510 IF VPEEK(X(0)+1)=32 AND C1>C0 THEN Z=3
520 IF VPEEK(X(0)-1)=32 AND C1<C0 THEN Z=7
530 GOTO 560
540 IF VPEEK(X(0)+40)=32 AND L1>L0 THEN Z=5
550 IF VPEEK(X(0)-40)=32 AND L1<L0 THEN Z=1
560 IF Z<>0 THEN 620
570 Z=1
580 IF VPEEK(X(0)-1)=32 THEN Z=7
590 IF VPEEK(X(0)+40)=32 THEN Z=5
600 IF VPEEK(X(0)-40)=32 THEN Z=1
610 IF VPEEK(X(0)+1)=32 THEN Z=3
620 F=0:GOSUB 430
630 IF VPEEK(X(0))<>32 THEN 660
640 VPOKE X(0),215
650 GOTO 300
660 SOUND 8,16:SOUND 7,55:SOUND 6,5:SOUND 3,10:SOUND 12,180:SOUND 11,0
670 FOR T=1 TO 1000:NEXT
680 IF F=1 AND N=2 THEN CLS:J(2)=J(2)+1:PRINT N$(2);
690 IF F=0 AND N=2 THEN CLS:J(1)=J(1)+1:PRINT N$(1);
700 IF N=1 THEN 740
710 PRINT " Marcou mais um ponto!"
720 FOR T=1 TO 2000:NEXT:CLS
730 GOTO 180
740 IF F=1 THEN CLS:M=M+1:PRINT "Eu faturei esta. Ha! Ha!"
750 IF F=0 THEN CLS:J(1)=J(1)+1:PRINT " Voce marcou mais um ponto!"
760 GOTO 720
770 FOR T=1 TO 2000:NEXT:CLS
780 LOCATE 10,10:PRINT "Vencedor: ";:FOR T=1 TO 5:BEEP:NEXT
790 IF M=10 THEN PRINT "Expert - MSX"
800 IF J(1)=10 THEN PRINT N$(1)
810 IF J(2)=10 THEN PRINT N$(2)
820 LOCATE 0,20:PRINT "Outra vez ? (S/N) : :":LOCATE 19,20:H$=INPUT$(1):PRINT H$
830 IF H$="S" OR H$="s" THEN RUN
840 IF H$="N" OR H$="n" THEN SCREEN ,,1:WIDTH(39):KEY ON:CLS:NEW
850 BEEP: GOTO 820
860 CLS:SCREEN 0,,1:END
Dicas
Ampliando Caracteres
Autor Original: Roberto A.M.do Valle e Silvio Rafael M.dos Santos, Digitação: Wilson Pilon
Uma das características mais interessantes dos micros da linha MSX é a possibilidade de misturar textos e gráficos.
Sendo assim, elaborei um pequeno programa que amplia o tamanho dos caracteres.
10 CLS
20 OPEN "GRP:" AS #1
30 SCREEN 3
40 PRESET (80,72)
50 PRINT #1,"MSX"
60 COLOR RND(1)*15
70 GOTO 40
Micro Fichas: Sub comandos do PLAY
Sub Comandos | Valores Permitidos | Função | Valor Inicial |
---|---|---|---|
Tn | de 32 a 255 | Determina o andamento da música. | 120 |
On | de 1 a 8 | Determina uma das 8 oitavas do MSX. | 4 |
Ln | de 1 a 64 | Determina a duração da nota. | 4 |
Nn |
de 0 a 96 | Específíca uma nota musical. | - |
A# a G# A a G A- a G- |
Assume o valor de Ln | Especifica a nota musical, dentro de uma oitava pré-determinada. "#" ou "+", sustenido e "-", bemol. | - |
An-Gn | de 1 a 64 | Como no quadro anterior, porém com a duração independente de Ln. | - |
Rn | de 1 a 64 | Determina uma pausa. | - |
. | não tem | Aumenta a duração de uma nota ou de uma pausa em 50%. | - |
Vn | de 0 a 15 | Determina o volume. | 8 |
Mn | de 0 a 65535 | Determina o período da variação de volume durante a execução da nota. | - |
Sn | de 0 a 15 | Determina o formato do envelope. | - |
WebMSX
- ms-57.dsk: Rode os programas pelo WebMSX