DECLARE SUB Evento () DECLARE SUB DoScreen () DECLARE SUB Pixie () DECLARE SUB Wall (l%, c%, h%, n%) DECLARE SUB Box (l1%, c1%, l2%, c2%, char$, f%) DECLARE SUB PlayTheGame () DECLARE SUB Delay (t!) CLEAR RANDOMIZE TIMER '$DYNAMIC DEFINT A-Z CLS TYPE LinCol Lin AS INTEGER Col AS INTEGER Pulo AS INTEGER END TYPE DIM SHARED kup$, kdown$, kleft$, kright$, krun$, kfire$, kput$, l, c, al, ac DIM SHARED Jump, lf, cf, Spd, Block, Rope, Tipo DIM SHARED Dir, Scr, esc, Pt, HP, Tiro, Enem(1 TO 100) AS LinCol, Enemax PRINT "Definir teclas:" PRINT "P/ cima :"; : DO: kup$ = INKEY$: LOOP WHILE kup$ = "": PRINT "Ok" PRINT "P/ baixo :"; : DO: kdown$ = INKEY$: LOOP WHILE kdown$ = "": PRINT "Ok" PRINT "P/ direita :"; : DO: kright$ = INKEY$: LOOP WHILE kright$ = "": PRINT "Ok" PRINT "P/ esquerda :"; : DO: kleft$ = INKEY$: LOOP WHILE kleft$ = "": PRINT "Ok" PRINT "P/ atirar :"; : DO: kfire$ = INKEY$: LOOP WHILE kfire$ = "": PRINT "Ok" PRINT "P/ correr :"; : DO: krun$ = INKEY$: LOOP WHILE krun$ = "": PRINT "Ok" PRINT "P/ colocar bloco :"; : DO: kput$ = INKEY$: LOOP WHILE kput$ = "": PRINT "Ok" VIEW PRINT 1 TO 25 DO WIDTH 40 COLOR 7, 1 CLS PRINT "PixLand X" PRINT PRINT "Itens:"; PRINT PRINT CHR$(1); " - Pixie" PRINT CHR$(2); " - Adversario" PRINT "O - Pontos" PRINT CHR$(254); " - Tiros" PRINT CHR$(24); " - Espinho" PRINT "* - Corda" PRINT CHR$(4); " - Vida" PRINT "# - Super pulo" PRINT CHR$(178); " - Bloco" PRINT "Pressione alguma tecla..." k$ = INPUT$(1) CLS PRINT "PixLand X" PRINT PRINT "Escolha a arma:" PRINT "1 - Flecha" PRINT "2 - Bumerangue" PRINT "3 - Mina" DO: INPUT ">", Tipo: LOOP UNTIL Tipo > 0 AND Tipo < 4 PRINT "Pressione alguma tecla..." k$ = INPUT$(1) CLS Box 2, 2, 25, 39, STRING$(9, 219), 0 Pt = 0: HP = 5: Tiro = 10: Rope = 0: Block = 0 FOR Scr = 1 TO 13 DoScreen esc = 0 PlayTheGame IF esc THEN EXIT FOR NEXT COLOR 7, 0 WIDTH 80 CLS PRINT "Fim do jogo" PRINT PRINT USING "Pontos:#####00"; Pt PRINT PRINT "Continua [S/N] ? "; DO: o$ = UCASE$(INPUT$(1)): LOOP UNTIL o$ = "S" OR o$ = "N" PRINT o$ LOOP UNTIL o$ = "N" SYSTEM Level01: DATA 5 DATA 7,3,7,4,7,5,6,4,6,5 Level02: DATA 6 DATA 24,20,20,20,16,20,12,20,8,20,4,20 Level03: DATA 4 DATA 6,35,11,35,16,35,21,35 Level04: DATA 9 DATA 7,33,9,33,11,33,13,33,15,33,17,33,19,33,21,33,23,33 Level05: DATA 10 DATA 24,18,0,0 Level06n08: DATA 15 DATA 3,15,3,25,5,15,5,25,7,15,7,25,9,15,9,25,11,15,11,25,0,0 Level07: DATA 10 DATA 0,0 Level09: DATA 15 DATA 10,38,11,38,12,38,13,38,14,38 DATA 15,38,16,38,17,38,18,38,19,38,20,38,21,38,22,38,23,38,24,38 Level10: DATA 10 DATA 0,0 Level11: DATA 15 DATA 0,0 Level12: DATA 8 DATA 0,0 Level13: DATA 15 DATA 0,0 REM $STATIC 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(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 tl = l1 + 1 TO l2 - 1 LOCATE tl, c1: PRINT chrl(8); STRING$(ln, chrl(9)); chrl(4); NEXT ELSE FOR tl = l1 + 1 TO l2 - 1 LOCATE tl, c1: PRINT chrl(8); LOCATE tl, c2: PRINT chrl(4); NEXT END IF END SUB DEFSNG A-Z SUB Delay (t) ti = TIMER: DO: LOOP UNTIL TIMER - ti > t END SUB DEFINT A-Z SUB DoScreen Box 2, 2, 25, 39, STRING$(8, 219) + " ", 1 SELECT CASE Scr CASE 1 RESTORE Level01 LOCATE 20, 5: PRINT STRING$(12, 219); LOCATE 20, 25: PRINT STRING$(12, 219); LOCATE 15, 20: PRINT STRING$(10, 219); LOCATE 10, 30: PRINT STRING$(9, 219); LOCATE 8, 3: PRINT STRING$(20, 219); Wall 7, 35, 3, 24 LOCATE 7, 14: PRINT "OOOOO"; l = 24: c = 3 lf = 9: cf = 39 CASE 2 RESTORE Level02 n = 7 FOR i = 5 TO 24 STEP 4 n = 10 - n LOCATE i, n: PRINT STRING$(32, 219); NEXT LOCATE 4, 5: PRINT "OOOOO"; CHR$(254); l = 9: c = 3 lf = 24: cf = 39 CASE 3 RESTORE Level03 Wall 7, 30, 18, 179 Wall 3, 25, 21, 219 Wall 7, 20, 18, 219 Box 20, 15, 24, 18, STRING$(9, 177), 1 Box 14, 8, 18, 10, STRING$(9, 177), 1 Box 8, 5, 12, 18, STRING$(9, 177), 1 Box 9, 21, 24, 24, STRING$(9, 177), 1 LOCATE 7, 31: PRINT STRING$(7, 219); LOCATE 12, 32: PRINT STRING$(7, 219); LOCATE 17, 31: PRINT STRING$(7, 219); LOCATE 22, 32: PRINT STRING$(7, 219); l = 24: c = 3 lf = 24: cf = 39 CASE 4 RESTORE Level04 Wall 7, 20, 18, 219 Wall 3, 26, 21, 219 Wall 7, 35, 18, 219 Wall 20, 10, 5, 179 Wall 14, 15, 5, 179 Wall 7, 6, 5, 179 Wall 3, 27, 22, 177 LOCATE 6, 15: PRINT STRING$(6, 219); FOR i = 8 TO 24 STEP 2 LOCATE i, 31: PRINT STRING$(4, 219); NEXT l = 24: c = 3 lf = 24: cf = 39 CASE 5 RESTORE Level05 Wall 7, 25, 18, 219 Wall 7, 35, 18, 219 LOCATE 20, 5: PRINT STRING$(10, 219); LOCATE 19, 12: PRINT "# "; CHR$(178); LOCATE 6, 38: PRINT CHR$(219); Wall 7, 34, 18, 179 l = 24: c = 3 lf = 5: cf = 39 FOR i = 1 TO 5 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx - 1) = 32 AND SCREEN(lx, cx) = 32 AND SCREEN(lx, cx + 1) = 32 LOCATE lx, cx - 1: PRINT "["; CHR$(255); "]"; NEXT CASE 6, 8 RESTORE Level06n08 IF Scr = 6 THEN l = 5: c = 3: lf = 5: cf = 39 ELSE l = 24: c = 38: lf = 24: cf = 15 END IF LOCATE 6, 3: PRINT CHR$(219); LOCATE 6, 38: PRINT CHR$(219); LOCATE 12, 5: PRINT STRING$(34, 219); LOCATE 12, 33: PRINT " "; FOR i = 4 TO 10 STEP 2 LOCATE i, 15: PRINT STRING$(11, 219); NEXT LOCATE 3 + INT(RND * 5) * 2, 20: PRINT "*"; LOCATE 3 + INT(RND * 5) * 2, 21: PRINT CHR$(254); Wall 5, 30, 7, 79 Wall 15, 30, 10, 219 LOCATE 23, 14: PRINT STRING$(3, 219); LOCATE 24, 14: PRINT CHR$(219); LOCATE 24, 5: PRINT CHR$(254); Wall 15, 10, 10, 79 Box 14, 3, 16, 29, STRING$(9, 177), 1 CASE 7 RESTORE Level07 l = 5: c = 3: lf = 24: cf = 2 Box 3, 3, 24, 38, STRING$(9, 177), 1 LOCATE 5, 3: PRINT SPACE$(20); Box 10, 10, 14, 20, SPACE$(9), 1 Box 20, 15, 24, 35, SPACE$(9), 1 Box 4, 25, 10, 38, SPACE$(9), 1 FOR i = 1 TO 25 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx) = 32 LOCATE lx, cx: PRINT "O"; NEXT FOR i = 1 TO 20 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx) = 32 LOCATE lx, cx: PRINT CHR$(24); NEXT FOR i = 1 TO 2 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx) = 32 LOCATE lx, cx: PRINT CHR$(4); NEXT DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx) = 32 LOCATE lx, cx: PRINT CHR$(254); DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx) = 32 LOCATE lx, cx: PRINT "*"; CASE 9 RESTORE Level09 l = 3: c = 15 lf = 24: cf = 2 FOR i = 1 TO 20 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx) = 32 LOCATE lx, cx: PRINT CHR$(254); NEXT FOR i = 1 TO 50 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx) = 32 LOCATE lx, cx: PRINT "O"; NEXT FOR i = 1 TO 50 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx) = 32 LOCATE lx, cx: PRINT CHR$(219); NEXT FOR i = 1 TO 5 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx) = 32 LOCATE lx, cx: PRINT CHR$(4); NEXT FOR i = 1 TO 5 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx) = 32 AND SCREEN(lx + 1, cx) = 219 LOCATE lx, cx: PRINT "#"; NEXT FOR i = 1 TO 5 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx) = 32 LOCATE lx, cx: PRINT "*"; NEXT CASE 10 RESTORE Level10 l = 24: c = 38 lf = 5: cf = 39 FOR i = 1 TO 20 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx) = 32 LOCATE lx, cx: PRINT CHR$(254); NEXT FOR i = 1 TO 5 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx) = 32 LOCATE lx, cx: PRINT CHR$(4); NEXT FOR i = 1 TO 50 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx) = 32 LOCATE lx, cx: PRINT "O"; NEXT FOR i = 1 TO 20 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx) = 32 LOCATE lx, cx: PRINT "*"; NEXT CASE 11 RESTORE Level11 l = 5: c = 3 lf = 24: cf = 39 LOCATE 6, 3: PRINT CHR$(219); FOR i = 1 TO 5 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx - 1) = 32 AND SCREEN(lx, cx) = 32 AND SCREEN(lx, cx + 1) = 32 LOCATE lx, cx - 1: PRINT "["; CHR$(255); "]"; NEXT CASE 12 RESTORE Level12 l = 24: c = 3 lf = 24: cf = 39 LOCATE 11, 10: PRINT "["; CHR$(255); "]"; LOCATE 24, 10: PRINT "["; CHR$(255); "]"; LOCATE 11, 20: PRINT "["; CHR$(255); "]"; LOCATE 24, 20: PRINT "["; CHR$(255); "]"; LOCATE 11, 30: PRINT "["; CHR$(255); "]"; LOCATE 24, 30: PRINT "["; CHR$(255); "]"; Wall 3, 15, 22, 219 Wall 3, 25, 22, 219 LOCATE 12, 3: PRINT STRING$(37, 219); FOR i = 1 TO 10 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx) = 32 LOCATE lx, cx: PRINT CHR$(24); NEXT FOR i = 1 TO 5 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx - 1) = 32 AND SCREEN(lx, cx) = 32 AND SCREEN(lx, cx + 1) = 32 LOCATE lx, cx - 1: PRINT "["; CHR$(255); "]"; NEXT CASE 13 RESTORE Level13 l = 24: c = 3 lf = 24: cf = 39 FOR i = 1 TO 4 Wall 5, 8 * i - 2, 20, 219 Wall 3, 8 * i + 2, 20, 219 NEXT FOR i = 1 TO 10 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx - 1) = 32 AND SCREEN(lx, cx) = 32 AND SCREEN(lx, cx + 1) = 32 LOCATE lx, cx - 1: PRINT "["; CHR$(255); "]"; NEXT END SELECT LOCATE lf, cf: PRINT CHR$(176); IF SCREEN(lf, cf - 1) <> 32 AND SCREEN(lf, cf + 1) <> 32 THEN LOCATE lf, cf - 1: PRINT " "; CHR$(176); " "; LOCATE l, c: PRINT CHR$(1); READ Enemax w = -1 FOR i = 1 TO Enemax IF w THEN READ lx, cx IF lx = 0 OR NOT w THEN w = 0 DO lx = INT(RND * 22) + 3 cx = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lx, cx) = 32 AND (SCREEN(lx + 1, cx) <> 32 OR SCREEN(lx, cx + 1) = 179 OR SCREEN(lx, cx - 1) = 179) END IF Enem(i).Lin = lx Enem(i).Col = cx LOCATE lx, cx: PRINT CHR$(2); NEXT al = l: ac = c END SUB SUB Evento n = SCREEN(l, c) SELECT CASE n CASE 4 HP = HP + 1 FOR i = 1 TO 5 SOUND 2000 + 25 * i, .4 NEXT CASE 24 Jump = 5 l = l - 1 HP = HP - 1 Pt = Pt - 10: IF Pt < 0 THEN Pt = 0 SOUND 2000, 4 CASE 35 IF al < l THEN LOCATE l, c: PRINT " "; Jump = 20 SOUND 0, 0: PLAY "MBo4l16cdf" ELSE SOUND 0, 0: PLAY "MBo2l32d" x = l: y = c + c - ac IF SCREEN(x, y) = 32 THEN LOCATE l, c: PRINT " "; LOCATE x, y: PRINT "#"; DO WHILE SCREEN(x + 1, y) = 32 LOCATE x, y: PRINT " "; x = x + 1 LOCATE x, y: PRINT "#"; SOUND 1000, .1 Delay .01 LOOP ELSE l = al: c = ac END IF END IF CASE 42 LOCATE l, c: PRINT " "; Rope = Rope + 1 SOUND 0, 0: PLAY "MBo4l16fdcf" CASE 79 LOCATE l, c: PRINT " "; Pt = Pt + 1 SOUND 0, 0: PLAY "MBo4l16dcf" CASE 178 SOUND 0, 0: PLAY "MBo2l32d" IF l = al THEN x = l: y = c + c - ac 6 IF SCREEN(x, y) = 32 THEN LOCATE l, c: PRINT " "; LOCATE x, y: PRINT CHR$(178); DO WHILE SCREEN(x + 1, y) = 32 LOCATE x, y: PRINT " "; x = x + 1 LOCATE x, y: PRINT CHR$(178); Delay .01 SOUND 1000, .1 LOOP ELSEIF SCREEN(x, y) = 178 THEN y = y + c - ac: GOTO 6 ELSE LOCATE l, c: PRINT " "; Block = Block + 1 l = al: c = ac END IF ELSE LOCATE l, c: PRINT " "; Block = Block + 1 l = al: c = ac END IF CASE 219, 179, 2, 91, 93, 48 TO 57 l = al: c = ac CASE 254 LOCATE l, c: PRINT " "; Tiro = Tiro + 10 SOUND 0, 0: PLAY "MBo4l12cfg" CASE 255 DO l = INT(RND * 22) + 3 c = INT(RND * 36) + 3 LOOP UNTIL SCREEN(l, c) = 32 SOUND 0, 0: PLAY "MBo4l12cfdg" END SELECT Pixie END SUB SUB Pixie IF al <> l OR ac <> c THEN IF SCREEN(al, ac) = 1 THEN LOCATE al, ac: PRINT " "; al = l: ac = c LOCATE l, c: PRINT CHR$(1); END SUB SUB PlayTheGame n$ = CHR$(24) + "#O*0123456789" + CHR$(254) + CHR$(4) + CHR$(255) Jump = 0: Dir = 1: Spd = 0 LOCATE l, c: PRINT CHR$(1); DO LOCATE 1, 2: PRINT USING "Pts :#####00 Vidas:\ \ Tiros:###"; Pt; STRING$(HP, 254); Tiro; al = l: ac = c SELECT CASE INKEY$ CASE kup$ IF Jump = 0 AND (SCREEN(l + 1, c) <> 32 OR SCREEN(l, c - 1) = 179 OR SCREEN(l, c + 1) = 179) THEN Jump = 5 CASE kdown$ Jump = 0 IF SCREEN(l + 1, c) = 177 THEN LOCATE l, c: PRINT " "; : l = l + 1 IF SCREEN(l + 1, c) = 178 THEN LOCATE l + 1, c: PRINT " "; : l = l + 1: Block = Block + 1: SOUND 0, 0: PLAY "MBo2l32d" IF SCREEN(l, c - 1) = 179 OR SCREEN(l, c + 1) = 179 THEN LOCATE l, c: PRINT " "; : l = l + 1: Evento CASE kleft$ c = c - 1 Dir = -1 CASE kright$ c = c + 1 Dir = 1 CASE krun$ Spd = NOT Spd CASE kput$ IF Block > 0 THEN lx = l: cx = c + Dir IF SCREEN(lx, cx) = 32 THEN Block = Block - 1 LOCATE lx, cx: PRINT CHR$(178); DO WHILE SCREEN(lx + 1, cx) = 32 LOCATE lx, cx: PRINT " "; lx = lx + 1 LOCATE lx, cx: PRINT CHR$(178); SOUND 1000, .1 Delay .01 LOOP END IF END IF CASE kfire$ IF Tiro > 0 AND lt = 0 THEN Tiro = Tiro - 1 DoRope = 0 IF Rope > 0 THEN DoRope = -1: Rope = Rope - 1 lt = l: ct = c: dt = Dir IF Tipo = 3 AND NOT DoRope THEN tmi! = TIMER: vt = 5: LOCATE lt, ct: PRINT USING "#"; vt; : l = l - 1: Evento IF Tipo = 2 THEN vt = 0 FOR i = 1 TO 10 SOUND 0, 0 SOUND 250 + RND * 5, .1 NEXT END IF CASE CHR$(27): esc = -1: EXIT DO END SELECT IF Enemax > 0 THEN IF INT(RND * 50 / (Enemax + 1)) = 0 AND elt = 0 THEN i = INT(RND * Enemax + 1) elt = Enem(i).Lin: ect = Enem(i).Col IF ABS(elt - l) > 2 THEN elt = 0 ELSE edt = SGN(c - ect) IF edt = 0 THEN edt = 1 END IF ELSEIF TIMER - tme! >= .004 THEN tme! = TIMER FOR i = 1 TO Enemax el = Enem(i).Lin: ec = Enem(i).Col: Pul = Enem(i).Pulo ael = el: aec = ec IF INT(RND * 100) < 15 - 30 * (l >= el) THEN ed = SGN(c - ec) ELSEIF INT(RND * 100) < 25 THEN ed = INT(RND * 2) - 1 ELSE ed = 0 END IF IF Pul = 0 AND SCREEN(el + 1, ec) <> 32 AND el < l THEN FOR k = ec + 1 TO 38 IF SCREEN(el + 1, k) = 32 THEN EXIT FOR NEXT IF k = 39 THEN k = 100 ELSE k = k - ec FOR j = ec - 1 TO 3 STEP -1 IF SCREEN(el + 1, j) = 32 THEN EXIT FOR NEXT IF j = 2 THEN j = 100 ELSE j = ec - j IF k < j THEN ed = 1 ELSEIF j < k THEN ed = -1 ELSE ed = INT(RND * 3) - 1 END IF END IF IF ed <> 0 THEN ec = ec + ed IF SCREEN(el, ec) <> 32 THEN ec = ec - ed END IF pp = SCREEN(el + 1, ec) IF pp = 255 THEN DO el = INT(RND * 22) + 3 ec = INT(RND * 36) + 3 LOOP UNTIL SCREEN(el, ec) = 32 SOUND 0, 0: PLAY "MBo4l12cfdg" ELSEIF Pul = 0 AND INT(RND * 10) = 0 AND pp <> 32 THEN Pul = 5 ELSEIF Pul > 0 THEN Pul = Pul - 1 el = el - 1 SELECT CASE SCREEN(el, ec) CASE 32 CASE 255 DO el = INT(RND * 22) + 3 ec = INT(RND * 36) + 3 LOOP UNTIL SCREEN(el, ec) = 32 SOUND 0, 0: PLAY "MBo4l12cfdg" CASE ELSE: el = el + 1 END SELECT ELSEIF pp = 32 AND ((SCREEN(el, ec - 1) = 179 OR SCREEN(el, ec + 1) = 179) IMP (INT(RND * 15) = 0 XOR l > el)) THEN el = el + 1 END IF Enem(i).Pulo = Pul IF ael <> el OR aec <> ec THEN LOCATE el, ec: PRINT CHR$(2); : Enem(i).Lin = el: Enem(i).Col = ec: IF SCREEN(ael, aec) = 2 THEN LOCATE ael, aec: PRINT " "; NEXT END IF END IF Evento IF TIMER - t! >= .01 THEN IF Spd THEN c = ac + Dir IF c > 39 THEN c = 39 IF c < 2 THEN c = 2 Evento ac = c t! = TIMER p = SCREEN(l + 1, c) IF Jump > 0 THEN l = l - 1 Jump = Jump - 1 Evento ELSEIF p = 32 THEN IF NOT (SCREEN(l, c - 1) = 179 OR SCREEN(l, c + 1) = 179) THEN l = l + 1 ELSEIF INSTR(n$, CHR$(p)) > 0 THEN l = l + 1 Evento END IF END IF IF TIMER - tt! >= .01 AND lt > 0 AND (Tipo = 1 OR Tipo = 2 OR DoRope) THEN tt! = TIMER IF DoRope THEN IF SCREEN(lt, ct) = 24 THEN LOCATE lt, ct: PRINT CHR$(179); lt = lt - 1 ELSE IF INSTR(CHR$(26) + CHR$(27), CHR$(SCREEN(lt, ct))) > 0 THEN LOCATE lt, ct: PRINT " "; ct = ct + dt END IF 4 SELECT CASE SCREEN(lt, ct) CASE 255 DO lt = INT(RND * 22) + 3 ct = INT(RND * 36) + 3 LOOP UNTIL SCREEN(lt, ct) = 32 CASE 2 SOUND 1600, 4 FOR i = 1 TO Enemax IF lt = Enem(i).Lin AND ct = Enem(i).Col THEN EXIT FOR NEXT LOCATE lt, ct: PRINT CHR$(178); DO WHILE SCREEN(lt + 1, ct) = 32 LOCATE lt, ct: PRINT " "; lt = lt + 1 LOCATE lt, ct: PRINT CHR$(178); SOUND 1000, .1 Delay .01 LOOP Enemax = Enemax - 1 FOR j = i TO Enemax Enem(j) = Enem(j + 1) NEXT lt = 0: Pt = Pt + 2 CASE 32 CASE ELSE IF Tipo = 2 AND NOT DoRope THEN vt = vt + 1 dt = -dt ct = ct + dt lt = lt - 1 IF vt = 3 THEN vt = 0: lt = 0 ELSE GOTO 4 ELSE lt = 0 END IF END SELECT IF lt > 0 THEN LOCATE lt, ct IF DoRope THEN PRINT CHR$(24); ELSE PRINT CHR$(26 - (dt = -1)); END IF END IF IF TIMER - tmi! > 1 AND lt > 0 AND Tipo = 3 AND NOT DoRope THEN tmi! = TIMER IF vt = 0 THEN LOCATE lt, ct: PRINT " "; vl1 = lt - 2: IF vl1 < 3 THEN vl1 = 3 vc1 = ct - 2: IF vc1 < 3 THEN vc1 = 3 vl2 = lt + 2: IF vl2 > 24 THEN vl2 = 24 vc2 = ct + 2: IF vc2 > 38 THEN vc2 = 38 FOR ii = vl2 TO vl1 STEP -1 FOR jj = vc1 TO vc2 SELECT CASE SCREEN(ii, jj) CASE 2 lt = ii: ct = jj SOUND 1600, 4 FOR i = 1 TO Enemax IF lt = Enem(i).Lin AND ct = Enem(i).Col THEN EXIT FOR NEXT LOCATE lt, ct: PRINT CHR$(178); DO WHILE SCREEN(lt + 1, ct) = 32 LOCATE lt, ct: PRINT " "; lt = lt + 1 LOCATE lt, ct: PRINT CHR$(178); SOUND 1000, .1 Delay .01 LOOP Enemax = Enemax - 1 FOR j = i TO Enemax Enem(j) = Enem(j + 1) NEXT Pt = Pt + 2 CASE 178 CASE ELSE: LOCATE ii, jj: PRINT " "; END SELECT NEXT NEXT lt = 0 ELSE vt = vt - 1 LOCATE lt, ct: PRINT USING "#"; vt; END IF END IF IF TIMER - ett! >= .005 AND elt > 0 THEN ett! = TIMER IF INSTR(CHR$(26) + CHR$(27), CHR$(SCREEN(elt, ect))) > 0 THEN LOCATE elt, ect: PRINT " "; ect = ect + edt SELECT CASE SCREEN(elt, ect) CASE 1: elt = 0: HP = HP - 1: SOUND 1600, 4: Pt = Pt - 10: IF Pt < 0 THEN Pt = 0 CASE 32 CASE ELSE: elt = 0 END SELECT IF elt > 0 THEN LOCATE elt, ect: PRINT CHR$(26 - (edt = -1)); END IF Pixie IF HP = 0 THEN esc = -1: EXIT SUB LOOP UNTIL l = lf AND c = cf END SUB SUB Wall (l, c, h, n) FOR i = l TO l + h - 1: LOCATE i, c: PRINT CHR$(n); : NEXT END SUB