' ' © 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