'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...        es.geocities.com/jm00092
'
'______________________________________________________________________
'                                 TIPO TETRIS MODO TEXTO HECHO EN RONDA
'
'
'
DECLARE SUB recuadro (f1!, c1!, f2!, c2!, cf!, cm!)
DECLARE SUB pieza (h!, v!, n!, c!)
DECLARE FUNCTION ocupado! (h!, v!, n!)

RANDOMIZE TIMER
DIM SHARED forma$(1 TO 40)


 forma$(1) = "0100111000000000"
forma$(11) = "0100110001000000"
forma$(21) = "0000111001000000"
forma$(31) = "0100011001000000"

 forma$(2) = "1000111000000000"
forma$(12) = "0110010001000000"
forma$(22) = "0000111000100000"
forma$(32) = "0100010011000000"

 forma$(3) = "0010111000000000"
forma$(13) = "0100010001100000"
forma$(23) = "0000111010000000"
forma$(33) = "1100010001000000"

 forma$(4) = "0000111100000000"
forma$(14) = "0010001000100010"
forma$(24) = "0000000011110000"
forma$(34) = "0100010001000100"

 forma$(5) = "1100011000000000"
forma$(15) = "0010011001000000"
forma$(25) = "0000110001100000"
forma$(35) = "0100110010000000"

 forma$(6) = "0110110000000000"
forma$(16) = "0100011000100000"
forma$(26) = "0000011011000000"
forma$(36) = "1000110001000000"

 forma$(7) = "1100110000000000"
forma$(17) = "1100110000000000"
forma$(27) = "1100110000000000"
forma$(37) = "1100110000000000"

 forma$(8) = "1110101000000000"
forma$(18) = "0110001001100000"
forma$(28) = "0000101011100000"
forma$(38) = "1100100011000000"

 forma$(9) = "1100100000000000"
forma$(19) = "1100010000000000"
forma$(29) = "0100110000000000"
forma$(39) = "1000110000000000"

forma$(10) = "1110111000000000"
forma$(20) = "1100110011000000"
forma$(30) = "0000011101110000"
forma$(40) = "0000011001100110"



SCREEN 0
COLOR 0, 0
PALETTE 12, 36
CLS


recuadro 1, 8, 25, 72, 8, 0
recuadro 1, 9, 25, 34, 8, 0
LOCATE 20, 40: COLOR 10: PRINT lineas; "L¡neas"
LOCATE 24, 44: COLOR 7: PRINT "JM. Hecho en Ronda";


proxtipo = (INT(RND * 10) + 1) * (INT(RND * 4) + 1)



DO
   h = 10 + (INT(RND * 9) * 2)
   v = 2
   estecolor = INT(RND * 6) + 9

   tipo = proxtipo
   IF ocupado(h, v, tipo) <> 0 THEN
      pieza h, v, tipo, 31
      LOCATE 12, 40: COLOR 10: PRINT "JUEGO TERMINADO"
      BEEP
      END
   END IF
   pieza h, v, tipo, estecolor
   proxtipo = (INT(RND * 10) + 1) * (INT(RND * 4) + 1)
   pieza 40, 3, tipo, 0

   pieza 40, 3, proxtipo, 7

   

   DO
      ret = 0
      DO
         kbd$ = INKEY$
         ret = ret + 1
      LOOP WHILE kbd$ = "" AND ret < 2000
     
      ah = h
      av = v
     
      SELECT CASE kbd$
         CASE CHR$(0) + "H"
            atipo = tipo
            tipo = tipo + 10
            IF tipo > 40 THEN tipo = tipo - 40
            pieza h, v, atipo, 0
            IF ocupado(h, v, tipo) = 0 THEN
               pieza h, v, tipo, estecolor
            ELSE
               tipo = atipo
               pieza h, v, tipo, 0
               SOUND 3000, 1
            END IF

         CASE CHR$(0) + "P": v = v + 1
         CASE CHR$(0) + "K": h = h - 2
         CASE CHR$(0) + "M": h = h + 2
         CASE "": v = v + 1
         CASE CHR$(27): END
      END SELECT

      pieza ah, av, tipo, 0

      IF ocupado(h, v, tipo) = 0 THEN
         pieza h, v, tipo, estecolor
      ELSE
         pieza ah, av, tipo, estecolor - 8
         IF v <> av THEN EXIT DO
         h = ah
         v = av
         SOUND 3000, 1
      END IF

   LOOP
  
   FOR n = 800 TO 1300 STEP 100
      SOUND n, .2
   NEXT
  
  
  
  


   FOR vv = 24 TO 2 STEP -1
 
      hay = 1
      FOR hh = 10 TO 10 + ((12 - 1) * 2) STEP 2
         IF SCREEN(vv, hh, 1) = 0 THEN hay = 0
      NEXT
 
 
      IF hay = 1 THEN
 
         FOR hh = 10 TO 10 + ((12 - 1) * 2) STEP 2
            LOCATE vv, hh: COLOR 15: PRINT "²²";
            FOR delay = 1 TO 500: NEXT
         NEXT
 
         FOR hh = 10 TO 10 + ((12 - 1) * 2) STEP 2
            LOCATE vv, hh: COLOR 0: PRINT "²²";
            FOR delay = 1 TO 1000: NEXT
         NEXT



         FOR vvv = vv TO 3 STEP -1
            FOR hh = 10 TO 10 + ((12 - 1) * 2) STEP 2
               IF SCREEN(vvv - 1, hh, 1) <> 0 THEN
                  LOCATE vvv - 1, hh: COLOR 0: PRINT "²²";
                  LOCATE vvv, hh: COLOR 7: PRINT "²²";
                  FOR delay = 1 TO 400: NEXT
               END IF
            NEXT
         NEXT
    
         vv = vv + 1

         lineas = lineas + 1
         LOCATE 20, 40: COLOR 10: PRINT lineas; "L¡neas"


      END IF

   NEXT



LOOP

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'
FUNCTION ocupado (h, v, n)

ocu = 0
x = 0

FOR vv = v TO v + 3
   FOR hh = h TO h + 6 STEP 2
      x = x + 1
      IF MID$(forma$(n), x, 1) = "1" THEN ocu = ocu + SCREEN(vv, hh, 1)
   NEXT
NEXT

ocupado = ocu

END FUNCTION

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'
SUB pieza (h, v, n, c)

x = 0

FOR vv = v TO v + 3
   FOR hh = h TO h + 6 STEP 2
      x = x + 1
      IF MID$(forma$(n), x, 1) = "1" THEN : LOCATE vv, hh: COLOR c: PRINT "²²";
   NEXT
NEXT

END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'
SUB recuadro (f1, c1, f2, c2, cf, cm) STATIC

COLOR cf, cm
ANCHO = c2 - c1 + 1
LOCATE f1, c1
PRINT "É"; STRING$(ANCHO - 2, "Í"); "»";

FOR a = f1 + 1 TO f2 - 1
   LOCATE a, c1
   PRINT "º";
   LOCATE a, c1 + (ANCHO - 1): PRINT "º";
NEXT

LOCATE f2, c1
PRINT "È"; STRING$(ANCHO - 2, "Í"); "¼";

END SUB

