Tron
Além de ser o nome de um utilíssimo comando do BASIC-MSX, é também o nome de um dos personagens do filme que, coincidentemente possui o nome TRON.
Teste o programa no WebMSX – The Online MSX Emulator
Quem teve o prazer de ver o filme, certamente deve ter gostado das cenas montadas por computador, em que o herói se digladia com inimigos pilotando motos que deixam atrás de si rastros sólidos.
A mesma emoção sentirá quem tiver o prazer de pilotar este jogo no seu MSX, mesmo não correndo o perigo de ser “apagado” por uma curva imprecisa ou um túnel sem saída!!
Já deve ter dado para perceber que o objetivo do jogo é não colidir com nada, mas não é só isso. A real emoção de se jogar TRON com um oponente humano são as situações e emboscadas que nenhum programa pode criar ou simular.
O jogador 1, que joga com o joystick A, controla a moto vermelha (esquerda) e o jogador 2, que joga com o joystick B, controla a moto azul (direita). Caso você só tenha 1 joystick, veja mais à frente como alterar o programa.
Ao contrário de outros jogos, o ponto de referência está dentro da moto, como se estivéssemos pilotando. Dessa maneira, os únicos comandos que necessitamos são para virar à esquerda e à direita. Por exemplo: se, na tela, nossa moto estiver andando para a esquerda, e desejarmos andar para baixo, se estivéssemos dentro da moto, este movimento corresponderia a virarmos para a esquerda!!
Portanto, se virarmos o joystick para a esquerda, qualquer que seja a direção e setido em que estejamos caminhando, a moto irá virar para a esquerda, ou seja, no sentido anti-horário. O mesmo ocorre se virarmos o joystick para a direita: a moto virará no sentido horário.
Caso você queira alterar alguns dos jogadores para o teclado, basta alterar o primeiro ou o segundo comando STICK para STICK(0).
Fonte: Livro Coleção de Programas para MSX Volume 2
Editora: Aleph
Autor: Fernando da Costa Grossi
Digitação: Renato Faria Lopes
Código fonte
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
10 ' T R O N 20 ' Fernando da Costa Grossi 30 ' 10000 OPEN"GRP:" FOR OUTPUT AS#1 10010 KEY OFF 10020 GOSUB 10390 10030 DEFINT A-Z: RESTORE 10040 X1=10: Y1=96 10050 X2=244: Y2=96 10060 V1=2: V2=0 10070 D1=0: D2=0 10080 S1=255: S2=255 10090 FOR X=1 TO7:READ A,B: SOUNDA,B: NEXT X 10100 SCREEN3: COLOR 15,1,7: CLS 10110 LINE(0,0)-(255,191),,B 10120 SOUND 7,60 10130 A=STICK(1): SOUND 0,S1:S1=S1-4 10140 B=STICK(2): SOUND 0,S2:S2=S2-4 10150 IF A=7 AND D1=0 THEN S1=255: D1=1: V1=V1+1 10160 IF B=7 AND D2=0 THEN S2=255: D2=1: V2=V2+1 10170 IF A=3 AND D1=0 THEN S1=255: D1=1: V1=V1-1 10180 IF B=3 AND D2=0 THEN S2=255: D2=1: V2=V2-1 10190 IF A=0 THEN D1=0 10200 IF B=0 THEN D2=0 10210 IF V1<0 THEN V1=3 ELSE IF V1>3 THEN V1=0 10220 IF V2<0 THEN V2=3 ELSE IF V2>3 THEN V2=0 10230 IF V1=0 THEN X1=X1-4 ELSE IF V1=1 THEN Y1=Y1+4 ELSE IF V1=2 THEN X1=X1+4 ELSE IF V1=3 THEN Y1=Y1-4 10240 IF V2=0 THEN X2=X2-4 ELSE IF V2=1 THEN Y2=Y2+4 ELSE IF V2=2 THEN X2=X2+4 ELSE IF V2=3 THEN Y2=Y2-4 10250 IF POINT(X2,Y2)<>1 THEN 10300 10260 IF POINT(X1,Y1)<>1 THEN 10310 10270 PSET(X1,Y1),8 10280 PSET(X2,Y2),4 10290 GOTO 10130 10300 A$="Jogador 1 venceu":GOTO 10320 10310 A$="Jogador 2 venceu":GOTO 10320 10320 SOUND 7,7: FOR X=0 TO 31: SOUND6,X:COLOR XMOD16: NEXT X:SOUND 7,63: COLOR,,5 10330 FOR X= 0 TO 1000: NEXT X: COLOR 1,15,15: SCREEN 2 10340 PRESET(56,88):PRINT#1,A$ 10350 PRESET(57,88):PRINT#1,A$ 10360 IF STRIG(0)=0 AND STRIG(1)=1 AND STRIG(2)=0 THEN GOTO 10360 10370 GOTO 10030 10380 DATA 7,255,8,15,9,15,1,1,3,1,0,255,2,255 10390 SCREEN 2: COLOR 0,8,8: CLS: PI=4*ATN(1) 10400 DRAW"S32 BM64,80 R4DLD3L2U3LU BM96,96 D2RU2LR2F2LH2 BM112,80 LDRBFR" 10410 CIRCLE(112,96),16,0,0,PI/2: CIRCLE(112,96),8,0,0,PI/2:CIRCLE(144,96),16,0 10420 DRAW"BM160,80 D4RU2R2U2RD4H4" 10430 PAINT(65,81),0:PAINT(105,81),0: PAINT(97,97),0:PAINT(106,97),0:PAINT(129,97),0:PAINT(161,97),0 10435 PAINT(190,97),0 10440 COLOR1,8,4 10450 PRESET(33,170) 10455 PRINT#1,"Fernando da Costa Grossi":PRESET(34,170) 10456 PRINT#1,"Fernando da Costa Grossi" 10460 IF INKEY$<>CHR$(13) THEN 10460 ELSE RETURN 10470 RETURN |