Saída Invisível
Você se encontra num lugar repleto de armadilhas. Só existe uma saída, que você não vê, e sua missão é encontrá-la o mais rapidamente possível.
Teste o programa no WebMSX – The Online MSX Emulator
Para que a saída seja atingida, você deve coletar as quatro pilhas que estão espalhadas em pontos aleatórios da tela. Elas servirão para alimentar o seu receptor e, quando a última for apanhada, você passará a receber sinais que são emitidos constantemente por um microtransmissor instalado na saída. Esses sinais são decodificados por seu receptor que informa a direção a seguir.
Na parte inferior da tela aparecem as palavras NORTE ou SUL e LESTE ou OESTE. Por exemplo, se surgirem as informações SUL e OESTE, significa que a saída está abaixo e à esquerda da posição ocupada por você. Caso essas palavras não apareçam, isto quer dizer que você está na direção correta. Com relação ao contador de tempo, ele funciona como um taxímetro. Se você ficar parado numa determinada posição, ele não pára. Caso você se mova, ele se adianta em dez unidades para cada posição avançada. Convém, portanto, planejar o caminho mais curto e mais rápido para alcançar as pilhas e depois a saída.
Para se movimentar utilize as teclas de setas. Cuidado para não esbarrar em qualquer uma das armadilhas enquanto estiver se movendo pois, nesse caso, você fica preso e o jogo termina. Quando você alcançar a saída, o contador de tempo pára e o programa checa se o recorde foi batido. Desta forma, o jogo acaba e a pressão da tecla “R” o reinicia.
Fonte: Livro Coleção de Programas para MSX Volume 1
Editora: Aleph
Autor: Luiz Tarcísio de Carvalho Jr.
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
1 REM SAIDA INVISIVEL 10 GOSUB 740 20 MAXFILES=1 : OPEN"GRP:" FOR OUTPUT AS #1 30 DIM M(28,16) : SCREEN 2,0 40 RE=9999 : D$="R7D7L7U7BF2R3D3L3U3" : A$="R6D6L5U4R3D2L1" 50 SPRITE$(1)=CHR$(0)+CHR$(24)+CHR$(60)+CHR$(60)+CHR$(60)+CHR$(60)+CHR$(60)+CHR$(0) 60 SPRITE$(2)=CHR$(60)+CHR$(66)+CHR$(165)+CHR$(129)+CHR$(165)+CHR$(153)+CHR$(66)+CHR$(60) 70 SCREEN 2 : COLOR 15,1,1 : CLS 80 TE=0 : PI=0 : TT=0 : W=0 90 FOR I=8 TO 240 STEP 8 100 PSET(I,24),0 : COLOR 5 : DRAW D$ 110 PSET(I,160),0 : COLOR 5 : DRAW D$ 120 NEXT I 130 FOR I=32 TO 152 STEP 8 140 PSET(8,I),0 : COLOR 5 : DRAW D$ 150 PSET(240,I),0 : COLOR 5 : DRAW D$ 160 NEXT I 170 PSET(72,0),0: COLOR 8 : PRINT #1,"SAIDA INVISIVEL" 180 GOSUB 620 190 GOSUB 610 200 Q=INT(RND(-TIME)*1000)+1 210 FOR K=1 TO 65 220 X=INT(RND(Q)*27)+2 : I=X*8+8 230 Y=INT(RND(Q)*16)+1 : J=Y*8+24 240 IF M(X,Y) <> 0 THEN 220 250 IF K < 61 THEN M(X,Y)=5 ELSE GOTO 280 260 PSET(I,J),0 : COLOR 8 : DRAW A$ 270 GOTO 320 280 IF K < 65 THEN M(X,Y)= K-60 ELSE GOTO 310 290 PUT SPRITE M(X,Y),(I,J),11,1 300 GOTO 320 310 XS=X : YS=Y : M(X,Y)=6 320 NEXT K 330 X=1 : Y=1 : I=16 : J=32 340 PUT SPRITE 0,(I,J),7,2 350 IF INKEY$="" THEN 350 360 T=STICK(0) 370 IF T=1 OR T=3 OR T=5 OR T=7 THEN 410 380 W=W+1 390 IF W=5 THEN TE=TE+1 : GOSUB 610 : W=0 400 GOTO 360 410 TE=TE+10 : GOSUB 610 420 IF T=1 AND Y-1 > 0 THEN Y=Y-1 : J=Y*8+24 : GOTO 460 430 IF T=3 AND X+1 <= 28 THEN X=X+1 : I=X*8+8 : GOTO 460 440 IF T=5 AND Y+1 <= 16 THEN Y=Y+1 : J=Y*8+24 : GOTO 460 450 IF T=7 AND X-1 > 0 THEN X=X-1 : I=X*8+8 460 PUT SPRITE 0,(I,J),7,2 470 IF M(X,Y)=5 THEN PLAY"T255L64CDEFGCDEFGCDEFGCDEFGCDEFG" : GOTO 730 480 IF M(X,Y)>0 AND M(X,Y)<5 THEN PLAY"T255L64BEB" : GOSUB 630 490 IF PI=4 THEN GOSUB 650 500 IF TT=1 THEN PLAY"T255L64CDEEFEFCACA" : GOTO 520 510 GOTO 360 520 IF RE > TE THEN RE=TE : GOSUB 620 530 LINE (88,88)-(175,95),1,BF : PSET(88,88),0 : COLOR 15 : PRINT #1,"FIM DO JOGO" 540 FOR X=1 TO 28 550 FOR Y=1 TO 16 560 M(X,Y)=0 570 NEXT Y : NEXT X 580 PSET(0,184),0 : COLOR 15 : PRINT #1,"Aperte a tecla R para recomecar." 590 IF INKEY$ <> "R" THEN 590 600 GOTO 70 610 LINE(216,16)-(247,23),1,BF : PSET(168,16),0 : COLOR 2 : PRINT #1,USING"TEMPO:####";TE : RETURN 620 LINE(72,16)-(103,23),1,BF : PSET(8,16),0 : COLOR 2 : PRINT #1,USING"RECORDE:####";RE : RETURN 630 PI=PI+1 : PUT SPRITE M(X,Y),(I,Y),0,1 : M(X,Y)=0 : IF PI=4 THEN PLAY"T255L64CAC" 640 RETURN 650 IF X < XS THEN LINE (176,168)-(215,175),1,BF : PSET(176,168) : COLOR 2 : PRINT #1,"LESTE" 660 IF X = XS THEN LINE (176,168)-(215,175),1,BF 670 IF X > XS THEN LINE (176,168)-(215,175),1,BF : PSET(176,168) : COLOR 2 : PRINT #1,"OESTE" 680 IF Y > YS THEN LINE (40,168)-(79,175),1,BF : PSET(40,168) : COLOR 2 : PRINT #1,"NORTE" 690 IF Y = YS THEN LINE (40,168)-(79,175),1,BF 700 IF Y < YS THEN LINE (40,168)-(79,175),1,BF : PSET(40,168) : COLOR 2 : PRINT #1,"S U L" 710 IF M(X,Y)=6 THEN TT=1 720 RETURN 730 TE=9999 : GOSUB 610 : GOTO 530 740 CLS : COLOR 4,1 : KEY OFF 750 SCREEN 0 760 LOCATE 12,5 770 PRINT"SAIDA INVISIVEL" 780 LOCATE 5,17 790 PRINT"Aperte uma letra para comecar..." 800 IF INKEY$="" THEN GOTO 800 810 RETURN |