DECLARE SUB Delay(n!) DECLARE SUB CriarFiguras() DECLARE SUB Evento(p%) DEFINT A-Z '$STATIC CLS ?"Bot" ?"Definir teclas" ?"P/ cima :";:DO:kup$=INKEY$:LOOP WHILE kup$="":?"Ok" ?"P/ direita :";:DO:kright$=INKEY$:LOOP WHILE kright$="":?"Ok" ?"P/ esquerda :";:DO:kleft$=INKEY$:LOOP WHILE kleft$="":?"Ok" RANDOMIZE TIMER OPTION BASE 1 DIM Fig(52*8) SCREEN 1 CriarFiguras DIM Tela(15,9),aTela(15,9) 1 WINDOW SCREEN(0,0)-(319/20,199/20) ERASE Tela,aTela FOR x=1 TO 15:Tela(x,9)=3:NEXT Tela(5,3)=1 px=5:py=3:jump=0 LINE(0,.95)-(15.05,9.95),2,B d=1:vtr=0:Final=0:Chave=0:pt=0 Pontos=0:Vidas=5:ti!=TIMER DO FOR x=1 TO 15 FOR y=1 TO 9 IF Tela(x,y)<>aTela(x,y)THEN PUT(x-.95,y),Fig(52*Tela(x,y)+1),PSET aTela(x,y)=Tela(x,y) NEXT NEXT IF pt>0 THEN Evento pt:pt=0 LOCATE 1,1:?USING "Pontos : ####00 Vidas:#";Pontos;Vidas sec=180-CINT(TIMER-ti!) LOCATE 2,1:?USING "Tempo : ##m ##s";sec\60;sec MOD 60; IF sec=0 THEN EXIT DO Tela(px,py)=0 apx=px:apy=py SELECT CASE INKEY$ CASE "":EXIT DO CASE kup$ IF Tela(px,py+1)>0 THEN ct=3 CASE kright$ px=px+1 IF px=16 THEN px=1 ERASE Tela FOR x=1 TO 15:Tela(x,9)=3:NEXT FOR i=1 TO 35 x=INT(RND*15)+1 y=INT(RND*9)+1 Tela(x,y)=(INT(RND*3)+3)*INT(RND*2) NEXT Tela(1,9)=3 Tela(1,8)=0 vtr=vtr+1 IF vtr=16 THEN Tela(15,INT(RND*8)+1)=6 ELSEIF vtr=20 THEN Tela(15,INT(RND*8)+1)=7 END IF END IF d=1 CASE kleft$ px=px-1 IF px=0 THEN px=1 d=2 END SELECT pt=Tela(px,py+1) IF pt<>3 AND ct=0 THEN py=py+1:IF py=9 THEN EXIT DO IF ct>0 THEN py=py-1:ct=ct-1 IF py=0 THEN py=1 END IF IF Tela(px,py)=3 THEN px=apx:py=apy pt=Tela(px,py) IF pt=7 AND Chave THEN d=7 Tela(px,py)=d IF px<>apx OR py<>apy THEN Delay .1 LOOP UNTIL Vidas=0 OR Final SCREEN 0:WIDTH 80 ?"Fim do jogo" IF Final THEN ?"Parab‚ns, vocˆ venceu!!!" ?USING "Pontos : ####00";Pontos ? ?"Continua [S/N] ? "; DO:a$=UCASE$(INPUT$(1)):LOOP UNTIL a$="S" OR a$="N" IF a$="S" THEN SCREEN 1:GOTO 1 SYSTEM SUB CriarFiguras SHARED Fig() s=1 GET(0,0)-(19,19),Fig(s) LINE(7,7)-(12,17),1,BF LINE(2,15)-(17,15),2 CIRCLE(2,17),2,2 CIRCLE(17,17),2,2 LINE(2,19)-(17,19),2 LINE(2,17)-(17,17),2 LINE(7,2)-(12,6),2,BF PSET(11,3),0 LINE(9,9)-(6,12) LINE-(15,12) LINE-(17,10) LINE(15,12)-(17,14) LINE(9,0)-(9,1),3 s=s+52 GET(0,0)-(19,19),Fig(s) FOR x=0 TO 9 FOR y=0 TO 19 k=POINT(x,y) PSET(x,y),POINT(19-x,y) PSET(19-x,y),k NEXT y,x s=s+52 GET(0,0)-(19,19),Fig(s) CLS LINE(0,0)-(19,19),3,B PAINT(1,1),"Ì3" LINE(0,0)-(19,19),0,B,&H5555 s=s+52 GET(0,0)-(19,19),Fig(s) CLS CIRCLE(9,9),6,2 CIRCLE(9,9),5,2 LINE(8,3)-(10,4),3,BF s=s+52 GET(0,0)-(19,19),Fig(s) CLS LINE(0,0)-(19,19),3,B PAINT(1,1),"0" s=s+52 GET(0,0)-(19,19),Fig(s) CLS CIRCLE(9,4),3,1 CIRCLE(9,4),4,1 LINE(9,9)-(10,19),1,B LINE(11,13)-(13,14),1,B LINE(11,17)-(13,18),1,B s=s+52 GET(0,0)-(19,19),Fig(s) CLS LINE(0,0)-(19,19),1,BF LINE(3,3)-(16,9),2,B LINE(3,12)-(16,18),2,B LINE(17,10)-(18,11),3,B s=s+52 GET(0,0)-(19,19),Fig(s) CLS END SUB SUB Delay(n!) t!=TIMER:DO:LOOP UNTIL TIMER-t!>=n! END SUB SUB Evento(p) SHARED Pontos,Vidas,px,py,apx,apy,Fig(),Chave,Final SELECT CASE p CASE 4:Pontos=Pontos+1:PLAY "MFo4l24cfgb" CASE 5:Vidas=Vidas-1:PUT(px-.95,py),Fig(261),XOR:PLAY "MFo2l24cdecdc":PUT STEP(0,0),Fig(261),XOR CASE 6:Chave=-1:PLAY "MFo4l24cefgbo5fgab" CASE 7:IF Chave THEN Final=-1:PLAY "MFo4l12cdefcg" ELSE px=apx:py=apy END SELECT END SUB