DECLARE SUB Tiro(direct%,lin%,col%) DECLARE SUB CENTER(row%,TEXT$) DECLARE SUB MSGBOX(TEXT$) DEFINT A-Z DECLARE SUB Programa() DECLARE SUB DrawScreen() DECLARE SUB set(row%,col%,acolor%) DECLARE SUB InitColors() DECLARE FUNCTION PointIsThere%(row%,col%,acolor%) TYPE arenaType realRow AS INTEGER acolor AS INTEGER sister AS INTEGER END TYPE CONST TRUE=-1 CONST FALSE=NOT TRUE DIM SHARED arena(1 TO 50,1 TO 80)AS arenaType DIM SHARED ColorTable(10) MAXLENGHT=100 DIM SHARED L2(MAXLENGHT),C2(MAXLENGHT) FOR A=1 TO 6:READ ColorTable(A):NEXT 5 DrawScreen InitColors Programa MSGBOX "Continua ?[S/N] Z$=" WHILE Z$<>"S" AND Z$<>"N Z$=UCASE$(INPUT$(1)) WEND IF Z$="S" THEN 5 CLS COLOR 15,0 LOCATE 23,1 SYSTEM mono:DATA 15,7,15,0,15,0 normal:DATA 14,13,12,1,15,0 SYSTEM SUB CENTER(row,TEXT$) LOCATE row,41-LEN(TEXT$)/2 ?TEXT$; END SUB SUB DrawScreen VIEW ? COLOR ColorTable(1),ColorTable(4) CLS LOCATE 11,29:?"Inicializando tela . . . FOR row=1 TO 50 FOR col=1 TO 80 arena(row,col).realRow=INT((row+1)/2) arena(row,col).sister=(row MOD 2)*2-1 NEXT col,row END SUB SUB InitColors FOR row=1 TO 50 FOR col=1 TO 80 arena(row,col).acolor=ColorTable(4) NEXT col,row COLOR 15,0 CLS FOR col=1 TO 80 set 3,col,ColorTable(3) set 50,col,ColorTable(3) NEXT col FOR row=4 TO 49 set row,1,ColorTable(3) set row,80,ColorTable(3) NEXT row END SUB SUB MSGBOX(TEXT$) COLOR ColorTable(5),ColorTable(6) K=LEN(TEXT$)+2 CENTER 11,STRING$(K,220) CENTER 13,STRING$(K,223) CENTER 12,"Û"+TEXT$+"Û SLEEP 5 FOR A=11 TO 13 CENTER A,SPACE$(K) NEXT A END SUB FUNCTION PointIsThere(row,col,acolor) IF row<>0 THEN IF arena(row,col).acolor<>acolor THEN PointIsThere=TRUE ELSE PointIsThere=FALSE END IF END IF END FUNCTION SUB Programa 2 L=25 C=40 D=3 TAM=0 NONUM=TRUE DO COLOR 15,0 LOCATE 1,1:?"VIDAS :";10-V LOCATE 1,40:?USING "#######00";Pontos 1 K$=UCASE$(INKEY$) AL=L AC=C SELECT CASE K$ CASE CHR$(0)+"G":IF D AND D<>1 THEN D=0 CASE CHR$(0)+"O":IF D<>1 AND D THEN D=1 CASE CHR$(0)+"S":IF D<>2 AND D<>3 THEN D=2 CASE CHR$(0)+"Q":IF D<>3 AND D<>2 THEN D=3 CASE " ":Tiro D,L,C CASE CHR$(27):EXIT SUB END SELECT SELECT CASE D CASE 0:L=L-1 CASE 1:L=L+1 CASE 2:C=C-1 CASE 3:C=C+1 END SELECT FOR A=1 TO 1000:NEXT IF PointIsThere(L,C,ColorTable(1))THEN set L,C,ColorTable(1) Pontos=Pontos+1 ELSE PLAY "MBO0L16>CCCE MSGBOX "Voce bateu !!! InitColors V=V+1 GOTO 2 END IF IF V=10 THEN MSGBOX "Voce perdeu !!!":EXIT SUB LOOP END SUB SUB set(row,col,acolor) IF row<>0 THEN arena(row,col).acolor=acolor realRow=arena(row,col).realRow topFlag=arena(row,col).sister+1/2 sisterRow=row+arena(row,col).sister sisterColor=arena(sisterRow,col).acolor LOCATE realRow,col IF acolor=sisterColor THEN COLOR acolor,acolor ?CHR$(219); ELSE IF topFlag THEN IF acolor>7 THEN COLOR acolor,sisterColor ?CHR$(223); ELSE COLOR sisterColor,acolor ?CHR$(220); END IF ELSE IF acolor>7 THEN COLOR acolor,sisterColor ?CHR$(220); ELSE COLOR sisterColor,acolor ?CHR$(223); END IF END IF END IF END IF END SUB SUB Tiro(direct,lin,col) IF direct=0 THEN FOR linha=4 TO lin-1 set linha,col,ColorTable(4) NEXT ELSEIF direct=1 THEN FOR linha=lin+1 TO 49 set linha,col,ColorTable(4) NEXT ELSEIF direct=2 THEN FOR coluna=2 TO col-1 set lin,coluna,ColorTable(4) NEXT ELSEIF direct=3 THEN FOR coluna=col+1 TO 79 set lin,coluna,ColorTable(4) NEXT END IF END SUB