'
'  ͻ  ͻ  ͻ  ͻ  ͻ          ͻ  ͻ
'   ͻ    ͻ       ͻ                  ͼ
'                                               
'                                               
'            ͼ                              ͻ
'            ͻ  ͼ                            ͻ 
'   ͼ     Ȼ Ȼ        ͼ                          
'   ͻ      Ȼ Ȼ       ͻ                          
'               Ȼ Ȼ               ͻ     ͼ 
'  ͼ     ͼ  ͼ    ͼ  ͼ  ͼ     ͼ  ͼ  ͼ  ͼ
'
'            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

