DECLARE SUB DelParat(x%) DECLARE FUNCTION Seta$(n%) DECLARE SUB Acertou(x!,y!,rd!) 1 CLEAR DEFINT A-Z RANDOMIZE TIMER CLS ?"Definir teclas:" ?"P/ direita :";:DO:kright$=INKEY$:LOOP WHILE kright$="":?"Ok" ?"P/ esquerda :";:DO:kleft$=INKEY$:LOOP WHILE kleft$="":?"Ok" ?"P/ atirar :";:DO:kfire$=INKEY$:LOOP WHILE kfire$="":?"Ok" ?"P/ aumentar vel. :";:DO:kfast$=INKEY$:LOOP WHILE kfast$="":?"Ok" ?"P/ diminuir vel. :";:DO:kslow$=INKEY$:LOOP WHILE kslow$="":?"Ok" READ Max DIM Jet1(Max),Jet2(Max) FOR i=0 TO Max:READ Jet1(i):NEXT FOR i=0 TO Max:READ Jet2(i):NEXT SCREEN 1 PiFactor#=ATN(1)/45 aalfa=5 alfa=90 gravity!=9.8 Velocity=50 pts=20 t1=10:t2=19:t3=21 LINE(0,190)-(319,199),1,BF NoPlane=-1 NoParat=-1 DIM Pdx(20),Pdy(20),Qdr(111) LINE(140,190)-(180,171),2,BF GET(140,171)-(180,190),Qdr pdc=0:pdi=0 Wind=INT(RND*11)-5 DO IF INT(RND*250)=5 THEN Wind=Wind+INT(RND*3)-1 IF Wind=-6 THEN Wind=-5 ELSE IF Wind=6 THEN Wind=5 END IF IF INT(RND*500)=3 THEN xn=INT(RND*300):yn=INT(RND*80)+10 LINE(xn,yn)-STEP(10,5),1,BF LINE(xn-5,yn+5)-STEP(20,5),1,BF END IF LOCATE 1,1:?USING "Vel:###m/s Ang:### Pts:#### Vento:\ \";Velocity;alfa;pts;Seta$(Wind); IF NoPlane THEN IF INT(RND*3)=0 THEN yplane=10+INT(RND*20) dplane=INT(RND*2)*2-1 xplane=148-138*dplane IF dplane=1 THEN PUT(xplane,yplane),Jet1,PSET ELSE PUT(xplane,yplane),Jet2,PSET NoPlane=0 END IF ELSE LINE(xplane,yplane)-STEP(24,9),0,BF xplane=xplane+dplane*2 IF xplane<295 AND xplane>0 THEN IF dplane=1 THEN PUT(xplane,yplane),Jet1,PSET ELSE PUT(xplane,yplane),Jet2,PSET IF NoParat AND(xplane<115 OR xplane>180)THEN IF INT(RND*75)=25 THEN NoParat=0 xparat=xplane+5 yparat=yplane+10 END IF END IF ELSE NoPlane=-1 END IF END IF IF NOT NoParat THEN LINE(xparat-1,yparat-1)-STEP(2,2),0,BF ParaQuedas=yparat>=100 IF ParaQuedas THEN LINE(xparat-10,yparat-20)-STEP(20,18),0,BF yparat=yparat+3+2*ParaQuedas IF POINT(xparat,yparat+1)=0 THEN IF ParaQuedas THEN LINE(xparat,yparat)-STEP(-10,-10),2 LINE(xparat,yparat)-STEP(10,-10),2 LINE(xparat,yparat)-STEP(0,-10),2 CIRCLE(xparat,yparat-10),10,1,-.000001,-180*PiFactor# PAINT(xparat,yparat-12),1,1 END IF LINE(xparat-1,yparat-1)-(xparat+1,yparat+1),3,BF ELSEIF yparat>180 THEN yparat=yparat-1 LINE(xparat-1,yparat-1)-STEP(2,2),3,BF IF xparat>139 AND xparat<181 THEN Acertou 0!+xparat,0!+yparat,4 pts=pts-10 IF pts<0 THEN EXIT DO ELSE pdc=pdc+1 IF pdc=5 AND NOT MovParat THEN MovParat=-1:pdi=5 Pdx(pdc)=xparat:Pdy(pdc)=yparat END IF NoParat=-1 END IF END IF IF MovParat THEN FOR i=1 TO pdc xpdc=Pdx(i):ypdc=Pdy(i) LINE(xpdc-1,ypdc-1)-STEP(2,2),0,BF NEXT xpdc=Pdx(pdi) stp=SGN(160-xpdc) xpdc=xpdc+2*stp Pdx(pdi)=xpdc kx=xpdc:ky=Pdy(pdi) FOR i=1 TO pdc xpdc=Pdx(i):ypdc=Pdy(i) LINE(xpdc-1,ypdc-1)-STEP(2,2),3,BF NEXT IF kx>139 AND kx<181 THEN FOR i=1 TO 100 SOUND i*4!+37,i*.001 PSET(INT(RND*40)+140,INT(RND*20)+170),INT(RND*4) NEXT GET(140,171)-(180,190),Qdr pdi=pdi-1 IF pdi=0 THEN Acertou 160,160,40:EXIT DO END IF END IF LINE(140,170)-(180,150),0,BF PUT(140,171),Qdr,PSET CIRCLE(160,170),t1,1,-.0000001,-180*PiFactor# PAINT(160,169),1,1 rad!=alfa*PiFactor# cr!=COS(rad!):sr!=SIN(rad!) x1!=t1*cr!:y1!=t1*sr! x2!=t2*cr!:y2!=t2*sr! x3!=t3*cr!:y3!=t3*sr! FOR tx=0 TO 1:FOR ty=0 TO 1 LINE(160+x1!+tx,170-y1!+ty)-(160+x2!+tx,170-y2!+ty) NEXT ty,tx xp!=160+x3!:yp!=170-y3! aalfa=alfa SELECT CASE INKEY$ CASE "":EXIT DO CASE kleft$:d=2 CASE kright$:d=-2 CASE kslow$:Velocity=Velocity-5:IF Velocity<5 THEN Velocity=5 CASE kfast$:Velocity=Velocity+5:IF Velocity>300 THEN Velocity=300 CASE kfire$ IF pts>0 THEN pts=pts-1 IF tiro THEN LINE(x!,y!)-STEP(1,1),0,B tiro=-1:t!=0:Angle!=alfa*PiFactor#:x!=xp!:y!=yp!:xi!=x!:yi!=y!:InitXVel!=COS(Angle!)*Velocity:InitYVel!=SIN(Angle!)*Velocity END IF END SELECT alfa=alfa+d IF alfa>175 OR alfa<5 THEN alfa=alfa-d IF tiro THEN tt!=TIMER LINE(x!,y!)-STEP(1,1),0,B x!=xi!+(InitXVel!*t!)+(.5*(Wind/5)*t!*t!) y!=yi!+((-1*(InitYVel!*t!))+(.5*gravity!*t!*t!))*(4/7) t!=t!+.1 cor=POINT(x!,y!) IF(cor>0 AND y!>=100)OR(cor>1 AND y!<100 AND y!>7)OR x!<0 OR x!>319 THEN Acertou x!,y!,4 aalfa=5 tiro=0 IF x!>139 AND x!<181 AND y!>148 AND y!<172 THEN pts=pts-5 IF pts<0 THEN EXIT DO ELSEIF NOT NoPlane AND x!>=xplane-1 AND x!<=xplane+25 AND y!>=yplane-1 AND y!<=yplane+10 THEN LINE(xplane,yplane)-STEP(24,9),0,BF NoPlane=-1 pts=pts+15 ELSEIF NOT NoParat AND x!>=xparat-2+9*ParaQuedas AND x!<=xparat+2-9*ParaQuedas AND y!<=yparat+2 AND y!>=yparat-2+20*ParaQuedas THEN pts=pts+5-5*(cor=3) LINE(xparat-1,yparat-1)-STEP(2,2),0,BF IF ParaQuedas THEN LINE(xparat-10,yparat-20)-STEP(20,18),0,BF NoParat=-1 DelParat xparat ELSEIF y!>180 AND x!>=0 AND x!<=319 THEN DelParat CINT(x!) END IF LINE(0,190)-(319,199),1,BF ELSE LINE(x!,y!)-STEP(1,1),2,B END IF END IF LOOP SCREEN 0 WIDTH 80 IF pts<0 THEN pts=0 ?"Fim do jogo" ? ?"Pontos :";pts ? ?"Continua [S/N] ? "; DO:a$=UCASE$(INPUT$(1)):LOOP UNTIL a$="S" OR a$="N" IF a$="S" THEN 1 SYSTEM DATA 36 DATA 50,10,192,0,0,-4096,0,0,0,252,0,0,-256,192,0,0,-1,-1,255,-256,-1,-1,192,-1,-1,-3841,-256,-1,-1,252,-1,-1,-1,-256,-1,-1,-16129 DATA 50,10,0,0,0,192,0,0,-16381,0,0,3840,192,0,0,-16129,16128,-1,-1,192,-1,-1,-16129,-253,-1,-1,4032,-1,-1,-16129,-193,-1,-1,-64,-1,-1,-16129 SUB Acertou(x!,y!,rd!) PLAY "MBO0L32EFGEFDC" Inc!=.41 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 DelParat(x) SHARED Pdx(),Pdy(),pdc,MovParat 2 FOR i=1 TO pdc xpdc=Pdx(i):ypdc=Pdy(i) IF ABS(x-xpdc)<2 THEN Acertou 0!+xpdc,0!+ypdc,6 LINE(xpdc-1,ypdc-1)-STEP(2,2),0,BF FOR j=i TO pdc-1:Pdx(j)=Pdx(j+1):NEXT pdc=pdc-1 IF pdc<4 THEN MovParat=0 GOTO 2 END IF NEXT END SUB FUNCTION Seta$(n) SELECT CASE n CASE-5 TO-1:Seta$=""+STRING$(1-n,"-") CASE 1 TO 5:Seta$=STRING$(n-1,"-")+CHR$(26) END SELECT END FUNCTION