'
'           ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
'           º                                                   º
'           º    ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»    º
'           º    º                                         º    º
'           º    º                                         º    º
'           º    º          C A Z A - B A C H E S          º    º
'           º    º                                         º    º
'           º    º                                         º    º
'           º    º                                         º    º
'           º    º       H E C H O   E N   R O N D A       º    º
'           º    º                                         º    º
'           º    º              F5 >> Empezar              º    º
'           º    º                                         º    º
'           º    ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼    º
'           º             es.geocities.com/jm00092              º
'           ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼
'    
'
'
'
'
DECLARE SUB letras (h1!, v!, n$, c!, ch!, cv!, dh!, dv!, gh!, gv!)
DECLARE SUB bache (hh!, vv!)
RANDOMIZE TIMER
DIM SHARED mat(1 TO 5000)
SCREEN 13

letras 40, 50, "caza baches", 32, 1, 1, 4, 4, 3, 3
letras 10, 100, "hecho en ronda", 92, 1, 1, 2, 2, 1, 1
letras 70, 130, "ciudad so¥ada", 92, 1, 1, 2, 2, 1, 1

SLEEP 3
CLS
PAINT (1, 1), 10
LINE (0, 0)-(230, 49), 11, BF
LINE (231, 0)-(319, 199), 1, BF


'LINE (168, 50)-(168, 200), 2
'LINE (70, 50)-(167, 200), 7, BF
'LINE (73, 50)-(75, 200), 15, BF
'LINE (162, 50)-(164, 200), 15, BF

FOR n = 50 TO 199
xx = xx + .15
x = SIN(xx MOD 6.28) + 71
LINE (70, n)-(170, n), 10
LINE (x, n)-(x + 97, n), 7
PSET (x + 98, n), 2
IF RND > prob THEN PSET (x + 3, n), 15
IF RND > prob THEN PSET (x + 4, n), 15
IF RND > prob THEN PSET (x + 5, n), 15
IF RND > prob THEN PSET (x + 94, n), 15
IF RND > prob THEN PSET (x + 93, n), 15
IF RND > prob THEN PSET (x + 92, n), 15
prob = prob + ((RND - .5) / 10)
IF prob > .3 THEN prob = .3
IF prob < 0 THEN prob = 0
NEXT


cad$ = "BACHES HECHOS EN RONDA"
FOR n = 1 TO 22
letras 232, (n * 9) - 8, MID$(cad$, n, 1), 41 + n, 0, 1, 1, 1, 0, 0
NEXT

letras 2, 190, "ESC=SALIR", 18, 1, 1, 1, 1, 0, 0


letras 2, 130, "puntos", 32, 1, 1, 1, 1, 0, 0
letras 2, 170, "nivel -", 32, 1, 1, 1, 1, 0, 0
letras 15, 10, "caza-baches", 32, 1, 1, 3, 1, 2, 0

letras 40, 25, "baches encontrados.....", 17, 1, 1, 1, 1, 0, 0
LINE (179, 26)-(195, 33), 11, BF
letras 172, 25, STR$(0), 32, 1, 0, 1, 1, 0, 0

letras 40, 35, "baches no eliminados...", 17, 1, 1, 1, 1, 0, 0
LINE (179, 36)-(195, 43), 11, BF
letras 172, 35, STR$(0), 38, 1, 0, 1, 1, 0, 0


FOR h = 240 TO 280 STEP 40
FOR v = 0 TO 160 STEP 40
LINE (h + 2, v + 2)-STEP(37, 37), 32, B
LINE (h + 1, v + 1)-STEP(37, 37), 7, BF
LINE (h + 1, v + 1)-STEP(37, 37), 30, B, &HEEEE
bache h + 19, v + 19
NEXT
NEXT



prob = .5
lh = ((INT(RND * 2) * 40) + 242)
lv = ((INT(RND * 5) * 40) + 2)
ini = (INT(RND * 55) + 76)
mih = 130
miv = 100
ac = 7

salto = 6

encon = 1
LINE (179, 26)-(195, 33), 11, BF
letras 172, 25, STR$(1), 32, 1, 0, 1, 1, 0, 0

nivel = 1
LINE (36, 170)-(50, 178), 10, BF
letras 32, 170, STR$(1), 32, 1, 1, 1, 1, 0, 0
xx = 2.5
DO
xx = xx + .15
x = SIN(xx MOD 6.28) + 71
LINE (70, 50)-(170, 50), 10
LINE (x, 50)-(x + 97, 50), 7
PSET (x + 98, 50), 2
IF RND > prob THEN PSET (x + 3, 50), 15
IF RND > prob THEN PSET (x + 4, 50), 15
IF RND > prob THEN PSET (x + 5, 50), 15
IF RND > prob THEN PSET (x + 94, 50), 15
IF RND > prob THEN PSET (x + 93, 50), 15
IF RND > prob THEN PSET (x + 92, 50), 15
prob = prob + ((RND - .5) / 10)
IF prob > .3 THEN prob = .3
IF prob < 0 THEN prob = 0



