DECLARE FUNCTION Dist&(a%,B%,c%,d%) DECLARE SUB Digito(x%,y%,n%) DECLARE FUNCTION NewCod$() DECLARE SUB Ponteiro(x%,y%,n%) DECLARE SUB Acertou(x%,y%) DECLARE SUB ExibeInimigo(x%,y%,f%) DECLARE SUB Barra(x%,y%,n%) DECLARE SUB Mira(x%,y%,c%) 1 CLEAR:RANDOMIZE TIMER:DEFINT A-Z CLS ?"Space" ?"Definir teclas:" ?"P/ cima :";:DO:kup$=INKEY$:LOOP WHILE kup$="":?"Ok" ?"P/ baixo :";:DO:kdown$=INKEY$:LOOP WHILE kdown$="":?"Ok" ?"P/ direita :";:DO:kright$=INKEY$:LOOP WHILE kright$="":?"Ok" ?"P/ esquerda :";:DO:kleft$=INKEY$:LOOP WHILE kleft$="":?"Ok" ?"Tiro :";:DO:kfire$=INKEY$:LOOP WHILE kfire$="":?"Ok" SCREEN 1 OPTION BASE 1 DIM Ex(5),Ey(5),Ez(5),Edx(5),Edy(5) x=160:y=100:ax=x:ay=y x1=5:y1=10:x2=314:y2=149 dx=0:dy=0 nnv=50 Pontos=0 Tiros=100 Energ!=180 Comando=INT(RND*5)+1 AtvNavM=0 Cod$=NewCod$ DO VIEW(x1,y1)-(x2,y2),,1 Mira ax-x1,ay-y1,0 FOR i=1 TO 5+4*AtvNavM IF NOT Ez(i)AND ct MOD 5=0 THEN nnv=nnv-AtvNavM Ez(i)=-1 Ex(i)=INT(RND*(x2-x1))+x1 Ey(i)=INT(RND*(y2-y1))+y1 Edx(i)=INT(RND*3)-1 Edy(i)=INT(RND*3)-1 END IF IF Ez(i)THEN kx=Ex(i):ky=Ey(i):kdx=Edx(i):kdy=Edy(i) ExibeInimigo kx-x1,ky-y1,0 nr=1-AtvNavM kx=kx+nr*kdx:IF kx>x2 OR kxy2 OR ky0 AND NOT TiroAtivo THEN Tiros=Tiros-1 TiroAtivo=-1 Tct=0 alx=x-x1:aly=y-y1 tx1=(x2+x1)\2:ty1=y2 tx=tx1:ty=ty1 CIRCLE(tx-x1,ty-y1),2,2 mx!=(x-tx1)/10! my!=(y-ty1)/10! END IF END SELECT IF INT(RND*20+10*AtvNavM)=4 AND NOT Atacar THEN DO:Sel=INT(RND*(5+4*AtvNavM))+1:LOOP UNTIL Ez(Sel):Atacar=-1 IF Atacar AND NOT ContraTiro THEN IF Ey(Sel)<40+INT(RND*20)AND INT(RND*(10+9*AtvNavM))=4 THEN ContraTiro=-1 CTct=0 ctx1=Ex(Sel) cty1=Ey(Sel) ctx=ctx1:cty=cty1 CIRCLE(ctx-x1,cty-y1),2,3 cmx!=((x2+x1)\2-ctx1)/50! cmy!=(y2-cty1)/50! ELSE Edy(Sel)=-1 END IF END IF IF ContraTiro THEN CIRCLE(ctx-x1,cty-y1),2,0 CTct=CTct+1 SOUND 600+5*CTct,.1 ctx=cmx!*CTct+ctx1 cty=cmy!*CTct+cty1 IF CTct=50 THEN Acertou ctx-x1,cty-y1 Tiros=Tiros-10 Energ!=Energ!-18 Pontos=Pontos-10 ContraTiro=0 Atacar=0 Sel=0 ELSE CIRCLE(ctx-x1,cty-y1),2,3 END IF END IF IF TiroAtivo THEN CIRCLE(tx-x1,ty-y1),2,0 Tct=Tct+1 SOUND 1000+10*Tct,Tct*.1 tx=mx!*Tct+tx1 ty=my!*Tct+ty1 IF Tct=10 THEN CIRCLE(alx,aly),10,0,,,1 PLAY "MBO0L32EFGEFDC" ac=ct FOR i=1 TO 5 IF Ez(i)THEN IF Dist&(Ex(i),Ey(i),tx,ty)<=100-25*AtvNavM THEN ct=ct+1 Acertou tx-x1,ty-y1 ExibeInimigo Ex(i)-x1,Ey(i)-y1,0 Ez(i)=0 IF AtvNavM THEN CLS VIEW LINE(70,46)-STEP(60,34),1,BF LINE(70,46)-STEP(10,-10),1 LINE-(140,36),1 LINE-STEP(-10,10),1 LINE(140,36)-STEP(0,34),1 LINE-STEP(-10,10),1 PAINT(135,46),2,1 PAINT(80,41),2,1 FOR i=0 TO 8 LOCATE 9-i\3,11+2*(i MOD 3):?USING "#";i+1; NEXT LOCATE 10,13:?"0"; ky$="" px=82:py=18 LINE(px-2,py-2)-(px+58,py+18),1,BF FOR i=1 TO 4 DO:a$=INPUT$(1):LOOP UNTIL a$="0" OR VAL(a$)>0 FOR tx=0 TO 1:FOR ty=0 TO 1 Digito tx+px+16*(i-1),ty+py,VAL(a$) NEXT ty,tx PLAY "MFo2l6"+CHR$(66+i) ky$=ky$+a$ NEXT IF ky$=Cod$ THEN PLAY "MFo4l8cefg":Terminado=-1 ELSE PLAY "MFo3l8gfec":InvCod=-1 END IF EXIT DO END IF IF i=Sel THEN Atacar=0:Sel=0 IF i=Comando THEN FOR j=1 TO 5 IF j<>i AND Ez(j)THEN acx=Ex(j)-x1:acy=Ey(j)-y1 LINE(tx-x1,ty-y1)-(acx,acy),1,,&HF0F0 END IF NEXT FOR j=1 TO 5 IF j<>i AND Ez(j)THEN acx=Ex(j)-x1:acy=Ey(j)-y1 ct=ct+1 Acertou acx,acy ExibeInimigo acx,acy,0 LINE(tx-x1,ty-y1)-(acx,acy),0,,&HF0F0 Ez(j)=0 END IF NEXT i=5 END IF IF ct MOD 5=0 THEN ContraTiro=0:Sel=0:Atacar=0 Tiros=Tiros+10:IF Tiros>100 THEN Tiros=100 Energ!=Energ!+60:IF Energ!>180 THEN Energ!=180 Comando=INT(RND*5)+1 CLS LOCATE 4,2:?"Pista da chave : A B C D"; alfa=INT(RND*3)+1 beta=4-INT(RND*(4-alfa)) LOCATE 6,2:?USING "!*!=##";CHR$(64+alfa);CHR$(64+beta);VAL(MID$(Cod$,alfa,1))*VAL(MID$(Cod$,beta,1)); t!=TIMER:DO:LOOP UNTIL TIMER-t!>=5 OR INKEY$="" CLS END IF END IF END IF NEXT IF ContraTiro THEN IF Dist&(ctx,cty,tx,ty)<=100 THEN Acertou ctx-x1,cty-y1:ContraTiro=0:Pontos=Pontos+2:Atacar=0:Sel=0 IF ct>ac THEN Pontos=Pontos+2*(ct-ac)-1 TiroAtivo=0 ELSE CIRCLE(alx,aly),10,2,,,1 CIRCLE(tx-x1,ty-y1),2,2 END IF END IF x=x+dx:y=y+dy IF x>x2 THEN x=x2:dx=0 IF xy2 THEN y=y2:dy=0 IF y=.01 IF ct=50 THEN AtvNavM=-1 IF Energ!=0 THEN EXIT DO LOOP SOUND 0,0 SCREEN 0:WIDTH 80 ?"Fim do jogo" ? IF Energ!=0 THEN ?"O combust¡vel acabou... Vocˆ perdeu" ELSEIF InvCod THEN ?"C¢digo inv lido... Vocˆ perdeu" ELSEIF Terminado THEN ?"Parab‚ns, vocˆ venceu !!!" END IF ?USING "Pontos :#####00";Pontos ? ?"Continua [S/N] ? "; DO:a$=UCASE$(INPUT$(1)):LOOP UNTIL a$="S" OR a$="N" ?a$ IF a$="S" THEN 1 SYSTEM SUB Acertou(x,y) PLAY "MBO1L32EFGEFDC" Inc!=.41 rd!=10 FOR c!=0 TO rd! STEP Inc! CIRCLE(x,y),c!,2 NEXT c! FOR c!=rd! TO 0 STEP-Inc! CIRCLE(x,y),c!,0 t!=TIMER:DO:LOOP UNTIL TIMER-t!>=.01 NEXT c! END SUB SUB Barra(x,y,n) LINE(x,y)-STEP(102,12),2,B IF n<100 THEN LINE(x+n+2,y+1)-STEP(99-n,10),0,BF LINE(x+1,y+1)-STEP(n,10),1,BF END SUB SUB Digito(x,y,n) SELECT CASE n CASE 0 LINE(x,y)-STEP(7,15),,B CASE 1 LINE(x+7,y)-STEP(0,15) CASE 2 LINE(x,y)-STEP(7,0) LINE-STEP(0,7) LINE-STEP(-7,0) LINE-STEP(0,8) LINE-STEP(7,0) CASE 3 LINE(x,y)-STEP(7,0) LINE-STEP(0,15) LINE-STEP(-7,0) LINE(x,y+7)-STEP(7,0) CASE 4 LINE(x,y)-STEP(0,7) LINE-STEP(7,0) LINE-STEP(0,8) LINE(x+7,y)-STEP(0,7) CASE 5 LINE(x+7,y)-STEP(-7,0) LINE-STEP(0,7) LINE-STEP(7,0) LINE-STEP(0,8) LINE-STEP(-7,0) CASE 6 LINE(x+7,y)-STEP(-7,0) LINE-STEP(0,7) LINE-STEP(7,8),,B CASE 7 LINE(x,y+7)-STEP(0,-7) LINE-STEP(7,0) LINE-STEP(0,15) CASE 8 LINE(x,y)-STEP(7,15),,B LINE(x,y+7)-STEP(7,0) CASE 9 LINE(x,y)-STEP(7,7),,B LINE-STEP(0,8) LINE-STEP(-7,0) END SELECT END SUB FUNCTION Dist&(a,B,c,d):Dist&=1&*(a-c)*(a-c)+(B-d)*(B-d):END FUNCTION SUB ExibeInimigo(x,y,f) SHARED AtvNavM IF AtvNavM THEN LINE(x-10,y-5)-STEP(20,10),2*f,BF LINE(x-6,y-6)-STEP(12,4),f,BF LINE(x-6,y)-STEP(12,2),3*f,BF LINE(x-12,y+2)-STEP(5,5),3*f,BF LINE(x+8,y+2)-STEP(5,5),3*f,BF CIRCLE(x,y-5),10,f ELSE LINE(x-8,y-1)-STEP(16,4),2*f,BF LINE(x-6,y-4)-STEP(12,4),f,BF LINE(x-8,y+2)-STEP(1,1),0,BF LINE(x+7,y+2)-STEP(1,1),0,BF END IF END SUB SUB Mira(x,y,c) CIRCLE(x,y),20,c LINE(x-5,y)-STEP(-20,0),c LINE(x+5,y)-STEP(20,0),c LINE(x,y-5)-STEP(0,-20),c LINE(x,y+5)-STEP(0,20),c LINE(x-5,y-5)-STEP(10,10),c,B END SUB FUNCTION NewCod$ c$="":FOR i=1 TO 4:c$=c$+RIGHT$(STR$(INT(RND*10)),1):NEXT NewCod$=c$ END FUNCTION SUB Ponteiro(x,y,n) ang!=(n-180)*ATN(1#)/45# a18!=-162*ATN(1#)/45# CIRCLE(x,y),18,2 CIRCLE(x,y),20,2 LINE(x-18,y)-STEP(36,0),2 PAINT(x,y-1),3,2 PAINT(x,y+1),1,2 LINE(x,y)-STEP(18*COS(a18!),18*SIN(a18!)),2 PAINT(x-10,y-1),1,2 LINE(x,y)-STEP(16*COS(ang!),16*SIN(ang!)),0 IF n<=18 AND PLAY(0)=0 THEN PLAY "MBl16o3cecdfp4" END SUB