DECLARE SUB Delay(n!) DECLARE SUB ApInimigo(x%,y%) DECLARE SUB CriarFiguras() DECLARE FUNCTION Angulo!(gr!) DEFINT A-Z OPTION BASE 1 '$DYNAMIC DIM Tela#(2001) OPEN "PacBug.CGF" FOR RANDOM AS #1 LEN=8 FOR i=1 TO LOF(1)/8 GET #1,SEEK(1),Tela#(i) NEXT CLOSE #1 CLS ?"PacBug" ?"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" SCREEN 1 PUT(0,0),Tela#,PSET PLAY "MFt120o1l16b9n0baan0bn0bn0baaan0b9n0baan0b" PLAY "o2l16e-9n0e-d-d-n0e-n0e-n0e-d-d-d-n0e-9n0e-d-d-n0e-" PLAY "o2l16g-9n0g-een0g-n0g-n0g-eeen0g-9n0g-een0g-" PLAY "o2l16b9n0baan0g-n0g-n0g-eeen0o1b9n0baan0b" a$=INPUT$(1) FOR s=0 TO 7 Delay .1 FOR x=s TO 319 STEP 8 LINE(x,0)-(x,199),0 NEXT x,s '$STATIC RANDOMIZE TIMER MaxEn=5:MaxPrl=10 DIM Figura(52*9),Tela(30,18) TYPE Enem x AS INTEGER y AS INTEGER d AS INTEGER ax AS INTEGER ay AS INTEGER END TYPE DIM e(MaxEn)AS Enem DIM f(4):f(1)=1:f(2)=0:f(3)=-1:f(4)=0 CriarFiguras 1 SCREEN 1 ERASE Tela ajx=2:ajy=1:jx=1:jy=1 VIEW(1,9)-(302,190),,2 SELECT CASE INT(RND*2) CASE 0:RESTORE m00 CASE 1:RESTORE m01 END SELECT FOR my=1 TO 6 FOR mx=1 TO 10 READ r nx=mx*3-2:ny=my*3-2 Tela(nx,ny)=1:Tela(nx,ny+2)=1:Tela(nx+2,ny)=1:Tela(nx+2,ny+2)=1 nx=nx+1:ny=ny+1 FOR i=1 TO 4 Tela(nx+f(i),ny+f(i MOD 4+1))=r MOD 2 r=r\2 NEXT NEXT NEXT FOR i=1 TO MaxPrl FOR j=0 TO 5 DO:Prlx=INT(RND*30)+1:Prly=INT(RND*18+1):LOOP WHILE Tela(Prlx,Prly)>0 OR(Prlx=2 AND Prly=5) Tela(Prlx,Prly)=7-(j=0) NEXT NEXT apx=2:apy=5:px=2:py=2:dir=2:Ponto=0:Vida=5 ti!=TIMER:dly!=.2/.9 2 FOR i=1 TO MaxEn DO:e(i).x=INT(RND*30)+1:e(i).y=INT(RND*18+1):LOOP WHILE Tela(e(i).x,e(i).y)>0 OR(e(i).x<4 AND e(i).y<4) e(i).ax=2:e(i).ay=5 e(i).d=INT(RND*4) NEXT dly!=dly!*.9 DO LOCATE 1,1:?USING "Pontos:####00 Vidas:#";Ponto;Vida IF ajx<>jx OR ajy<>jy THEN Tela(apx,apy)=0 Tela(px,py)=dir FOR vx=1 TO 15 FOR vy=1 TO 9 PUT(20*vx-19,20*vy-19),Figura(52*Tela(vx+jx-1,vy+jy-1)+1),PSET NEXT NEXT ajx=jx:ajy=jy:apx=px:apy=py:adir=dir ELSEIF apx<>px OR apy<>py OR dir<>adir THEN Tela(apx,apy)=0 SELECT CASE Tela(px,py) CASE 7:Ponto=Ponto+1:PLAY "MFo4l32cgab" CASE 8:Ponto=Ponto+5:PLAY "MFo5l32cfgbgfc" END SELECT Tela(px,py)=dir PUT(20*(apx-jx+1)-19,20*(apy-jy+1)-19),Figura(1),PSET PUT(20*(px-jx+1)-19,20*(py-jy+1)-19),Figura(52*dir+1),PSET apx=px:apy=py:adir=dir END IF IF TIMER-ti!>=dly! THEN ti!=TIMER FOR i=1 TO MaxEn kx=e(i).x:ky=e(i).y e(i).ax=kx:e(i).ay=ky rvt=0 akx=kx:aky=ky SELECT CASE e(i).d CASE 0:kx=kx-1:IF kx=0 THEN kx=1:rvt=-1 CASE 1:ky=ky-1:IF ky=0 THEN ky=1:rvt=-1 CASE 2:ky=ky+1:IF ky=19 THEN ky=18:rvt=-1 CASE 3:kx=kx+1:IF kx=31 THEN kx=30:rvt=-1 END SELECT pt=Tela(kx,ky) IF pt=1 OR pt=6 OR pt=7 OR pt=8 THEN kx=akx:ky=aky IF kx=px AND ky=py THEN Vida=Vida-1:PLAY "MFo2l32bagfedc" IF rvt THEN e(i).d=3-e(i).d IF INT(RND*5)=4 THEN IF px=kx THEN IF py-1 AND e(i).ax-jx<15 AND e(i).ay-jy>-1 AND e(i).ay-jy<9 THEN PUT(20*(e(i).ax-jx+1)-19,20*(e(i).ay-jy+1)-19),Figura(1),PSET IF e(i).x-jx>-1 AND e(i).x-jx<15 AND e(i).y-jy>-1 AND e(i).y-jy<9 THEN PUT(20*(e(i).x-jx+1)-19,20*(e(i).y-jy+1)-19),Figura(313),PSET NEXT END IF SELECT CASE INKEY$ CASE kup$ dir=3 py=py-1:IF pyjy+8 THEN py=jy+8:jy=jy+1:IF jy>10 THEN jy=10 CASE kleft$ dir=4 px=px-1:IF pxjx+14 THEN px=jx+14:jx=jx+1:IF jx>16 THEN jx=16 CASE "" EXIT DO END SELECT IF Tela(px,py)=1 THEN SELECT CASE dir CASE 3 FOR zy=py-1 TO 1 STEP-1 p=Tela(px,zy) IF p=0 OR p=6 THEN EXIT FOR NEXT IF zy>0 THEN IF p=6 THEN ApInimigo px,zy FOR wy=zy TO py-1 Tela(px,wy)=Tela(px,wy+1) NEXT ajy=jy+1 ELSE py=apy END IF CASE 5 FOR zy=py+1 TO 18 p=Tela(px,zy) IF p=0 OR p=6 THEN EXIT FOR NEXT IF zy<19 THEN IF p=6 THEN ApInimigo px,zy FOR wy=zy TO py+1 STEP-1 Tela(px,wy)=Tela(px,wy-1) NEXT ajy=jy+1 ELSE py=apy END IF CASE 4 FOR zx=px-1 TO 1 STEP-1 p=Tela(zx,py) IF p=0 OR p=6 THEN EXIT FOR NEXT IF zx>0 THEN IF p=6 THEN ApInimigo zx,py FOR wx=zx TO px-1 Tela(wx,py)=Tela(wx+1,py) NEXT ajy=jy+1 ELSE px=apx END IF CASE 2 FOR zx=px+1 TO 30 p=Tela(zx,py) IF p=0 OR p=6 THEN EXIT FOR NEXT IF zx<31 THEN IF p=6 THEN ApInimigo zx,py FOR wx=zx TO px+1 STEP-1 Tela(wx,py)=Tela(wx-1,py) NEXT ajy=jy+1 ELSE px=apx END IF END SELECT END IF LOOP UNTIL Vida=0 OR MaxEn=0 IF MaxEn=0 THEN MaxEn=5:GOTO 2 SCREEN 0:WIDTH 80 ?"Fim do jogo" ?USING "Pontos :####00";Ponto ?"Continua [S/N] ? "; DO:a$=UCASE$(INPUT$(1)):LOOP UNTIL a$="S" OR a$="N":?a$ IF a$="S" THEN 1 SYSTEM DATA 4,9,9,13,13,9,9,4 '5,10,0,9,12,6,3,8,4,2,1 'º Í Î ¼ È É » Ê Ì Ë ¹ m00: DATA 10,2,2,10,2,3,0,0,0,0 DATA 6,0,8,3,12,9,0,0,0,0 DATA 12,9,6,8,3,0,0,0,0,0 DATA 0,0,12,10,9,0,0,0,0,0 DATA 0,0,0,0,0,0,0,0,0,0 DATA 0,0,0,0,0,0,0,0,0,0 m01: DATA 3,6,3,6,3,6,3,6,3,6 DATA 0,0,0,0,0,0,0,0,0,0 DATA 5,5,5,5,5,5,5,5,5,5 DATA 5,5,5,5,5,5,5,5,5,5 DATA 0,0,0,0,0,0,0,0,0,0 DATA 12,9,12,9,12,9,12,9,12,9 DEFSNG A-Z FUNCTION Angulo!(gr!) Angulo!=gr!*3.141592653589793#/180 END FUNCTION DEFINT A-Z SUB ApInimigo(x,y) SHARED Ponto,MaxEn,e()AS Enem PLAY "MFo5l32cdefgabfabf" Ponto=Ponto+10 FOR i=1 TO MaxEn IF x=e(i).x AND y=e(i).y THEN EXIT FOR NEXT MaxEn=MaxEn-1 FOR j=i TO MaxEn e(j)=e(j+1) NEXT END SUB SUB CriarFiguras SHARED Figura() GET(0,0)-(19,19),Figura(1) LINE(0,0)-(19,19),1,B LINE(1,1)-(18,18),3,B LINE(2,2)-(17,17),1,BF LINE(5,5)-(14,14),2,BF GET(0,0)-(19,19),Figura(53) LOCATE 10,1:?"Bloco";:PLAY "MBo2l10cfe" Delay 2 l1!=45:l2!=315:l3=105 PLAY "MBo2l10cfe" FOR i=1 TO 4 CLS LOCATE 10,1:?"Pac-Bug"; CIRCLE(9.5,9.5),9,2,-Angulo!(l1! MOD 360),-Angulo!(l2! MOD 360),1 READ c,d:PAINT(c,d),1,2 GET(0,0)-(19,19),Figura(l3) l1!=l1!+90:l2!=l2!+90:l3=l3+52 Delay .25 NEXT CLS CIRCLE(9.5,9.5),9,1,,,1 LINE(1,10)-(18,10),1 CIRCLE(6,8),2,1 CIRCLE(14,8),2,1 CIRCLE(3,17),2,1 CIRCLE(17,17),2,1 PAINT(9,4),1,1 PAINT(9,14),2,1 LINE(10,2)-(10,18),0 GET(0,0)-(19,19),Figura(l3) LOCATE 10,1:?"Monstro";:PLAY "MBo2l10cfe" Delay 2 l3=l3+52 CLS LINE(6,7)-(13,12),1,BF LINE(7,6)-(12,13),1,BF LINE(10,8)-STEP(1,1),3,BF GET(0,0)-(19,19),Figura(l3) LOCATE 10,1:?"Perola (1 ponto)";:PLAY "MBo2l10cfe" Delay 2 l3=l3+52 CLS LINE(6,8)-(13,8),2 LINE-(15,10),2 LINE-(10,15),2 LINE-(9,15),2 LINE-(4,10),2 LINE-(6,8),2 PAINT(9,9),2,2 LINE(13,9)-(14,10),1 LINE-(10,14),1 GET(0,0)-(19,19),Figura(l3) LOCATE 10,1:?"Diamante (5 pontos)";:PLAY "MBo2l10cfe" Delay 2 CLS END SUB SUB Delay(n!) t!=TIMER:DO:LOOP UNTIL TIMER-t!>=n! END SUB