FOR ch = 1 TO 35
IF ch = 35 THEN cv = cv + 1
IF cv > 35 THEN
   cv = 1
   lh = ((INT(RND * 2) * 40) + 241)
   lv = ((INT(RND * 5) * 40) + 1)
   ini = (INT(RND * 50) + 76)
   encon = encon + 1
   LINE (179, 26)-(195, 33), 11, BF
   letras 172, 25, STR$(encon), 32, 1, 0, 1, 1, 0, 0
   IF (encon / 20) = FIX(encon / 20) THEN
      salto = FIX((120 - encon) / 20)
      IF salto < 1 THEN salto = 1
      nivel = nivel + 1
      LINE (36, 170)-(50, 178), 10, BF
      letras 32, 170, STR$(nivel), 32, 1, 1, 1, 1, 0, 0
   END IF

END IF
PSET (ch + ini, 50), POINT(lh + ch, lv + cv)
NEXT



kbd$ = UCASE$(INKEY$)

PSET (mih, miv), ac
SELECT CASE kbd$
CASE CHR$(0) + "H": miv = miv - salto
CASE CHR$(0) + "P": miv = miv + salto
CASE CHR$(0) + "K": mih = mih - salto
CASE CHR$(0) + "M": mih = mih + salto
CASE CHR$(27)
      CLS
      letras 70, 80, "juego terminado", 32, 0, 1, 2, 3, 1, 2
      letras 10, 120, "puntos conseguidos =" + STR$(puntos), 92, 1, 1, 2, 2, 1, 1
      letras 1, 180, "hecho en ronda -- 1998 -- pulsa una tecla para salir", 18, 1, 1, 1, 1, 0, 0
      COLOR 0
      END
END SELECT
IF mih > 160 THEN mih = 160
IF mih < 80 THEN mih = 80
IF miv > 196 THEN miv = 196
IF miv < 80 THEN miv = 80

kbd$ = ""



si = 0
IF POINT(mih, miv) <> 7 THEN si = 1
PAINT (mih, miv), 40, 7
IF si = 1 THEN
FOR nnn = 1000 TO 3000 STEP 1000
SOUND nnn, .7
NEXT
PAINT (mih, miv), 7, 7
puntos = puntos + nivel
LINE (2, 120)-(30, 128), 10, BF
letras -2, 120, STR$(puntos), 32, 1, 1, 1, 1, 0, 0

END IF


ac = POINT(mih, miv)
PSET (mih, miv), 40


FOR nnn = 90 TO 140 STEP 8
IF POINT(nnn, 199) <> 7 THEN
   SOUND 800, 3
   PAINT (nnn, 199), 7, 7
   noeli = noeli + 1

   LINE (179, 36)-(195, 43), 11, BF
   letras 172, 35, STR$(noeli), 38, 1, 0, 1, 1, 0, 0
   IF noeli > 10 THEN
      CLS
      letras 50, 20, "catastrofe", 38, 1, 0, 2, 2, 1, 1
      letras 10, 50, "mas de 10 baches no eliminados", 38, 1, 1, 1, 2, 0, 1
      letras 70, 80, "juego terminado", 32, 0, 1, 2, 3, 1, 2
      letras 10, 120, "puntos conseguidos =" + STR$(puntos), 92, 1, 1, 2, 2, 1, 1
      letras 1, 180, "hecho en ronda -- 1998 -- pulsa una tecla para salir", 20, 1, 1, 1, 1, 0, 0

      
      COLOR 0
      END
   END IF
  
   END IF
NEXT

PSET (mih, miv), ac

GET (70, 50)-(170, 198), mat
PUT (70, 51), mat, PSET

ac = POINT(mih, miv)
PSET (mih, miv), 40

LOOP

SUB bache (hh, vv)
LINE (hh - 1, vv - 1)-(hh + 1, vv + 1), 27, BF

h = hh
v = vv

FOR n = 1 TO 200
h = h + INT(RND * 3) - 1
v = v + INT(RND * 3) - 1

IF h > (hh + 15) THEN h = h - INT(RND * 5)
IF h < (hh - 15) THEN h = h + INT(RND * 5)

IF v > (vv + 15) THEN v = v - INT(RND * 5)
IF v < (vv - 15) THEN v = v + INT(RND * 5)


