DECLARE SUB Explode (li%, co%, n%) DECLARE SUB Barra (n%) CLEAR , , 16384 RANDOMIZE TIMER DEFINT A-Z VIEW PRINT 1 TO 25 CLS LOCATE 1, 1: PRINT STRING$(80, 219); FOR i = 2 TO 24 LOCATE i, 1: PRINT "Û"; SPACE$(78); "Û"; NEXT LOCATE 25, 1: PRINT STRING$(80, 219); FOR i = 1 TO 100 DO lx = INT(RND * 25) + 1: cx = INT(RND * 80) + 1 LOOP WHILE SCREEN(lx, cx) <> 32 LOCATE lx, cx: PRINT "þ"; NEXT OPTION BASE 1 DIM l(2), c(2), d(2) DIM al(2), ac(2) al(1) = 24: ac(1) = 2 al(2) = 2: ac(2) = 79 l(1) = 24: c(1) = 2: d(1) = 2 l(2) = 2: c(2) = 79: d(2) = 3 t! = TIMER DO LOCATE 2, 79: PRINT " "; LOCATE 24, 2: PRINT " "; FOR i = 1 TO 2 LOCATE al(i), ac(i): PRINT " "; COLOR 23 - 8 * i, 0 LOCATE l(i), c(i): PRINT CHR$(24 + d(i)); al(i) = l(i): ac(i) = c(i) NEXT 1 k$ = UCASE$(INKEY$) IF TIMER - t! > 1 THEN DO lx = INT(RND * 25) + 1: cx = INT(RND * 80) + 1 LOOP WHILE SCREEN(lx, cx) <> 32 LOCATE lx, cx: PRINT "þ"; t! = TIMER END IF SELECT CASE k$ CASE "": GOTO 1 CASE "": EXIT DO CASE "W": l(1) = l(1) - 1: d(1) = 0 CASE "S": l(1) = l(1) + 1: d(1) = 1 CASE "A": c(1) = c(1) - 1: d(1) = 3 CASE "D": c(1) = c(1) + 1: d(1) = 2 CASE "O": l(2) = l(2) - 1: d(2) = 0 CASE "L": l(2) = l(2) + 1: d(2) = 1 CASE "K": c(2) = c(2) - 1: d(2) = 3 CASE ";": c(2) = c(2) + 1: d(2) = 2 CASE " ": Barra 1 CASE CHR$(13): Barra 2 END SELECT IF (l(1) = 2 AND c(1) = 79) THEN x = 1: EXIT DO IF (l(2) = 24 AND c(2) = 2) THEN x = 2: EXIT DO FOR i = 1 TO 2 p = SCREEN(l(i), c(i)) IF p = 254 THEN PLAY "MFo4l24cdfgb": Explode l(i), c(i), i ELSE IF p <> 32 AND p <> 180 - 2 * i THEN l(i) = al(i): c(i) = ac(i) NEXT FOR i = 1 TO 2 l = l(i): c = c(i) RESTORE variacao ct = 0 FOR j = 1 TO 4 READ vl, vc IF SCREEN(l + vl, c + vc) = 174 + 2 * i THEN ct = ct + 1 NEXT IF ct = 4 THEN x = 3 - i: EXIT DO NEXT LOOP CLS IF x THEN PRINT "Jogador"; x; " venceu" END IF PRINT PRINT "Joga de novo [sn]?"; DO: n$ = UCASE$(INPUT$(1)): LOOP UNTIL n$ = "S" OR n$ = "N" IF n$ = "S" THEN RUN SYSTEM variacao: DATA-1,0,1,0,0,-1,0,1 SUB Barra (n) SHARED l(), c(), d() lx = l(n) cx = c(n) SELECT CASE d(n) CASE 0: vl = -1: vc = 0 CASE 1: vl = 1: vc = 0 CASE 2: vl = 0: vc = 1 CASE 3: vl = 0: vc = -1 END SELECT DO lx = lx + vl: cx = cx + vc IF SCREEN(lx, cx) <> 32 THEN EXIT DO LOCATE lx, cx: PRINT CHR$(180 - 2 * n); LOOP END SUB SUB Explode (li, co, n) STATIC ctd LOCATE li, co: PRINT " "; ctd = ctd + 1 IF ctd = 50 THEN EXIT SUB FOR l = li - 2 TO li + 2 FOR c = co - 2 TO co + 2 IF l > 2 AND l < 25 AND c > 0 AND c < 81 THEN px = SCREEN(l, c) IF px = 254 THEN Explode l, c, n ELSEIF px <> 180 - 2 * n AND px <> 219 THEN LOCATE l, c: PRINT " "; END IF END IF NEXT NEXT ctd = ctd - 1 END SUB