' ' ͻ ͻ ͻ ͻ ͻ ͻ ͻ ' ͻ ͻ ͻ ͼ ' ' ' ͼ ͻ ' ͻ ͼ ͻ ' ͼ Ȼ Ȼ ͼ ' ͻ Ȼ Ȼ ͻ ' Ȼ Ȼ ͻ ͼ ' ͼ ͼ ͼ ͼ ͼ ͼ ͼ ͼ ͼ ͼ ' ' H E C H O E N R O N D A ' ------------------------------------------------------- ' ' es.geocities.com/jm00092 ' ' ' ' ' ' ' ' ' DECLARE SUB ayuda (txt$) DECLARE FUNCTION menu! () DECLARE SUB flecha (v!, C!) DECLARE SUB gameover () DECLARE SUB borratodo (C!) DECLARE SUB letraris (hp!, vp!, hl!, vl!, l!, a!, C!) DECLARE SUB titulos (n!, C!) DECLARE SUB borrapantalla (C!) DECLARE SUB entrada () DECLARE SUB pantalla () DECLARE SUB botondevidas (h!, v!, C!) DECLARE SUB boton (h!, v!, C!) DECLARE SUB final () DECLARE SUB puntos () DECLARE SUB vidas (n!) DECLARE SUB cambios (C!) DECLARE SUB letras (X!, Y!, TEXT$, escl!, clrs!, ang!, ancho!, relleno!) CONST pi = 3.14 CONST colorpunto = 40 DIM SHARED azul(1 TO 4000) DIM SHARED gris(1 TO 4000) RANDOMIZE TIMER SCREEN 13 entrada GOSUB elmenu PRINCIPIO: pantalla CLEAR ccamb = 32 LIN = 95 COL = 155 VID = 1 LINE (153, 93)-(157, 97), 32, BF PSET (154, 94), 34 PSET (156, 96), 38 PSET (154, 96), 42 PSET (156, 94), 46 PSET (155, 95), 39 ayuda "Usa las flechas de direccin ESC = salir" DO DO: LOOP WHILE INKEY$ <> "" DO kbd$ = INKEY$ LOOP WHILE kbd$ = "" AND BLOQUEO < 4 alin = LIN acol = COL SELECT CASE kbd$ CASE CHR$(0) + "H": LIN = LIN - 10 CASE CHR$(0) + "P": LIN = LIN + 10 CASE CHR$(0) + "K": COL = COL - 10 CASE CHR$(0) + "M": COL = COL + 10 END SELECT IF LIN < 10 THEN : LIN = 10 IF LIN > 170 THEN : LIN = 170 cambios 1 IF POINT(COL, LIN) = 176 THEN : LIN = alin: COL = acol IF POINT(COL, LIN) = colorpunto THEN : puntos boton acol - 4, alin - 4, 1 IF ccamb < 33 THEN : camb = 1 IF ccamb > 47 THEN : camb = -1 ccamb = ccamb + camb IF POINT(COL, LIN) = 176 THEN : boton COL - 4, LIN - 4, 1 LINE (COL - 2, LIN - 2)-(COL + 2, LIN + 2), ccamb, BF PSET (COL - 1, LIN - 1), 34 PSET (COL + 1, LIN + 1), 38 PSET (COL - 1, LIN + 1), 42 PSET (COL + 1, LIN - 1), 46 PSET (COL, LIN), 39 vidas -1 cambios 2 abloqueo = BLOQUEO BLOQUEO = 0 IF POINT(COL - 10, LIN) = 176 XOR POINT(COL - 10, LIN) = 1 THEN BLOQUEO = 1 IF POINT(COL + 10, LIN) = 176 XOR POINT(COL + 10, LIN) = 1 THEN BLOQUEO = BLOQUEO + 1 IF POINT(COL, LIN - 10) = 176 XOR POINT(COL, LIN - 10) = 1 THEN BLOQUEO = BLOQUEO + 1 IF POINT(COL, LIN + 10) = 176 XOR POINT(COL, LIN + 10) = 1 THEN BLOQUEO = BLOQUEO + 1 VE = VE + 1 IF VE = 20 THEN : VE = 0 IF BLOQUEO = 4 AND VE = 0 THEN : SOUND 900, 1: SOUND 1000, .7 IF BLOQUEO = 4 AND abloqueo < 4 THEN ayuda "desbloqueo automtico": SOUND 3000, 6 IF BLOQUEO < 4 AND abloqueo = 4 THEN ayuda "Usa las flechas de direccin ESC = salir": SOUND 3000, 6 LOOP UNTIL kbd$ = CHR$(27) OR VID < 0 BEEP e = 1 elmenu: IF e = 1 THEN : gameover SELECT CASE menu CASE 1: GOSUB PRINCIPIO CASE 0: final END SELECT SUB ayuda (txt$) LINE (1, 172)-(318, 180), 176, BF letras 10, 178, txt$, 4, 1, 0, 1, 1 END SUB SUB borrapantalla (C) SELECT CASE C CASE 1: bor = 26 CASE 2: bor = 176 END SELECT FOR h = 10 TO 300 STEP 10 FOR v = 10 TO 160 STEP 10 IF POINT(h + 5, v + 5) <> bor THEN boton h + 1, v + 1, C NEXT FOR delay = 0 TO 500: NEXT NEXT END SUB SUB borratodo (C) SELECT CASE C CASE 1 PUT (11, 11), gris, PSET PUT (111, 11), gris, PSET PUT (211, 11), gris, PSET CASE 2 PUT (11, 11), azul, PSET PUT (111, 11), azul, PSET PUT (211, 11), azul, PSET END SELECT END SUB SUB boton (h, v, C) IF C = 1 THEN : c1 = 30: c2 = 26: c3 = 22 IF C = 2 THEN : c1 = 0: c2 = 176: c3 = 104 IF C = 3 THEN : c1 = 88: c2 = 40: c3 = 4 IF C = 4 THEN : c1 = 45: c2 = 2: c3 = 120 LINE (h, v)-STEP(8, 8), c1, B LINE (h + 1, v + 1)-STEP(7, 7), c3, B LINE (h + 1, v + 1)-STEP(6, 6), c2, BF END SUB SUB botondevidas (h, v, C) IF C = 1 THEN : c1 = 45: c2 = 48: c3 = 2 IF C = 2 THEN : c1 = 0: c2 = 176: c3 = 104 LINE (h, v)-STEP(2, 8), c1, B LINE (h + 1, v + 1)-STEP(1, 7), c3, B LINE (h + 1, v + 1)-STEP(0, 6), c2 END SUB SUB cambios (C) SELECT CASE C CASE 1 h = (INT(RND * 29) * 10) + 10 v = (INT(RND * 15) * 10) + 10 IF RND < .4 THEN boton h + 1, v + 1, 2 boton h + 11, v + 1, 2 boton h + 1, v + 11, 2 boton h + 11, v + 11, 2 END IF CASE 2 IF RND < .9 THEN h = (INT(RND * 30) * 10) + 15 v = (INT(RND * 16) * 10) + 15 IF POINT(h, v) <> 39 THEN IF POINT(h, v) = 176 THEN boton h - 4, v - 4, 1 LINE (h - 2, v - 2)-(h + 2, v + 2), colorpunto, BF END IF END IF END SELECT END SUB SUB entrada pantalla borrapantalla 2 WHILE INKEY$ <> "": WEND DO borratodo 2 FOR v = 1 TO 5 titulos v, 1 FOR h = 1 TO 5 SOUND (h * 100) + (v * 200) + 100, 3 SOUND (v * 200) + 600, 3 SOUND (h * 200) + 400, 3 IF INKEY$ <> "" THEN EXIT DO NEXT borratodo 2 NEXT borratodo 1 FOR v = 5 TO 1 STEP -1 titulos 6 - v, 2 FOR h = 5 TO 1 STEP -1 SOUND (h * 100) + (v * 200) + 100, 3 SOUND (v * 200) + 600, 3 SOUND (h * 200) + 400, 3 IF INKEY$ <> "" THEN EXIT DO NEXT borratodo 1 NEXT LOOP WHILE INKEY$ = "" END SUB SUB final pantalla borrapantalla 2 letraris 258, 3, 31, 81, 24, 4, 1 letraris 288, 3, 41, 151, 24, 4, 1 ayuda "pulsa cualquier tecla para salir del programa" WHILE INKEY$ <> "": WEND SLEEP REDIM mat(1 TO 16000) LINE (0, 198)-(319, 199), 0, BF GET (0, 2)-(319, 199), mat PUT (0, 0), mat, PSET LINE (0, 196)-(319, 196), 1 FOR n = 1 TO 199 STEP 2 GET (0, 2)-(319, 199), mat PUT (0, 0), mat, PSET NEXT FOR n = 16 TO 31 COLOR n: LOCATE 13, 11: PRINT "J.M.G.B. RONDA 1996" FOR delay = 0 TO 3000: NEXT NEXT h = 138 v = 140 cf = POINT(h, v) LINE (h, v)-STEP(45, 21), 255, B LINE (h + 2, v + 2)-STEP(41, 6), 255, BF letras h + 4, v + 6, "HECHO EN", 4, cf, 0, 1, 1 letras h - 3, v + 17, "RONDA", 8, 255, 0, 2, 1 C = 32 FOR hh = h TO h + 45 C = C + .4 FOR vv = v TO v + 21 IF POINT(hh, vv) = 255 THEN PSET (hh, vv), C NEXT NEXT COLOR 0 SYSTEM END END SUB SUB flecha (v, C) boton 41, v - 30, C boton 41, v - 20, C boton 51, v - 20, C boton 41, v - 10, C boton 51, v - 10, C boton 61, v - 10, C boton 41, v, C boton 51, v, C boton 61, v, C boton 71, v, C boton 41, v + 10, C boton 51, v + 10, C boton 61, v + 10, C boton 41, v + 20, C boton 51, v + 20, C boton 41, v + 30, C boton 21, v, C boton 31, v, C END SUB SUB gameover ayuda "un momento, por favor" borrapantalla 1 borrapantalla 2 letraris 87, 3, 31, 81, 24, 4, 1 letraris 113, 3, 31, 151, 24, 4, 1 ayuda "pulsa cualquier tecla para ir al men" WHILE INKEY$ <> "": WEND SLEEP END SUB SUB letraris (hp, vp, hl, vl, l, a, C) ph = hl - 10 pv = vl - 10 FOR h = hp TO hp + l ph = ph + 10 pv = pv - ((a + 1) * 10) FOR v = vp TO vp + a pv = pv + 10 IF POINT(h, v) <> 176 THEN boton ph, pv, C END IF NEXT NEXT END SUB SUB letras (X, Y, TEXT$, escl, clrs, ang, ancho, relleno) IF relleno < 1 THEN : relleno = 1 FOR h = 1 TO ancho STEP relleno FOR v = 1 TO ancho STEP relleno ccc = POINT(X + h, Y + v) PSET (X + h, Y + v), ccc C$ = STR$(clrs): e$ = STR$(escl): a$ = STR$(ang) FOR a = 1 TO LEN(TEXT$) IF clrs > 255 THEN C$ = STR$(INT(RND * 15) + 1) DRAW "S" + e$ + "C" + C$ + "ta" + a$ SELECT CASE UCASE$(MID$(TEXT$, a, 1)) CASE "A": DRAW "br2 u2nnr2u2r2d4" CASE "B": DRAW "br2 u4r2dgnlfdnl2" CASE "C": DRAW "br2 bu4 nr2d4r2" CASE "D": DRAW "br2 u4rfd2glbr2" CASE "E": DRAW "br2 bu4 nr2d2nr2d2r2" CASE "F": DRAW "br2 bu4 nr2d2nr2d2br2" CASE "G": DRAW "br2 bu4 nr2d4r2unld" CASE "H": DRAW "br2 u2nu2r2nu2d2" CASE "I": DRAW "br2 nu4" CASE "J": DRAW "br2 nur2nu4" CASE "K": DRAW "br2 u2 nu2ne2f2" CASE "L": DRAW "br2 nu4r2" CASE "M": DRAW "br2 u4f2e2d4" CASE "N": DRAW "br2 u4f4nu4" CASE "": DRAW "br2 u3f3u3bunl3bd4" CASE "": DRAW "br2 u3f3u3bunl3bd4" CASE "O": DRAW "br2 bu4 nr2d4r2nu4" CASE "P": DRAW "br2 u2nnr2u2r2d2bd2" CASE "Q": DRAW "br2 bu4 nr2d4renu3blf" CASE "R": DRAW "br2 u4r2d2l2f2" CASE "S": DRAW "br2 r2u2l2u2r2BD4" CASE "T": DRAW "br2 BU4r2nd4r2bd4" CASE "U": DRAW "br2 nu4r2nu4" CASE "V": DRAW "br2 bunu3fenu3bd" CASE "W": DRAW "br2 bunu3fenu2fenu3bd" CASE "X": DRAW "br2 br2bu2ne2nf2ng2nh2br2bd2" CASE "Y": DRAW "br2 br2u2nh2ne2bd2br2" CASE "Z": DRAW "br2 bu4 r4g2nlnrg2r4" CASE "1": DRAW "br2 bu3ed4nlr" CASE "2": DRAW "br2 bu4 r2d2l2d2r2" CASE "3": DRAW "br2 bu4 r2d2nl2d2nl2" '"br2 bu4 r2fgnlfgnl2bl" CASE "4": DRAW "br2 bu2 nu2r2nu2d2" CASE "5": DRAW "br2 bu4 nr2d2r2d2nl2" CASE "6": DRAW "br2 bu4 nr2d2nr2d2r2nu2" CASE "7": DRAW "br2 bu4 r2d4" CASE "8": DRAW "br2 u4r2d2nl2d2nl2" CASE "9": DRAW "br2 bu2 nr2u2r2d4" CASE "0": DRAW "br2 bu4 nr2d4r2nu4" CASE "*": DRAW "br2 br2 u2nl2nu2nr2nengnhfbf " CASE "+": DRAW "br2 br2 u2nl2nu2r2bd2" CASE "-": DRAW "br2 bu2r2bd2" CASE ".": DRAW "br2": PSET STEP(0, 0), clrs CASE ",": DRAW "br2 ng" CASE ";": DRAW "br2 ngbunuBD" CASE ":": DRAW "br2": PSET STEP(0, 0), clrs: PSET STEP(0, -2), clrs: DRAW "bd2" CASE "=": DRAW "br2 bunr2bu2r2bd3" CASE "": DRAW "br2 unr2u2rbunebdrd3" CASE "": DRAW "br2 bu3 rbunebdrl2d2nr2dr2" CASE "": DRAW "br2 u3bunebd4" CASE "": DRAW "br2 u3rbunebdrd3nl2" CASE "": DRAW "br2 u3brbunebdbrd3nl2" CASE "": DRAW "br2 unr2u2rbunebdrd3" CASE "": DRAW "br2 bu3 rbunebdrl2d2nr2dr2" CASE "": DRAW "br2 u3bunebd4" CASE "": DRAW "br2 u3rbunebdrd3nl2" CASE "": DRAW "br2 u3brbunebdbrd3nl2" CASE ELSE: DRAW "S" + e$ + "ta" + a$ + "BR4" END SELECT NEXT: NEXT: NEXT DRAW "s4ta0" END SUB FUNCTION menu ayuda "un momento, por favor" pantalla borrapantalla 2 ayuda "pulsa enter para jugar o escape para salir, o las flechas" letras 245, 178, "JUGAR SALIR", 4, 177, 0, 1, 1 letraris 248, 175, 101, 81, 23, 4, 1 letraris 272, 175, 111, 161, 30, 4, 1 flecha 91, 3 WHILE INKEY$ <> "": WEND DO kbd$ = INKEY$ LOOP UNTIL kbd$ = CHR$(27) XOR kbd$ = CHR$(13) XOR kbd$ = CHR$(0) + "H" XOR kbd$ = CHR$(0) + "P" SELECT CASE kbd$ CASE CHR$(13) FOR n = 91 TO 51 STEP -10 flecha n + 10, 2 flecha n, 3 SOUND 3000, 1 SOUND 900, 1 NEXT menu = 1 CASE CHR$(0) + "H" FOR n = 91 TO 51 STEP -10 flecha n + 10, 2 flecha n, 3 SOUND 3000, 1 SOUND 900, 1 NEXT menu = 1 CASE CHR$(27) FOR n = 91 TO 131 STEP 10 flecha n - 10, 2 flecha n, 3 SOUND 3000, 1 SOUND 900, 1 NEXT menu = 0 CASE CHR$(0) + "P" FOR n = 91 TO 131 STEP 10 flecha n - 10, 2 flecha n, 3 SOUND 3000, 1 SOUND 900, 1 NEXT menu = 0 END SELECT BEEP END FUNCTION SUB pantalla LINE (0, 0)-(319, 199), 176, BF ayuda "un momento, por favor" LINE (0, 0)-(319, 199), 1, B letras 250, 192, "puntos", 4, 1, 0, 1, 1 letras 60, 6, "arialis hecho en Ronda JM. 1996", 4, 1, 0, 1, 1 letras 0, 6, "con qbasic", 4, 177, 0, 1, 1 '<--- Oculto letras 80, 6, " ya hasperdido", 4, 177, 0, 1, 1 '<--- Oculto letras 255, 6, "bye bye ", 4, 177, 0, 1, 1 '<--- Oculto LINE (4, 185)-(22, 193), 45, B LINE (5, 186)-(22, 193), 2, B LINE (5, 186)-(21, 192), 48, BF letras 265, 192, STR$(0), 12, 40, 0, 2, 1 letras 5, 190, STR$(1), 4, 40, 0, 1, 1 FOR a = 24 TO 24 + (48 * 4) STEP 4 botondevidas a, 185, 1 NEXT borrapantalla 1 borrapantalla 2 GET (11, 11)-STEP(98, 158), azul borrapantalla 1 GET (11, 11)-STEP(98, 158), gris END SUB SUB puntos SHARED punt punt = punt + 1 LINE (280, 175)-(318, 198), 176, BF letras 265, 192, STR$(punt), 12, 40, 0, 2, 1 mm = INT(RND * 15) + 1 SELECT CASE mm CASE 0: PLAY " MBO2L22>CAGF" CASE 1: PLAY " MBO1L22>CAGF" CASE 2: PLAY " MBO2L22>CAGGF" CASE 3: PLAY " MBO1L22>CAGGF" CASE 4: PLAY " MBO1L22>CAGGGF" CASE 5: PLAY " MBO2L22>CAGGGF" CASE 6: PLAY " MBO0L22>CAGF" CASE 7: PLAY " MBO0L22>CAGGF" CASE 8: PLAY " MBO0L22>CAGGGF" CASE 9: PLAY " MBO2L22>CAG" CASE 10: PLAY " MBO3L22>CAGF" CASE 11: PLAY " MBO3L22>CAGGF" CASE 12: PLAY " MBO3L22>CAGGF" CASE 13: PLAY " MBO3L22>CAGGGF" CASE 14: PLAY " MBO3L22>CAGF" CASE 15: PLAY " MBO3L22>CAGGF" END SELECT vidas mm END SUB SUB titulos (n, C) SELECT CASE n CASE 1 letraris 63, 3, 51, 111, 22, 4, C ayuda "pulsa una tecla para ir al men" CASE 2 letraris 139, 3, 41, 81, 18, 4, C letraris 163, 3, 191, 151, 8, 4, C ayuda "pulsa una tecla para ir al men programado entero con q-basic" CASE 3 letraris 177, 3, 51, 111, 20, 4, C ayuda "pulsa una tecla para ir al men JM. Hecho en ronda" CASE 4 letraris 205, 3, 61, 81, 20, 4, C letraris 231, 3, 41, 151, 23, 4, C CASE 5 letraris 3, 3, 61, 81, 12, 4, C letraris 28, 3, 11, 151, 28, 4, C ayuda "pulsa una tecla para ir al men original j.m.g.b. navidad 1996" END SELECT END SUB SUB vidas (n) SHARED v SHARED VID AVID = VID v = v + n r = n - 28 IF v > 48 THEN : v = n: VID = VID + 1 IF v < 0 THEN : v = 48: VID = VID - 1 FOR a = 24 TO 24 + (v * 4) STEP 4 IF POINT(a, 185) = 0 THEN botondevidas a, 185, 1 NEXT FOR a = 24 + ((v + 1) * 4) TO 24 + (48 * 4) STEP 4 IF POINT(a, 185) <> 0 THEN botondevidas a, 185, 2 NEXT IF AVID <> VID THEN LINE (5, 186)-(21, 192), 48, BF letras 5, 190, STR$(VID), 4, 40, 0, 1, 1 END IF END SUB