'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...        es.geocities.com/jm00092
'
'______________________________________________________________________
'                                            TIPO TETRIS HECHO EN RONDA
DECLARE SUB lineas (h!, v!, l!)
DECLARE SUB boton (h!, v!, l!, a!, s!, o!, C!)
DECLARE SUB REPERTORIO ()
DECLARE SUB pieza (h!, v!, n!, C!)
DECLARE FUNCTION ocupado! (h!, v!, n!)
DECLARE SUB cargarformas ()
RANDOMIZE TIMER
DIM SHARED forma$(1 TO 40)
SCREEN 13
cargarformas
REPERTORIO

SLEEP

PAINT (1, 1), 92
boton 6, 2, 243, 195, 44, 15, 0


DO
   h = 24 + (INT(RND * 20) * 8)
   v = 4
   tipo = (INT(RND * 10) + 1) * (INT(RND * 4) + 1)
   pieza h, v, tipo, 30
   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, 30
            ELSE
               tipo = atipo
               pieza h, v, tipo, 30
               SOUND 3000, 1
            END IF

         CASE CHR$(0) + "P": v = v + 8
        
         CASE CHR$(0) + "K": h = h - 8

         CASE CHR$(0) + "M": h = h + 8

         CASE "": v = v + 8

         CASE CHR$(27): END
      END SELECT

      pieza ah, av, tipo, 0

      IF ocupado(h, v, tipo) = 0 THEN
         pieza h, v, tipo, 30
      ELSE
         pieza ah, av, tipo, 30
         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, .3
   NEXT
   lineas 8, 188, 30
LOOP


'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'
SUB boton (h, v, l, a, s, o, C)
LINE (h, v)-STEP(l - 1, a - 1), s, B
LINE (h + 1, v + 1)-STEP(l - 2, a - 2), o, B
LINE (h + 1, v + 1)-STEP(l - 3, a - 3), C, BF
END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'
SUB cargarformas
 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) = "1110010001000100"
forma$(20) = "0001111100010000"
forma$(30) = "0100010001001110"
forma$(40) = "1000111110000000"

END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'
SUB lineas (h, v, l)

FOR vv = v TO 10 STEP -8
 hay = 0
 FOR hh = h TO h + ((l - 1) * 8) STEP 8
 hay = hay + POINT(hh, vv)
 NEXT
IF hay = l * 30 THEN
BEEP



FOR hh = h TO h + ((l - 1) * 8) STEP 8
LINE (hh, vv)-STEP(7, 7), 0, BF
FOR delay = 1 TO 200: NEXT
NEXT

FOR vvv = vv TO 10 STEP -8
FOR hh = h TO h + ((l - 1) * 8) STEP 8
IF POINT(hh, vvv - 8) <> 0 THEN
LINE (hh, vvv - 8)-STEP(7, 7), 0, BF
boton hh, vvv, 7, 7, 30, 26, 28
FOR delay = 1 TO 100: NEXT
END IF
NEXT
NEXT
vv = vv + 8
END IF
NEXT

END SUB

'
'  © 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 + 30 STEP 8
   FOR hh = h TO h + 30 STEP 8
      x = x + 1
      IF MID$(forma$(n), x, 1) = "1" THEN ocu = ocu + POINT(hh, vv)
   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 + 30 STEP 8
   FOR hh = h TO h + 30 STEP 8
      x = x + 1
      IF MID$(forma$(n), x, 1) = "1" THEN
         IF C = 0 THEN LINE (hh, vv)-STEP(6, 6), C, BF:  ELSE boton hh, vv, 7, 7, 30, 26, 28
      END IF
   NEXT
NEXT
END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'
SUB REPERTORIO
x = 0
FOR vvv = 10 TO 100 STEP 30
   FOR hhh = 10 TO 300 STEP 30
      x = x + 1
      LINE (hhh, vvv)-STEP(22, 22), 22, B
      xx = 0
      FOR vv = vvv TO vvv + 20 STEP 6
         FOR hh = hhh TO hhh + 20 STEP 6
            xx = xx + 1
            IF MID$(forma$(x), xx, 1) = "1" THEN LINE (hh, vv)-STEP(4, 4), 14, BF
         NEXT
      NEXT
   NEXT
NEXT
LOCATE 18, 1: COLOR 64: PRINT "      TIPO TETRIS M£LTIPLES PIEZAS"
LOCATE 20, 1: COLOR 45: PRINT "           JM. HECHO EN RONDA        "
LOCATE 22, 1: COLOR 22: PRINT "   Pulsa cualquier tecla para empezar"

END SUB

