'-----------------------------------' 'PixFight 3.0 ' 'Copyright (c) WendelSoft, 1997-2001' 'Wendel Scardua ' '-----------------------------------' DECLARE SUB Explode (lm%, cm%, i%) DECLARE FUNCTION LastKey$ (n%) DECLARE FUNCTION KeyName$ (k$) DECLARE FUNCTION GetKey$ (n%) DECLARE SUB Setkey (vKey$) DECLARE FUNCTION MakeCode$ (a$, b$, c$) DECLARE FUNCTION RNAt$ (expr$, p%) DECLARE SUB VerifyCombo () DECLARE SUB Esteira () DECLARE SUB EscolheTela () DECLARE SUB Prender (pl%, pc%) DECLARE SUB FazerTiro () DECLARE SUB Config () DECLARE SUB Tiro (n%) DECLARE SUB Descer (n%) DECLARE SUB Evento (n%, i%) DECLARE SUB Box (l1%, c1%, l2%, c2%, char$, f%) 1 CLEAR , , 16384 DEF SEG = 0 DEFINT A-Z RANDOMIZE TIMER OPTION BASE 1 DIM SHARED SoundF DIM Pix(2), l(2), c(2), al(2), ac(2), jump(2), spd(2), dir(2), fc(2), qtf(4, 2), arr(2, 4), v(2), vnsh(2) DIM EstL(5), EstC(5), EstD(5), EstT$(5), Lateral(2), ctiro(2) DIM Combo(2) AS STRING, Code(6) AS STRING * 3, tCode(6, 2) AS STRING SoundF = -1 PLAY "MB" RESTORE ComboKeys READ m FOR i = 1 TO m: READ Code(i): NEXT FOR i = 1 TO 5 EstT$(i) = "Í--Í--Í--" NEXT dir(1) = 1: dir(2) = -1: v(1) = 100: v(2) = 100 al(1) = 1: ac(1) = 1: al(2) = 1: ac(2) = 1: fc(1) = 1: fc(2) = 1 VIEW PRINT 1 TO 25 Config WIDTH 40 COLOR 7, 1 EscolheTela ta! = TIMER h = 10: dh = 1 DO FOR j = 1 TO 2 FOR i = 1 TO 4 IF i = fc(j) THEN COLOR 15, 1 LOCATE 1, 3 * i + 20 * j - 21: PRINT USING "##"; qtf(i, j) COLOR 7, 1 NEXT LOCATE 1, 3 * i + 20 * j - 21: PRINT USING "<###%>"; v(j); NEXT t! = TIMER: DO: LOOP UNTIL TIMER - t! >= .025 iterflag = (iterflag + 1) MOD 30 IF iterflag = 0 THEN Combo(1) = "......": Combo(2) = "......" FOR i = 1 TO 2 IF l(i) <> al(i) OR c(i) <> ac(i) THEN IF SCREEN(al(i), ac(i)) = 3 - i THEN LOCATE al(i), ac(i): PRINT " "; LOCATE l(i), c(i): PRINT CHR$(3 - i); al(i) = l(i): ac(i) = c(i) NEXT IF TIMER - ta! >= 2 THEN ta! = TIMER DO lx = INT(RND * 24) + 2 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx) = 32 LOCATE lx, cx SELECT CASE INT(RND * 8) CASE 0: IF INT(RND * 10) = 4 THEN PRINT "!"; ELSE PRINT "þ"; CASE 1: PRINT ""; CASE 2: PRINT ""; CASE 3: PRINT ""; CASE 4: PRINT ""; CASE 5: PRINT ""; CASE 6: IF INT(RND * 4) = 1 THEN PRINT "?"; ELSE PRINT "þ"; CASE 7: PRINT "ð"; END SELECT END IF Lateral(1) = -1: Lateral(2) = -1 Esteira k$ = INKEY$ IF INSTR(allkeys1$, k$) > 0 AND k$ <> "" THEN Combo(1) = MID$(Combo(1), 3) + LEFT$(k$ + "..", 2) IF INSTR(allkeys2$, k$) > 0 AND k$ <> "" THEN Combo(2) = MID$(Combo(2), 3) + LEFT$(k$ + "..", 2) VerifyCombo SELECT CASE k$ CASE kup1$: IF SCREEN(l(1) + 1, c(1)) <> 32 THEN jump(1) = 5 CASE kdown1$: IF jump(1) > 0 THEN jump(1) = 0 ELSE Descer 1 CASE kleft1$: dir(1) = -1: IF spd(1) = 0 AND Lateral(1) THEN c(1) = c(1) - 1 CASE kright1$: dir(1) = 1: IF spd(1) = 0 AND Lateral(1) THEN c(1) = c(1) + 1 CASE krun1$: spd(1) = NOT spd(1) CASE kfire1$: Tiro 1 CASE CHR$(0) + ";" TO CHR$(0) + ">": fc(1) = ASC(RIGHT$(k$, 1)) - 58 CASE kup2$: IF SCREEN(l(2) + 1, c(2)) <> 32 THEN jump(2) = 5 CASE kdown2$: IF jump(2) > 0 THEN jump(2) = 0 ELSE Descer 2 CASE kleft2$: dir(2) = -1: IF spd(2) = 0 AND Lateral(2) THEN c(2) = c(2) - 1 CASE kright2$: dir(2) = 1: IF spd(2) = 0 AND Lateral(2) THEN c(2) = c(2) + 1 CASE krun2$: spd(2) = NOT spd(2) CASE kfire2$: Tiro 2 CASE CHR$(0) + "?" TO CHR$(0) + "B": fc(2) = ASC(RIGHT$(k$, 1)) - 62 CASE CHR$(0) + "C", CHR$(0) + "D": fc(2) = ASC(RIGHT$(k$, 1)) - 66 CASE CHR$(0) + CHR$(133), CHR$(0) + CHR$(134): fc(2) = ASC(RIGHT$(k$, 1)) - 130 CASE CHR$(9): SoundF = NOT SoundF CASE "": EXIT DO END SELECT FOR i = 1 TO 2 FazerTiro NEXT FOR i = 1 TO 2 apl = al(i): apc = ac(i) pl = l(i): pc = c(i) IF spd(i) AND Lateral(i) THEN pc = pc + dir(i) IF SCREEN(pl, pc) = 32 THEN IF pc >= 39 THEN pc = 3 IF pc <= 2 THEN pc = 38 END IF p = SCREEN(pl + 1, pc) IF jump(i) > 0 THEN jump(i) = jump(i) - 1 pl = pl - 1 ELSEIF INSTR("!#*þ<>ð" + CHR$(26), CHR$(p)) > 0 THEN Evento p, i pl = pl + 1 LOCATE pl, pc: PRINT " "; ELSEIF p = 4 OR p = 63 THEN l(i) = pl: c(i) = pc: al(i) = apl: ac(i) = apc Evento p, i pl = l(i): pc = c(i): apl = al(i): apc = ac(i) ELSEIF p = 32 THEN pl = pl + 1 END IF IF pl <> apl OR pc <> apc THEN p = SCREEN(pl, pc) SELECT CASE p CASE 32: CASE 240: Evento p, i CASE 178, 177: LOCATE pl, pc: PRINT CHR$(p - 1); : pl = apl: pc = apc CASE 176: LOCATE pl, pc: PRINT " "; : pl = apl: pc = apc CASE 33, 18, 8, 24, 35, 42, 254, 15, 60, 62, 26, 27: Evento p, i CASE 63, 4: l(i) = pl: c(i) = pc: al(i) = apl: ac(i) = apc: Evento p, i: pl = l(i): pc = c(i): apl = al(i): apc = ac(i) CASE ELSE: pl = apl: pc = apc: IF spd(i) THEN dir(i) = -dir(i) END SELECT END IF IF SCREEN(pl, pc) = 32 THEN IF pc >= 39 THEN pc = 3 IF pc <= 2 THEN pc = 38 END IF k = -1 FOR vl = pl - 1 TO pl + 1 FOR vc = pc - 1 TO pc + 1 IF vl <> pl OR vc <> pc THEN px = SCREEN(vl, vc): k = k AND (px = 219 OR px = 255 OR px = 45 OR px = 205 OR px = 250) NEXT NEXT IF k THEN v(i) = v(i) - 1 l(i) = pl: c(i) = pc NEXT LOOP UNTIL v(1) <= 0 OR v(2) <= 0 WIDTH 80 COLOR 7, 0 CLS PRINT "Fim do jogo" PRINT IF v(1) <= 0 AND v(2) <= 0 THEN PRINT "Empate" ELSEIF v(2) <= 0 THEN PRINT "Jogador 1 venceu :"; v(1); "%" ELSEIF v(1) <= 0 THEN PRINT "Jogador 2 venceu :"; v(2); "%" END IF PRINT PRINT "Continua [S/N] ? "; DO: a$ = UCASE$(INPUT$(1)): LOOP UNTIL a$ = "S" OR a$ = "N" PRINT a$ IF a$ = "S" THEN 1 SYSTEM EstNiv1: DATA 0 EstNiv2: DATA 2,15,12,1,15,21,-1 EstNiv3: DATA 3,10,10,-1,15,19,1,12,30,-1 EstNiv4: DATA 5,12,16,-1,8,3,-1,8,30,1,18,3,1,18,30,-1 EstNiv5: DATA 4,15,12,-1,15,21,1,19,4,1,11,29,-1 EstNiv6: DATA 0 EstNiv7: DATA 0 EstNiv8: DATA 3,14,7,1,14,16,-1,14,25,1 EstNiv9: DATA 4,22,16,-1,18,17,1,14,16,-1,10,17,1 EstNiv10: DATA 0 ComboKeys: DATA 4,DDU,UDF,DRF,DLF SUB Box (l1, c1, l2, c2, char$, f) ff = -(f <> 0) IF char$ = "" THEN char$ = "ÚÄ¿³ÙÄÀ³" + SPACE$(ff) char$ = LEFT$(char$ + SPACE$(8 + ff), 8 + ff) DIM chrl(1 TO 8 + ff) AS STRING * 1 FOR i = 1 TO 8 + ff: chrl(i) = MID$(char$, i, 1): NEXT ln = c2 - c1 - 1 LOCATE l1, c1: PRINT chrl(1); STRING$(ln, chrl(2)); chrl(3); LOCATE l2, c1: PRINT chrl(7); STRING$(ln, chrl(6)); chrl(5); IF f THEN FOR l = l1 + 1 TO l2 - 1 LOCATE l, c1: PRINT chrl(8); STRING$(ln, chrl(9)); chrl(4); NEXT ELSE FOR l = l1 + 1 TO l2 - 1 LOCATE l, c1: PRINT chrl(8); LOCATE l, c2: PRINT chrl(4); NEXT END IF END SUB SUB Config SHARED Pix(), Combo() AS STRING, Code() AS STRING * 3, tCode() AS STRING SHARED kup1$, kdown1$, kleft1$, kright1$, kfire1$, krun1$, allkeys1$ SHARED kup2$, kdown2$, kleft2$, kright2$, kfire2$, krun2$, allkeys2$ SHARED ctiro() COLOR 15, 1 CLS PRINT "PixFight 3.0" PRINT "Definir teclas:" PRINT "Jogador 1:" PRINT "P/ cima :"; : Setkey kup1$ IF kup1$ = CHR$(0) + ";" THEN PRINT " Configura‡ao default de teclas - pressione alguma tecla..." k$ = INPUT$(1) kup1$ = "w" kdown1$ = "s" kleft1$ = "a" kright1$ = "d" kfire1$ = "e" krun1$ = " " kup2$ = CHR$(0) + "G" kdown2$ = CHR$(0) + "O" kleft2$ = CHR$(0) + "S" kright2$ = CHR$(0) + "Q" kfire2$ = CHR$(0) + "I" krun2$ = CHR$(13) ELSE PRINT "P/ baixo :"; : Setkey kdown1$ PRINT "P/ direita :"; : Setkey kright1$ PRINT "P/ esquerda :"; : Setkey kleft1$ PRINT "Tiro :"; : Setkey kfire1$ PRINT "Correr :"; : Setkey krun1$ PRINT PRINT "Jogador 2:" PRINT "P/ cima :"; : Setkey kup2$ PRINT "P/ baixo :"; : Setkey kdown2$ PRINT "P/ direita :"; : Setkey kright2$ PRINT "P/ esquerda :"; : Setkey kleft2$ PRINT "Tiro :"; : Setkey kfire2$ PRINT "Correr :"; : Setkey krun2$ END IF allkeys1$ = kup1$ + "ÿ" + kdown1$ + "ÿ" + kleft1$ + "ÿ" + kright1$ + "ÿ" + kfire1$ + "ÿ" + krun1$ allkeys2$ = kup2$ + "ÿ" + kdown2$ + "ÿ" + kleft2$ + "ÿ" + kright2$ + "ÿ" + kfire2$ + "ÿ" + krun2$ Combo(1) = "......" Combo(2) = "......" FOR i = 1 TO 4 FOR j = 1 TO 2 tCode(i, j) = RNAt(Code(i), j) NEXT NEXT CLS LOCATE 1, 1: PRINT "PixFight 3.0"; LOCATE 3, 1 PRINT "Jogo de luta entre pixies." PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄ" PRINT "Pixie ³Tecnica ³P/ atingir³Detonar³P/ prisao" PRINT " 1) ³Flecha que prende ³ -1 ³ --- ³ -1 " PRINT " 2) ³Bomba ³ -10 ³ --- ³ --- " PRINT " 3) ³Mina ³ -5 ³ -10 ³ --- " PRINT " 4) ³Bumerangue que prende ³ -1 ³ --- ³ -1 " PRINT " 5) ³Mina que prende ³ -5 ³ -10 ³ -1 " PRINT " 6) ³Flecha com parede ³ -1 ³ --- ³ -1 " PRINT " 7) ³Bumerangue com rastro de mina ³ -1 ³ -10 ³ --- " PRINT " 8) ³Bomba com caixa, curto alcance ³ -10 ³ --- ³ --- " PRINT " 9) ³Soco com rastro de mina ³ -10 ³ -10 ³ --- " PRINT "10) ³Chute com rastro de mina ³ -10 ³ -10 ³ --- " PRINT "11) ³Campo de for‡a com reflexao ³ -10 ³ --- ³ --- " PRINT "12) ³Congelamento ³ -10 ³ --- ³ -1 " PRINT "13) ³Bloco de minas ³ -10 ³ -10 ³ --- " PRINT "14) ³Prende em bloco invisivel ³ -1 ³ --- ³ -1 " PRINT "15) ³Poder psiquico com barreira ³ -15 ³ -10 ³ --- " PRINT "16) ³Randomico ³ --- ³ --- ³ --- " PRINT "17) ³Terremoto ³ -10 ³ --- ³ --- " PRINT "18) ³1 a 17 ³ --- ³ --- ³ --- " PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄ" maxpix = 18 FOR i = 1 TO 2 DO PRINT USING "Jogador #_, escolha seu pixie (1-##) :"; i; maxpix; INPUT "", n LOOP WHILE n < 1 OR n > maxpix Pix(i) = n ctiro(i) = 1 NEXT CLS PRINT "Teclas :" PRINT " Fun‡oes" PRINT "1§ F1 F2 F3 F4" PRINT "2§ F5 F6 F7 F8" PRINT PRINT "Fun‡oes: 1 - Barra horizontal (þ=1)" PRINT " 2 - Bloco (=5)" PRINT " 3 - Tiro (=5)" PRINT " 4 - Escada (=1)" PRINT " Maximo : 99" PRINT "Energia: () Maximo : 100%" PRINT "Obs: () inverte a tela" PRINT " (*) mina de explosao" PRINT " (#) mina de prisao" PRINT " (ð) bomba apagadora" PRINT "Pressione alguma tecla para continuar ..."; a$ = INPUT$(1) END SUB SUB Descer (n) SHARED l(), c() l = l(n): c = c(n) l = l + 1 p = SCREEN(l, c) SELECT CASE p CASE 177, 178: LOCATE l, c: PRINT CHR$(p - 1); : l = l - 1 CASE 176: LOCATE l, c: PRINT " "; : l = l - 1 CASE 32 CASE 33, 18, 8, 24, 35, 42, 254, 15, 60, 62, 26, 27: Evento p, n CASE 4, 63: l(n) = l: c(n) = c: Evento p, n: l = l(n): c = c(n) CASE ELSE: l = l - 1 END SELECT l(n) = l: c(n) = c END SUB SUB EscolheTela SHARED EstN, EstL(), EstC(), EstD(), EstT$(), l(), c() n$ = EstT$(1) telaN = 1 DO CLS LOCATE 1, 4: PRINT "Espa‡o p/ mudar, ENTER p/ escolher"; Box 2, 2, 25, 39, "ÛÛÛÛÛÛÛÛ", 0 SELECT CASE telaN CASE 1 l(1) = 24: c(1) = 3 l(2) = 24: c(2) = 38 RESTORE EstNiv1 FOR i = 3 TO 24 LOCATE i, 20: PRINT "ÛÛ"; NEXT CASE 2 l(1) = 24: c(1) = 3 l(2) = 24: c(2) = 38 RESTORE EstNiv2 CASE 3 l(1) = 7: c(1) = 14 l(2) = 9: c(2) = 34 RESTORE EstNiv3 FOR x = 16 TO 24 LOCATE x, 3: PRINT STRING$(36, 42); NEXT CASE 4 l(1) = 11: c(1) = 20 l(2) = 11: c(2) = 21 RESTORE EstNiv4 LOCATE 3, 3: PRINT STRING$(36, 35); LOCATE 24, 3: PRINT STRING$(36, 35); LOCATE 4, 3: PRINT STRING$(36, 42); LOCATE 23, 3: PRINT STRING$(36, 42); CASE 5 l(1) = 14: c(1) = 19 l(2) = 14: c(2) = 22 RESTORE EstNiv5 FOR x = 3 TO 5 LOCATE x, 3: PRINT STRING$(16, 42); SPC(4); STRING$(16, 42); NEXT FOR x = 22 TO 24 LOCATE x, 3: PRINT STRING$(16, 42); SPC(4); STRING$(16, 42); NEXT FOR i = 3 TO 24 IF i <> 15 THEN LOCATE i, 20: PRINT "ÛÛ"; NEXT CASE 6 l(1) = 24: c(1) = 3 l(2) = 24: c(2) = 38 RESTORE EstNiv6 FOR i = 15 TO 24 LOCATE i, 2: PRINT " "; LOCATE , 39: PRINT " "; NEXT CASE 7 l(1) = 24: c(1) = 3 l(2) = 24: c(2) = 38 FOR i = 1 TO 400 ll = INT(RND * 23 + 2) cc = INT(RND * 38 + 2) IF SCREEN(ll, cc) = 32 THEN LOCATE ll, cc SELECT CASE INT(RND * 8) CASE 0: IF INT(RND * 10) = 4 THEN PRINT "!"; ELSE PRINT "þ"; CASE 1: PRINT ""; CASE 2: PRINT ""; CASE 3: PRINT ""; CASE 4: PRINT ""; CASE 5: PRINT ""; CASE 6: IF INT(RND * 4) = 1 THEN PRINT "?"; ELSE PRINT "þ"; CASE 7: PRINT "ð"; END SELECT END IF NEXT RESTORE EstNiv7 CASE 8 l(1) = 3: c(1) = 3 l(2) = 24: c(2) = 38 RESTORE EstNiv8 LOCATE 13, 3: PRINT STRING$(5, 219); LOCATE 15, 33: PRINT STRING$(6, 219); CASE 9 l(1) = 24: c(1) = 3 l(2) = 24: c(2) = 38 RESTORE EstNiv9 FOR i = 3 TO 24 IF i MOD 3 > 0 THEN LOCATE i, 2: PRINT " "; LOCATE , 39: PRINT " "; END IF NEXT CASE 10 l(1) = 3: c(1) = 3 l(2) = 24: c(2) = 38 RESTORE EstNiv10 FOR i = 3 TO 24 LOCATE i, 2: PRINT " "; LOCATE , 39: PRINT " "; NEXT LOCATE 13, 2: PRINT STRING$(38, "Û"); LOCATE 14, 2: PRINT STRING$(38, "Û"); END SELECT FOR i = 1 TO 2 LOCATE l(i), c(i): PRINT CHR$(3 - i); NEXT READ EstN FOR i = 1 TO EstN READ EstL(i), EstC(i), EstD(i) LOCATE EstL(i), EstC(i): PRINT n$; NEXT SELECT CASE INPUT$(1) CASE CHR$(13): EXIT DO CASE " ": telaN = telaN + 1: IF telaN = 11 THEN telaN = 1 END SELECT LOOP LOCATE 1, 1: PRINT SPACE$(19); "ÛÛ"; SPACE$(19); END SUB SUB Esteira STATIC count SHARED EstL(), EstC(), EstD(), EstT$(), EstN, c(), Lateral() count = count + 1 IF count = 1 THEN count = -4 FOR i = 1 TO EstN li = EstL(i): ci = EstC(i): d = EstD(i): t$ = EstT$(i) IF d = -1 THEN t$ = MID$(t$, 2) + LEFT$(t$, 1) ELSE t$ = LEFT$(RIGHT$(t$, 1) + t$, LEN(t$)) LOCATE li, ci: PRINT t$; REDIM vp(2) vp(1) = -1: vp(2) = -1 FOR cx = ci TO ci + 8 p = SCREEN(li - 1, cx) IF (p = 1 OR p = 2) THEN IF vp(p) THEN vp(p) = 0: c(3 - p) = c(3 - p) + d: Lateral(3 - p) = 0 NEXT EstT$(i) = t$ NEXT END IF END SUB SUB Evento (n, i) SHARED qtf(), l(), c(), al(), ac(), v(), arr(), jump(), vnsh(), EstN, EstL(), EstC() IF SoundF THEN SOUND 1000, .33 SOUND 850, .34 SOUND 1150, .33 END IF SELECT CASE n CASE 60, 62, 26, 27: qtf(3, i) = qtf(3, i) + 1 CASE 254: qtf(1, i) = qtf(1, i) + 1 CASE 8: qtf(2, i) = qtf(2, i) + 5 CASE 18: qtf(3, i) = qtf(3, i) + 5 CASE 24: qtf(4, i) = qtf(4, i) + 1 CASE 240 lx = l(i): cx = c(i) Explode lx, cx, i CASE 63 DO lx = INT(RND * 24) + 2 cx = INT(RND * 38) + 2 LOOP UNTIL SCREEN(lx, cx) = 32 l(i) = lx: c(i) = cx CASE 15: v(i) = v(i) + 5 IF SoundF THEN SOUND 2000, .33: SOUND 1850, .34: SOUND 2150, .33 IF v(i) > 100 THEN v(i) = 100 CASE 42: v(i) = v(i) - 10: jump(i) = 30: IF SoundF THEN PLAY "MBO0L32EFGEFDC" CASE 33: vnsh(i) = NOT vnsh(i) CASE 35 v(i) = v(i) - 10: jump(i) = 30: IF SoundF THEN PLAY "MBO0L32EFGEFDC" Prender l(i), c(i) CASE 4 FOR j = 1 TO 2 IF c(j) > 2 AND c(j) < 39 AND l(j) > 2 AND l(j) < 25 THEN LOCATE l(j), c(j): PRINT " "; LOCATE al(j), ac(j): PRINT " "; NEXT ss = 700 FOR c = 3 TO 38 IF SoundF THEN SOUND ss, .1 ss = 1600 - ss FOR l = 3 TO 13 n$ = CHR$(SCREEN(l, c)) LOCATE l, c: PRINT CHR$(SCREEN(27 - l, c)); LOCATE 27 - l, c: PRINT n$; NEXT NEXT FOR j = 1 TO 2: l(j) = 27 - l(j): al(j) = 27 - al(j): arr(j, 1) = 27 - arr(j, 1): NEXT FOR j = 1 TO EstN EstL(j) = 27 - EstL(j) NEXT END SELECT FOR j = 1 TO 4 IF qtf(j, i) > 99 THEN qtf(j, i) = 99 NEXT END SUB SUB Explode (lm, cm, i) SHARED v() FOR ln = lm - 2 TO lm + 2 IF ln > 2 AND ln < 25 THEN FOR cn = cm - 2 TO cm + 2 IF cn > 2 AND cn < 39 THEN p = SCREEN(ln, cn) IF p <> 240 AND p > 2 THEN LOCATE ln, cn: PRINT CHR$(180 - 2 * i); END IF NEXT END IF NEXT IF SoundF THEN PLAY "MBO0L32EFGEFDC" LOCATE lm, cm: PRINT " "; FOR ln = lm - 2 TO lm + 2 IF ln > 2 AND ln < 25 THEN FOR cn = cm - 2 TO cm + 2 IF cn > 2 AND cn < 39 THEN p = SCREEN(ln, cn) IF p = 240 THEN Explode ln, cn, i ELSEIF p = i THEN v(3 - i) = v(3 - i) - 5 LOCATE ln, cn: PRINT " "; ELSE LOCATE ln, cn: PRINT " "; END IF END IF NEXT END IF NEXT END SUB SUB FazerTiro SHARED v(), i, Pix(), arr(), ctiro() n = Pix(i) IF n = 11 THEN n = Pix(3 - i) an = n IF n = 18 THEN n = ctiro(i) - 1 IF n = 0 THEN n = 17 END IF IF n = 16 THEN n = INT(RND * 15) + 1 IF n <> 8 AND pct > 4 THEN pct = 4 IF n = 9 OR n = 10 OR n = 11 OR n = 17 THEN n = 2 pl = arr(i, 1): pc = arr(i, 2): pd = arr(i, 3): pc1 = arr(i, 4): pct = pc1 MOD 100: pc1 = pc1 \ 100 IF pd THEN LOCATE pl, pc SELECT CASE n CASE 3, 7: PRINT "*"; CASE 12: PRINT "Û"; CASE 15: PRINT "ú"; CASE 18: IF pc MOD 2 = 0 THEN PRINT "ð"; ELSE PRINT "°"; CASE ELSE: PRINT " "; END SELECT pc = pc + pd IF SCREEN(pl, pc) = 32 AND (pc >= 39 OR pc <= 2) THEN IF pc <= 2 THEN pc = 38: pd = -1 ELSE pc = 3: pd = 1 END IF ELSE IF an = 16 THEN IF pc >= 39 THEN pc = 38 IF pc <= 2 THEN pc = 3 END IF END IF p = SCREEN(pl, pc) IF n = 8 THEN pct = pct + 1 IF pct >= 10 THEN p = 0 END IF SELECT CASE p CASE 240 Explode pl, pc, i CASE 250 pl = pl + (n = 3 OR n = 7 OR n = 12 OR n = 15 OR an = 16) IF pl < 3 THEN pl = 2: pd = 0 pc = pc - pd pd = -pd CASE 63 DO lx = INT(RND * 24) + 2 cx = INT(RND * 38) + 2 LOOP UNTIL SCREEN(lx, cx) = 32 pl = lx: pc = cx CASE 32 IF SoundF THEN SOUND 100 * ABS(pc1 - pc), .1 LOCATE pl, pc SELECT CASE n CASE 1, 6: IF pd = 1 THEN PRINT CHR$(26); ELSE PRINT ""; CASE 12: PRINT CHR$(219); CASE 15: PRINT "*"; CASE ELSE: IF pd = 1 THEN PRINT ">"; ELSE PRINT "<"; END SELECT CASE ELSE IF SoundF THEN PLAY "MBO0L32EFGEFDC" SELECT CASE n CASE 1 IF p = 1 OR p = 2 THEN v(3 - p) = v(3 - p) - 1 Prender pl, pc pd = 0 CASE 2 l1 = pl - 4: c1 = pc - 4: l2 = pl + 4: c2 = pc + 4 IF l1 < 3 THEN l1 = 3 IF l2 > 24 THEN l2 = 24 IF c1 < 3 THEN c1 = 3 IF c2 > 38 THEN c2 = 38 FOR l = l1 TO l2 FOR c = c1 TO c2 p = SCREEN(l, c) IF p = 1 OR p = 2 THEN v(3 - p) = v(3 - p) - 10 LOCATE l, c: PRINT " "; NEXT NEXT pd = 0 CASE 3 IF p = 1 OR p = 2 THEN v(3 - p) = v(3 - p) - 5 pd = 0 CASE 4 IF p = 1 OR p = 2 THEN v(3 - p) = v(3 - p) - 1: pct = 5 ELSE pct = pct + 1 IF pct < 5 THEN pd = -pd: pc = pc + pd: pl = pl - 1: IF SCREEN(pl, pc) <> 32 THEN pl = pl + 1: pct = 5 END IF IF pct = 5 THEN Prender pl, pc pd = 0 END IF CASE 5 IF p = 1 OR p = 2 THEN v(3 - p) = v(3 - p) - 5 pc = pc - pd IF pc >= 39 THEN pc = 3 IF pc <= 2 THEN pc = 38 LOCATE pl, pc: PRINT "#"; pd = 0 CASE 6 IF p = 1 OR p = 2 THEN v(3 - p) = v(3 - p) - 1 Prender pl, pc ELSE DIM tl(2), tf(2) tl(1) = pl - 1: tl(2) = pl + 1: tf(1) = -1: tf(2) = 1 pc = pc - pd IF pc <= 2 THEN pc = 38 IF pc >= 39 THEN pc = 3 LOCATE pl, pc: PRINT "Û"; DO FOR k = 1 TO 2 f1 = tf(k) IF f1 THEN l1 = tl(k) p = SCREEN(l1, pc) SELECT CASE p CASE 1, 2: v(3 - p) = v(3 - p) - 1: Prender l1, pc CASE 32: LOCATE l1, pc: PRINT "Û"; CASE ELSE: f1 = 0 END SELECT l1 = l1 + f1 IF l1 < 3 OR l1 > 24 THEN f1 = 0 tf(k) = f1: tl(k) = l1 END IF NEXT LOOP UNTIL tf(1) = 0 AND tf(2) = 0 END IF pd = 0 CASE 7 IF p = 1 OR p = 2 THEN v(3 - p) = v(3 - p) - 1: pct = 5 ELSE pct = pct + 1 IF pct < 5 THEN pd = -pd: pc = pc + pd: pl = pl - 1: IF SCREEN(pl, pc) <> 32 THEN pl = pl + 1: pct = 5 END IF IF pct = 5 THEN Prender pl, pc pd = 0 END IF CASE 8 l1 = pl - 4: c1 = pc - 4: l2 = pl + 4: c2 = pc + 4 IF l1 < 3 THEN l1 = 3 IF l2 > 24 THEN l2 = 24 IF c1 < 3 THEN c1 = 3 IF c2 > 38 THEN c2 = 38 FOR l = l1 TO l2 FOR c = c1 TO c2 p = SCREEN(l, c) IF p = 1 OR p = 2 THEN v(3 - p) = v(3 - p) - 10 LOCATE l, c: PRINT " "; NEXT NEXT Box l1, c1, l2, c2, STRING$(8, 219), 0 pd = 0 CASE 12 IF p = 1 OR p = 2 THEN v(3 - p) = v(3 - p) - 10 Prender pl, pc pd = 0 CASE 13 IF p = 1 OR p = 2 THEN v(3 - p) = v(3 - p) - 10 l1 = pl - 2: c1 = pc - 2: l2 = pl + 2: c2 = pc + 2 IF l1 < 3 THEN l1 = 3 IF l2 > 24 THEN l2 = 24 IF c1 < 3 THEN c1 = 3 IF c2 > 38 THEN c2 = 38 Box l1, c1, l2, c2, STRING$(8, "*"), 0 pd = 0 CASE 14 IF p = 1 OR p = 2 THEN v(3 - p) = v(3 - p) - 1 l1 = pl - 2: c1 = pc - 2: l2 = pl + 2: c2 = pc + 2 IF l1 < 3 THEN l1 = 3 IF l2 > 24 THEN l2 = 24 IF c1 < 3 THEN c1 = 3 IF c2 > 38 THEN c2 = 38 Box l1, c1, l2, c2, STRING$(9, 255), 1 pd = 0 CASE 15 IF p = 1 OR p = 2 THEN v(3 - p) = v(3 - p) - 15 pd = 0 CASE 18 IF p = 1 OR p = 2 THEN v(3 - p) = v(3 - p) - 10: pct = 5 ELSE pd = 0 END SELECT END SELECT arr(i, 1) = pl: arr(i, 2) = pc: arr(i, 3) = pd: arr(i, 4) = 100 * pc1 + pct END IF END SUB FUNCTION GetKey$ (n) a = PEEK(1050) b = PEEK(1052) IF a = b THEN GetKey$ = "": EXIT FUNCTION IF n = 2 THEN GetKey$ = CHR$(PEEK(1024 + a)) + CHR$(PEEK(1025 + a)) ELSE GetKey$ = CHR$(PEEK(1024 + a + n)) a = a + 2 IF a = 62 THEN a = 30 POKE 1050, a END FUNCTION FUNCTION KeyName$ (k$) IF k$ = "" THEN EXIT FUNCTION r$ = "" a = ASC(k$) b = ASC(RIGHT$(k$, 1)) IF b = 0 THEN r$ = "Ascii-" + MID$(STR$(a), 2) IF r$ = "" THEN n& = 1000& * a + b SELECT CASE n& 'Basic keys-------------------------------- CASE 13028: r$ = "Enter" CASE 10028: r$ = "Ctrl-Enter" CASE 240028: r$ = "Alt-Enter" CASE 27001: r$ = "Escape" CASE 240001: r$ = "Alt-Escape" CASE 32057: r$ = "Space" CASE 15: r$ = "Shift+Tab" CASE 148: r$ = "Ctrl+Tab" CASE 165: r$ = "Alt+Tab" CASE 9015: r$ = "Tab" CASE 8014: r$ = "Backspace" CASE 127014: r$ = "Ctrl+Backspace" CASE 240014: r$ = "Alt+Backspace" CASE 30: r$ = "Alt+A" CASE 48: r$ = "Alt+B" CASE 46: r$ = "Alt+C" CASE 32: r$ = "Alt+D" CASE 18: r$ = "Alt+E" CASE 33: r$ = "Alt+F" CASE 34: r$ = "Alt+G" CASE 35: r$ = "Alt+H" CASE 23: r$ = "Alt+I" CASE 36: r$ = "Alt+J" CASE 37: r$ = "Alt+K" CASE 38: r$ = "Alt+L" CASE 50: r$ = "Alt+M" CASE 49: r$ = "Alt+N" CASE 24: r$ = "Alt+O" CASE 25: r$ = "Alt+P" CASE 16: r$ = "Alt+Q" CASE 19: r$ = "Alt+R" CASE 31: r$ = "Alt+S" CASE 20: r$ = "Alt+T" CASE 22: r$ = "Alt+U" CASE 47: r$ = "Alt+V" CASE 17: r$ = "Alt+W" CASE 45: r$ = "Alt+X" CASE 21: r$ = "Alt+Y" CASE 44: r$ = "Alt+Z" CASE 120 TO 129: r$ = "Alt+" + MID$(STR$((b + 1) MOD 10), 2) CASE 130: r$ = "Alt+ -" CASE 131: r$ = "Alt+=" CASE 240026: r$ = "Alt+[" CASE 240027: r$ = "Alt+]" CASE 240039: r$ = "Alt+;" CASE 240040: r$ = "Alt+'" CASE 240041: r$ = "Alt+`" CASE 240051: r$ = "Alt+," CASE 240052: r$ = "Alt+." CASE 240053: r$ = "Alt+/" CASE 240043: r$ = "Alt-\" CASE 31012: r$ = "Ctrl- -" CASE 27026: r$ = "Ctrl-[" CASE 29027: r$ = "Ctrl-]" CASE 28043: r$ = "Ctrl-\" CASE 3: r$ = "Ctrl-2" CASE 30007: r$ = "Ctrl-6" 'Function keys----------------------------- CASE 59 TO 68: r$ = "F" + MID$(STR$(b - 58), 2) CASE 133: r$ = "F11" CASE 134: r$ = "F12" CASE 84 TO 93: r$ = "Shift+F" + MID$(STR$(b - 83), 2) CASE 135: r$ = "Shift+F11" CASE 136: r$ = "Shift+F12" CASE 94 TO 103: r$ = "Ctrl+F" + MID$(STR$(b - 93), 2) CASE 137: r$ = "Ctrl+F11" CASE 138: r$ = "Ctrl+F12" CASE 104 TO 113: r$ = "Alt+F" + MID$(STR$(b - 103), 2) CASE 139: r$ = "Alt+F11" CASE 140: r$ = "Alt+F12" 'Directional keys-------------------------- CASE 224072: r$ = "Up" CASE 224080: r$ = "Down" CASE 224075: r$ = "Left" CASE 224077: r$ = "Right" CASE 224082: r$ = "Insert" CASE 224083: r$ = "Delete" CASE 224071: r$ = "Home" CASE 224079: r$ = "End" CASE 224073: r$ = "Page Up" CASE 224081: r$ = "Page Down" CASE 224141: r$ = "Ctrl+Up" CASE 224145: r$ = "Ctrl+Down" CASE 224115: r$ = "Ctrl+Left" CASE 224116: r$ = "Ctrl+Right" CASE 224146: r$ = "Ctrl+Insert" CASE 224147: r$ = "Ctrl+Delete" CASE 224119: r$ = "Ctrl+Home" CASE 224117: r$ = "Ctrl+End" CASE 224132: r$ = "Ctrl+Page Up" CASE 224118: r$ = "Ctrl+Page Down" CASE 152: r$ = "Alt+Up" CASE 160: r$ = "Alt+Down" CASE 155: r$ = "Alt+Left" CASE 157: r$ = "Alt+Right" CASE 162: r$ = "Alt+Insert" CASE 163: r$ = "Alt+Delete" CASE 151: r$ = "Alt+Home" CASE 159: r$ = "Alt+End" CASE 153: r$ = "Alt+Page Up" CASE 161: r$ = "Alt+Page Down" 'Pad keys---------------------------------- CASE 13224: r$ = "Pad-Enter" CASE 10224: r$ = "Ctrl+Pad-Enter" CASE 166: r$ = "Alt+Pad-Enter" CASE 48082, 49079, 50080, 51081, 52075, 53076, 54077, 55071, 56072, 57073 r$ = "Pad-" + MID$(STR$(a - 48), 2) CASE 240076 r$ = "Pad-Center" CASE 146: r$ = "Ctrl+Pad-0" CASE 117: r$ = "Ctrl+Pad-1" CASE 145: r$ = "Ctrl+Pad-2" CASE 118: r$ = "Ctrl+Pad-3" CASE 115: r$ = "Ctrl+Pad-4" CASE 143: r$ = "Ctrl+Pad-5" CASE 116: r$ = "Ctrl+Pad-6" CASE 119: r$ = "Ctrl+Pad-7" CASE 141: r$ = "Ctrl+Pad-8" CASE 132: r$ = "Ctrl+Pad-9" CASE 46083, 43078, 45074, 42055, 47224: r$ = "Pad- " + CHR$(a) CASE 147: r$ = "Ctrl+Pad-." CASE 144: r$ = "Ctrl+Pad- +" CASE 142: r$ = "Ctrl+Pad- -" CASE 150: r$ = "Ctrl+Pad- *" CASE 149: r$ = "Ctrl+Pad- /" CASE 240078: r$ = "Alt+Pad- +" CASE 240074: r$ = "Alt+Pad- -" CASE 240055: r$ = "Alt+Pad- *" CASE 164: r$ = "Alt+Pad- /" CASE 72: r$ = "Pad-Up" CASE 80: r$ = "Pad-Down" CASE 75: r$ = "Pad-Left" CASE 77: r$ = "Pad-Right" CASE 82: r$ = "Pad-Insert" CASE 83: r$ = "Pad-Delete" CASE 71: r$ = "Pad-Home" CASE 79: r$ = "Pad-End" CASE 73: r$ = "Pad-Page Up" CASE 81: r$ = "Pad-Page Down" END SELECT END IF IF r$ = "" AND a > 0 THEN IF a < 27 THEN r$ = "Ctrl+" + CHR$(a + 64) ELSE r$ = CHR$(a) END IF END IF KeyName$ = r$ END FUNCTION FUNCTION LastKey$ (n) a = PEEK(1050) b = PEEK(1052) IF a = b THEN LastKey$ = "": EXIT FUNCTION b = b - 2 IF b < 30 THEN b = 60 IF n = 2 THEN LastKey$ = CHR$(PEEK(1024 + b)) + CHR$(PEEK(1025 + b)) ELSE LastKey$ = CHR$(PEEK(1024 + b + n)) END FUNCTION FUNCTION MakeCode$ (a$, b$, c$) MakeCode$ = LEFT$(a$ + ".", 2) + LEFT$(b$ + ".", 2) + LEFT$(c$ + ".", 2) END FUNCTION SUB Prender (pl, pc) l1 = pl - 2: c1 = pc - 2: l2 = pl + 2: c2 = pc + 2 IF l1 < 3 THEN l1 = 3 IF l2 > 24 THEN l2 = 24 IF c1 < 3 THEN c1 = 3 IF c2 > 38 THEN c2 = 38 Box l1, c1, l2, c2, STRING$(9, 219), 1 END SUB FUNCTION RNAt$ (expr$, p) SHARED kup1$, kdown1$, kleft1$, kright1$, kfire1$, krun1$, allkeys1$ SHARED kup2$, kdown2$, kleft2$, kright2$, kfire2$, krun2$, allkeys2$ ret$ = "" FOR i = 1 TO 3 k$ = MID$(expr$, i, 1) SELECT CASE k$ + STR$(p) CASE "D 1": k$ = kdown1$ CASE "U 1": k$ = kup1$ CASE "L 1": k$ = kleft1$ CASE "R 1": k$ = kright1$ CASE "F 1": k$ = kfire1$ CASE "S 1": k$ = krun1$ CASE "D 2": k$ = kdown2$ CASE "U 2": k$ = kup2$ CASE "L 2": k$ = kleft2$ CASE "R 2": k$ = kright2$ CASE "F 2": k$ = kfire2$ CASE "S 2": k$ = krun2$ END SELECT ret$ = ret$ + LEFT$(k$ + ".", 2) NEXT RNAt$ = ret$ END FUNCTION SUB Setkey (vKey$) DO: nKey$ = KeyName$(LastKey$(2)): LOOP WHILE nKey$ = "" PRINT nKey$ vKey$ = INKEY$ IF nKey$ = "Escape" THEN RUN END SUB SUB Tiro (n) SHARED al(), ac(), l(), c(), dir(), fc(), qtf(), arr(), vnsh(), Pix(), v(), jump() SHARED ctiro() j = qtf(fc(n), n) IF j = 0 THEN EXIT SUB qtf(fc(n), n) = j - 1 l = l(n): c = c(n): d = dir(n) SELECT CASE fc(n) CASE 1 i = 200 DO c = c + d IF SCREEN(l, c) <> 32 THEN EXIT DO IF c >= 39 THEN c = 3 IF c <= 2 THEN c = 38 LOCATE l, c: IF vnsh(n) THEN PRINT "ÿ"; ELSE PRINT "²"; IF SoundF THEN SOUND i, .1 i = i + 100 LOOP CASE 2 IF SoundF THEN PLAY "MBO3L32EFGEFDC" l1 = l - 2: c1 = c - 2: l2 = l + 2: c2 = c + 2 IF l1 < 3 THEN l1 = 3 IF l2 > 24 THEN l2 = 24 IF c1 < 3 THEN c1 = 3 IF c2 > 38 THEN c2 = 38 FOR l = l1 TO l2 FOR c = c1 TO c2 LOCATE l, c SELECT CASE SCREEN(l, c) CASE 219, 32, 255, 250: PRINT "°"; CASE 176: PRINT "±"; CASE 177: PRINT "²"; CASE 178: PRINT "Û"; END SELECT NEXT NEXT CASE 3 Pixn = Pix(n) IF Pixn = 18 THEN Pixn = ctiro(n): ctiro(n) = ctiro(n) MOD 17 + 1 IF Pixn = 16 THEN Pixn = INT(RND * 15) + 1 SELECT CASE Pixn CASE 9'chan IF l(1) = l(2) AND c(3 - n) = c + d THEN c2 = 33 * (d + 1) \ 2 + 4 FOR z = c + d TO c2 STEP d LOCATE l, z: PRINT "*"; NEXT ac(3 - n) = c2 + d: c(3 - n) = c2 + d v(3 - n) = v(3 - n) - 10 IF SoundF THEN PLAY "MBo1l24cdefg" END IF CASE 10'lee IF l(1) = l(2) AND c(3 - n) = c + d THEN FOR z = 5 TO l - 1 LOCATE z, c + d: PRINT "*"; NEXT LOCATE l, c + d: PRINT " "; LOCATE 4, c + d: PRINT CHR$(176); al(3 - n) = 3: l(3 - n) = 3 v(3 - n) = v(3 - n) - 10 IF SoundF THEN PLAY "MBo1l24cdefg" END IF CASE 11'campo l1 = l - 4: c1 = c - 4: l2 = l + 4: c2 = c + 4 IF l1 < 3 THEN l1 = 3 IF l2 > 24 THEN l2 = 24 IF c1 < 3 THEN c1 = 3 IF c2 > 38 THEN c2 = 38 Box l1, c1, l2, c2, SPACE$(8), 1 IF SoundF THEN PLAY "MBO0L32EFGEFDC" IF l(3 - n) >= l1 AND l(3 - n) <= l2 AND c(3 - n) >= c1 AND c(3 - n) <= c2 THEN jump(3 - n) = 30: v(3 - n) = v(3 - n) - 10 ELSEIF arr(3 - n, 3) THEN IF arr(3 - n, 1) >= l1 AND arr(3 - n, 1) <= l2 AND arr(3 - n, 2) >= c1 AND arr(3 - n, 2) <= c2 THEN arr(n, 3) = -arr(3 - n, 3) arr(3 - n, 3) = 0 px = Pix(3 - n) arr(n, 1) = arr(3 - n, 1) + (px = 3 OR px = 7 OR px = 12 OR px = 15): IF arr(n, 1) < 3 THEN arr(n, 1) = 3 arr(n, 2) = arr(3 - n, 2) arr(n, 4) = arr(3 - n, 4) END IF END IF CASE 12'gelo k = SCREEN(l + 1, c) IF k = 32 THEN arr(n, 1) = l: arr(n, 2) = c: arr(n, 3) = d: arr(n, 4) = 100 * c ELSE IF SoundF THEN PLAY "MBO0L32cdefgabo5b" FOR w = -1 TO 1 STEP 2 kc = c DO WHILE SCREEN(l + 1, kc) <> 32 AND kc > 2 AND kc < 39 FOR y = -1 TO 1 STEP 2 kl = l + 1 DO WHILE kl > 2 AND kl < 26 SELECT CASE SCREEN(kl, kc) CASE 32: EXIT DO CASE n: Prender kl, kc END SELECT LOCATE kl, kc: PRINT CHR$(219); kl = kl + y LOOP NEXT kc = kc + w LOOP NEXT END IF CASE 15'psychic xc = c + d IF xc < 3 THEN xc = 3 IF xc > 38 THEN xc = 38 FOR xl = l - 2 TO l + 2 IF xl > 2 AND xl < 25 THEN IF SCREEN(xl, xc) = 32 THEN LOCATE xl, xc: PRINT "±"; IF SoundF THEN SOUND 1500 + 250 * RND, .5 t! = TIMER: DO: LOOP UNTIL TIMER - t! >= .1 LOCATE xl, xc: PRINT CHR$(250); END IF END IF arr(n, 1) = l: arr(n, 2) = xc: arr(n, 3) = d: arr(n, 4) = 100 * c NEXT CASE 17'Terremoto k = SCREEN(l + 1, c) IF k = 32 THEN arr(n, 1) = l: arr(n, 2) = c: arr(n, 3) = d: arr(n, 4) = 100 * c ELSE IF SoundF THEN PLAY "MBO0L32cdefgab" FOR w = -1 TO 1 STEP 2 kc = c - (w = 1) DO WHILE SCREEN(l + 1, kc) <> 32 AND kc > 2 AND kc < 39 FOR y = -1 TO 1 STEP 2 kl = l + 1 DO WHILE kl > 2 AND kl < 26 SELECT CASE SCREEN(kl, kc) CASE 32: EXIT DO CASE n: v(3 - n) = v(3 - n) - 10 END SELECT IF kl <> 25 AND kc <> 3 AND kc <> 38 THEN LOCATE kl, kc: PRINT CHR$(32); kl = kl + y LOOP NEXT kc = kc + w LOOP NEXT END IF CASE ELSE'disparo arr(n, 1) = l: arr(n, 2) = c: arr(n, 3) = d: arr(n, 4) = 100 * c END SELECT CASE 4 i = 200 DO l = l - 1 c = c + d IF SCREEN(l, c) <> 32 THEN EXIT DO IF c <= 2 THEN c = 37 IF c >= 39 THEN c = 3 LOCATE l, c: IF vnsh(n) THEN PRINT "ÿ"; ELSE PRINT "²"; IF SCREEN(l, c + 1) = 32 AND c >= 38 THEN c = 2 LOCATE , c + 1 IF SCREEN(l, c + 1) = 32 THEN IF vnsh(n) THEN PRINT "ÿ"; ELSE PRINT "²"; IF SoundF THEN SOUND i, .1 i = i + 100 LOOP END SELECT END SUB SUB VerifyCombo SHARED Combo() AS STRING, Pix(), Code() AS STRING * 3, jump(), l(), c(), al(), ac(), v(), dir(), k$, fc(), tCode() AS STRING SHARED ctiro() FOR i = 1 TO 2 l = l(i): c = c(i): al = al(i): ac = ac(i): p = Pix(i) kp = p IF p = 18 THEN p = ctiro(i) IF p = 16 THEN p = INT(RND * 15) + 1 d = dir(i) resetcombo = 0 SELECT CASE Combo(i) CASE tCode(1, i) IF p = 15 THEN l(i) = l: c(i) = c: al(i) = al: ac(i) = ac Evento 63, i l = l(i): c = c(i): al = al(i): ac = ac(i) v(i) = v(i) - 1 IF v(i) < 1 THEN v(i) = 1 ELSE IF v(i) >= 10 THEN jump(i) = 20 v(i) = v(i) - 10 IF v(i) < 1 THEN v(i) = 1 END IF END IF resetcombo = -1 CASE tCode(2, i) IF p = 15 THEN IF v(i) >= 10 THEN c2 = c + d IF c2 >= 3 AND c2 <= 38 THEN LOCATE l, c2: PRINT CHR$(i); : v(i) = v(i) - 10 IF v(i) < 1 THEN v(i) = 1 END IF END IF ELSE IF v(i) >= 5 THEN t = SCREEN(3, c) FOR j = 3 TO 23 p = SCREEN(j + 1, c) IF p = 1 OR p = 2 THEN al(3 - p) = al(3 - p) - 1 IF al(3 - p) < 3 THEN al(3 - p) = 24 l(3 - p) = l(3 - p) - 1 IF l(3 - p) < 3 THEN l(3 - p) = 24 END IF LOCATE j, c: PRINT CHR$(p); NEXT LOCATE j, c: PRINT CHR$(t); l = l - 1 IF l < 3 THEN l = 24 al = al - 1 IF al < 3 THEN al = 24 v(i) = v(i) - 5 IF v(i) < 1 THEN v(i) = 1 jump(i) = 5 END IF END IF resetcombo = -1 CASE tCode(3, i) IF p = 9 OR p = 10 OR p = 15 THEN d = 1 dir(i) = 1 Pix(i) = 2 x = fc(i) fc(i) = 3 Tiro i fc(i) = x v(i) = v(i) - 5 IF v(i) < 1 THEN v(i) = 1 Pix(i) = kp resetcombo = -1 END IF CASE tCode(4, i) IF p = 9 OR p = 10 OR p = 15 THEN d = -1 dir(i) = -1 Pix(i) = 2 x = fc(i) fc(i) = 3 Tiro i fc(i) = x Pix(i) = kp v(i) = v(i) - 5 IF v(i) < 1 THEN v(i) = 1 resetcombo = -1 END IF END SELECT l(i) = l: c(i) = c: al(i) = al: ac(i) = ac: dir(i) = d IF resetcombo THEN Combo(i) = "xxxxxx": k$ = "" NEXT END SUB