IF POINT(h, v) <> 7 THEN
   IF POINT(h - 1, v - 1) = 7 THEN PSET (h - 1, v - 1), 27 - INT(RND * 3)
   IF POINT(h - 1, v) = 7 THEN PSET (h - 1, v), 27 - INT(RND * 3)
   IF POINT(h - 1, v + 1) = 7 THEN PSET (h - 1, v + 1), 27 - INT(RND * 3)
   IF POINT(h, v + 1) = 7 THEN PSET (h, v + 1), 27 + INT(RND * 3)
   IF POINT(h + 1, v + 1) = 7 THEN PSET (h + 1, v + 1), 27 - INT(RND * 3)
   IF POINT(h + 1, v) = 7 THEN PSET (h + 1, v), 27 + INT(RND * 3)
   IF POINT(h + 1, v - 1) = 7 THEN PSET (h + 1, v - 1), 27 + INT(RND * 3)
   IF POINT(h, v - 1) = 7 THEN PSET (h, v - 1), 27 - INT(RND * 3)
   PSET (h, v), 7
END IF
NEXT

END SUB

SUB letras (h1, v, n$, c, ch, cv, dh, dv, gh, gv)
h = h1
n$ = UCASE$(n$)
FOR n = 1 TO LEN(n$)
SELECT CASE MID$(n$, n, 1)
CASE "A": cad$ = "0111010001100011000110001111111000110001"
CASE "B": cad$ = "111101000110001100011111010001100011111"
CASE "C": cad$ = "011101000110000100001000010000100010111"
CASE "D": cad$ = "11100100101000110001100011000110010111"
CASE "E": cad$ = "1111110000100001000011110100001000011111"
CASE "F": cad$ = "111111000010000100001111010000100001"
CASE "G": cad$ = "011101000110000100001000010011100010111"
CASE "H": cad$ = "1000110001100011000111111100011000110001"
CASE "I": cad$ = "1111100100001000010000100001000010011111"
CASE "J": cad$ = "000110000100001000010000100001100010111"
CASE "K": cad$ = "1000010001100101010011000101001001010001"
CASE "L": cad$ = "1000010000100001000010000100001000011111"
CASE "M": cad$ = "1000111011111111010110001100011000110001"
CASE "N": cad$ = "1000110001100011100110101100111000110001"
CASE "¥": cad$ = "1111100000100011000111001101011001110001"
CASE "O": cad$ = "011101000110001100011000110001100010111"
CASE "P": cad$ = "011101000110001100011111010000100001"
CASE "Q": cad$ = "0111010001100011000110001100011001001101"
CASE "R": cad$ = "0111010001100011000111110101001001010001"
CASE "S": cad$ = "011101000110000100000111000001100010111"
CASE "T": cad$ = "11111001000010000100001000010000100001"
CASE "U": cad$ = "100011000110001100011000110001100010111"
CASE "V": cad$ = "10001100011000110001100011101101010001"
CASE "W": cad$ = "100011000110001100011010110101101010111"
CASE "X": cad$ = "1000101010010100010000100010100101010001"
CASE "Y": cad$ = "10001100011000110001011100010000100001"
CASE "Z": cad$ = "1111100001000010001011111010001100011111"
CASE "1": cad$ = "001000110011100001000010000100001000111"
CASE "2": cad$ = "0111010001000010001000100010001000011111"
CASE "3": cad$ = "011101000100001000010011000001100010111"
CASE "4": cad$ = "1000010000100011000111111000010000100001"
CASE "5": cad$ = "111111000010000100001111000001100010111"
CASE "6": cad$ = "001100100010000100001111010001100010111"
CASE "7": cad$ = "11111100010000100010000100010000100001"
CASE "8": cad$ = "011101000110001100010111010001100010111"
CASE "9": cad$ = "0111010001100011000101111000010000100001"
CASE "0": cad$ = "011101000110001100011000110001100010111"
CASE ".": cad$ = "0000000000000000000000000000000000001"
CASE ",": cad$ = "00000000000000000000000000000000000010001"
CASE "-": cad$ = "0000000000000000000011111"
CASE "+": cad$ = "000000000000100001001111100100001"
CASE "=": cad$ = "00000000000000000000111110000011111"
CASE " ": cad$ = ""
CASE "Û": cad$ = STRING$(40, "1")
CASE ELSE: cad$ = "0000000000000000000000000000000000011111"
END SELECT
nnn = 0
FOR vv = 1 TO 10
FOR hh = 1 TO 5
nnn = nnn + 1
IF MID$(cad$, nnn, 1) = "1" THEN LINE (h + (hh * dh), v + (vv * dv))-STEP(gh, gv), c + ((vv - 1) * cv) + ((hh - 1) * ch), BF
NEXT
NEXT
h = h + (dh * 6)
NEXT
END SUB

