100 REM********************************
105 REM*       PARA LINHA APPLE       *
110 REM*                              *
115 REM*                              *
120 REM*          RASTREADOR          *
125 REM********************************
130 DIM X$(3),Y$(3),CO$(3)
135 NG=0:TR=0:MR=0
140 FOR I=1 TO 3
145 READ X$(I),Y$(I)
150 NEXT
155 DATA   E,C,"","",D,B
160 REM ** ROTINA DE SOM **
165 FOR X=770 TO 806
170 READ A
175 POKE X,A
180 NEXT
185 DATA 169,4,72,160,255,174,0,3,169,1,32,168,252,202,208,6
190 DATA 173,48,192,174,0,3,136,208,239,104,168,136,240,6,152
195 DATA 72,160,255,208,228,96
200 CO$(1)="DESCULPE-ME, MAS FOI MUITO LONGE"
205 CO$(2)="ACHOU !!! PARABENS."
210 CO$(3)="ACABOU O COMBUSTIVEL."
215 GOTO 670
220 REM   ** INICIALIZACAO ** 
225 NG=NG+1
230 SX=INT(RND(1)*71-35)
235 SY=INT(RND(1)*71-35)
240 DI=ABS(SX)+ABS(SY)
245 MD=DI:SD=DI
250 EN=200:SH=0:HI=0:NS=0
255 VX=0:VY=0
260 RETURN
265 REM ** ENTRADA DE DADOS **
270 IN=PEEK(-16384)-128:POKE -16368,0
275 VX=3*((IN=ASC("K"))-(IN=ASC("J")))
280 VY=3*((IN=ASC("M"))-(IN=ASC("I")))
285 SH=(IN=ASC(" ")):REM ESPACO
290 RETURN
295 REM ** CALCULA DISTANCIAS, ETC. **
300 SX=SX-VX
305 SY=SY-VY
310 EN=EN-(VX<>0)-(VY<>0)-1
315 IF EN<=0 THEN EN=0:GOTO 375
320 REM ** ALVO SE AFASTA **
325 IF RND(1)<.5 THEN SX=SX+SGN(SX):GOTO 335
330 SY=SY+SGN(SY)
335 DI=ABS(SX)+ABS(SY)
340 IF DI<MD THEN MD=DI
345 IF DI>100 THEN 375
350 IF NOT SH THEN 375
355 NS=NS+1 
360 EN=EN-DI
365 IF EN<=0 THEN EN=0:GOTO 375
370 HI=(RND(1)*DI<5)
375 RETURN
380 REM ** SAIDA DE DADOS **
385 GOSUB 630
390 INVERSE
395 VTAB 7:HTAB 20+SGN(VX):PRINT X$(SGN(VX)+2);
400 VTAB 7+SGN(VY):HTAB 20:PRINT Y$(SGN(VY)+2);
405 NORMAL
410 IF NOT SH THEN 440
415 FOR I=1 TO 8
420 POKE 768,255
425 CALL 770
430 NEXT
435 GOTO 445
440 POKE 768,2*DI:CALL 770:REM SOM
445 VTAB 1:HTAB 26:PRINT EN" ";
450 RETURN
455 REM  **  TELA  **
460 HOME
465 VTAB 1:HTAB 8:PRINT "COMBUSTIVEL:   "EN" L."
470 GOSUB 630
475 VTAB 10:HTAB 17:PRINT "DIRECAO";
480 VTAB 17:HTAB 8:PRINT "DIGITE:    I -CIMA"
485 HTAB 26:PRINT "J -ESQUERDA"
490 HTAB 26:PRINT "K -DIREITA"
495 HTAB 26:PRINT "M -BAIXO"
500 VTAB 22:HTAB 8:PRINT "ATIRE PRESSIONANDO ESPACO"
505 VTAB 24:HTAB 8:INVERSE :PRINT "QUALQUER TECLA";:NORMAL
510 GET A$:HTAB 1:CALL -958
515 RETURN
520 REM ** FIM DESTE JOGO **
525 VTAB 3:HTAB 1:CALL -958
530 HTAB 8:PRINT CO$(CA)
535 FOR I=CA*10 TO CA*10+20 STEP 10
540 FOR K=I TO 50
545 POKE 768,K:CALL 770
550 NEXT K,I
555 PRINT :HTAB 8:PRINT "DISTANCIA INICIAL: "SD" M"
560 PRINT :HTAB 8:PRINT "NUMERO DE TIROS: "NS
565 PRINT :HTAB 8:PRINT "DISTANCIA MAIS PROX.  "MD" M"
570 IF HI THEN PRINT :HTAB 8:PRINT "VOCE O ACERTOU A "DI" M"
575 RE=50-DI/2:IF HI THEN RE=50+EN/4+SD/10
580 RE=INT(RE)
585 IF RE>100 THEN RE=100
590 IF RE<O THEN RE=0
595 TR=TR+RE
600 IF RE>MR THEN MR=RE
605 PRINT :HTAB 8:PRINT "PONTUACAO EM UMA ESCALA DE 100:"
610 PRINT :HTAB 10:PRINT "ESTE JOGO:"TAB(32);RE
615 HTAB 10:PRINT "MEDIA EM "NG" JOGOS: "TAB(32);INT(TR/NG)
620 HTAB 10:PRINT "MAXIMO:"TAB(32);MR
625 RETURN
630 REM ** LIMPA DIRECAO **
635 INVERSE
640 VTAB 6:HTAB 20:PRINT " "
645 HTAB 19:PRINT " ";:HTAB 21:PRINT " "
650 HTAB 20:PRINT " ";
655 NORMAL
660 RETURN
665 REM ** PROGRAMA PRINCIPAL **
670 GOSUB 225
675 GOSUB 460
680 GOSUB 270
685 GOSUB 300
690 GOSUB 385
695 CA=3*(EN=0)+2*HI+(DI>100)
700 FOR W=1 TO 100:NEXT
705 IF CA=0 THEN 680
710 GOSUB 525:REM ** FIM **
715 POKE -16368,0
720 VTAB 23:HTAB 8:INPUT "OUTRO JOGO? ";A$
725 IF LEFT$(A$,1)="S" THEN 670
730 END 

