DECLARE SUB finulo () DECLARE SUB ju () DECLARE SUB newgame () DECLARE SUB loadgame () DECLARE SUB savegame () DECLARE SUB parciales () DECLARE SUB menu () DECLARE SUB escapo () DECLARE SUB velocity () DECLARE SUB te4 (fil!, col!) DECLARE SUB te3 (fil!, col!) DECLARE SUB te1 (fil!, col!) DECLARE SUB te2 (fil!, col!) DECLARE SUB underte () DECLARE SUB undernula2 () DECLARE SUB renula1 (fil!, col!) DECLARE SUB renula2 (fil!, col!) DECLARE SUB undernula1 () DECLARE SUB nula1 (fil!, col!) DECLARE SUB nula2 (fil!, col!) DECLARE SUB rele4 (fil!, col!) DECLARE SUB rele3 (fil!, col!) DECLARE SUB underele2 () DECLARE SUB rele1 (fil!, col!) DECLARE SUB rele2 (fil!, col!) DECLARE SUB undercuadro () DECLARE SUB cuadro (fil!, col!) DECLARE SUB underbarra () DECLARE SUB barra1 (fil!, col!) DECLARE SUB barra2 (fil!, col!) DECLARE SUB linea (fil!, col!) DECLARE SUB ele3 (fil!, col!) DECLARE SUB ele4 (fil!, col!) DECLARE SUB underele () DECLARE SUB ele2 (fil!, col!) DECLARE SUB ele1 (fil!, col!) COMMON SHARED pausa, lines, score, speed COMMON SHARED singl, doubl, tripl, tetri COMMON SHARED controlaboludos SCREEN 13 CLEAR REDIM SHARED posi(25, 40) REDIM SHARED pi(2) REDIM SHARED sfxele(2) REDIM SHARED sfxrele(2) REDIM SHARED sfxte(2) REDIM SHARED sfxnula1(2) REDIM SHARED sfxnula2(2) REDIM SHARED sfxbarra(2) menu SUB barra1 (fil, col) LOCATE fil + 3, col: PRINT "Û" LOCATE fil + 2, col: PRINT "Û" LOCATE fil + 1, col: PRINT "Û" LOCATE fil, col: PRINT "Û" END SUB SUB barra2 (fil, col) LOCATE fil + 1, col - 1: PRINT "ÛÛÛÛ" END SUB SUB cuadro (fil, col) LOCATE fil + 1, col: PRINT "ÛÛ" LOCATE fil, col: PRINT "ÛÛ" END SUB SUB ele1 (fil, col) LOCATE fil + 2, col: PRINT "ÛÛ" LOCATE fil + 1, col: PRINT "Û" LOCATE fil, col: PRINT "Û" END SUB SUB ele2 (fil, col) LOCATE fil + 1, col: PRINT "Û" LOCATE fil, col: PRINT "ÛÛÛ" END SUB SUB ele3 (fil, col) LOCATE fil + 2, col + 1: PRINT "Û" LOCATE fil + 1, col + 1: PRINT "Û" LOCATE fil, col: PRINT "ÛÛ" END SUB SUB ele4 (fil, col) LOCATE fil + 1, col: PRINT "ÛÛÛ" LOCATE fil, col + 2: PRINT "Û" END SUB SUB escapo poraca: parciales REDIM o$(5) o$(1) = "CONTINUE" o$(2) = "NEW GAME" o$(3) = "LAST GAME" o$(4) = "SAVE GAME" o$(5) = "EXIT GAME" LOCATE 14, 30: PRINT "CONTINUE" LOCATE 16, 30: PRINT "NEW GAME" LOCATE 18, 30: PRINT "LAST GAME" LOCATE 20, 30: PRINT "SAVE GAME" LOCATE 22, 30: PRINT "EXIT GAME" COLOR 8: LOCATE 14, 30: PRINT "CONTINUE": COLOR 15: opi = 1: f = 14 press$ = "" DO UNTIL press$ = CHR$(13) press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN IF opi = 5 THEN LOCATE f, 30: PRINT o$(opi) f = 14: opi = 1 COLOR 8: LOCATE f, 30: PRINT o$(opi): COLOR 15 ELSE LOCATE f, 30: PRINT o$(opi) f = f + 2: opi = opi + 1 COLOR 8: LOCATE f, 30: PRINT o$(opi): COLOR 15 END IF END IF IF press$ = CHR$(0) + "H" THEN IF opi = 1 THEN LOCATE f, 30: PRINT o$(opi) f = 22: opi = 5 COLOR 8: LOCATE f, 30: PRINT o$(opi): COLOR 15 ELSE LOCATE f, 30: PRINT o$(opi) f = f - 2: opi = opi - 1 COLOR 8: LOCATE f, 30: PRINT o$(opi): COLOR 15 END IF END IF LOOP IF opi = 1 THEN FOR fil = 13 TO 20 LOCATE fil, 1: PRINT STRING$(11, " ") + "º" NEXT FOR fil = 14 TO 22 LOCATE fil, 30: PRINT " " NEXT EXIT SUB END IF IF opi = 2 THEN CLS : CALL newgame: CALL ju IF opi = 3 THEN CLS : CALL loadgame: CALL ju IF opi = 4 THEN savegame FOR fil = 13 TO 20 LOCATE fil, 1: PRINT STRING$(10, " ") NEXT FOR fil = 14 TO 22 LOCATE fil, 30: PRINT " " NEXT GOTO poraca END IF finulo END SUB SUB finulo CLS : END END SUB SUB ju FOR fil = 1 TO 22 LOCATE fil, 12: PRINT CHR$(186) LOCATE fil, 27: PRINT CHR$(186) NEXT LOCATE 23, 12: PRINT CHR$(200) + STRING$(14, 205) + CHR$(188) velocity RANDOMIZE TIMER pi(1) = INT(RND * 7) + 1 pi(2) = INT(RND * 7) + 1 sfxele(1) = INT(RND * 4) + 1 sfxele(2) = INT(RND * 4) + 1 sfxrele(1) = INT(RND * 4) + 1 sfxrele(2) = INT(RND * 4) + 1 sfxte(1) = INT(RND * 4) + 1 sfxte(2) = INT(RND * 4) + 1 sfxnula1(1) = INT(RND * 2) + 1 sfxnula1(2) = INT(RND * 2) + 1 sfxnula2(1) = INT(RND * 2) + 1 sfxnula2(2) = INT(RND * 2) + 1 sfxbarra(1) = INT(RND * 2) + 1 sfxbarra(2) = INT(RND * 2) + 1 DO controlaboludos = 0 LOCATE 1, 1: PRINT "LINES:" LOCATE 2, 5: PRINT lines LOCATE 4, 1: PRINT "SPEED:" LOCATE 5, 5: PRINT RTRIM$(STR$(speed)) LOCATE 7, 1: PRINT "SCORE:" LOCATE 8, 5: PRINT RTRIM$(STR$(score)) FOR fil = 2 TO 6: LOCATE fil, 30: PRINT " ": NEXT fil = 2: col = 33 IF pi(2) = 1 THEN IF sfxele(2) = 1 THEN CALL ele1(fil, col) IF sfxele(2) = 2 THEN CALL ele2(fil, col) IF sfxele(2) = 3 THEN CALL ele3(fil, col) IF sfxele(2) = 4 THEN CALL ele4(fil, col) ELSEIF pi(2) = 2 THEN CALL cuadro(fil, col) ELSEIF pi(2) = 3 THEN IF sfxbarra(2) = 1 THEN CALL barra1(fil, col) IF sfxbarra(2) = 2 THEN CALL barra2(fil, col) ELSEIF pi(2) = 4 THEN IF sfxrele(2) = 1 THEN CALL rele1(fil, col) IF sfxrele(2) = 2 THEN CALL rele2(fil, col) IF sfxrele(2) = 3 THEN CALL rele3(fil, col) IF sfxrele(2) = 4 THEN CALL rele4(fil, col) ELSEIF pi(2) = 5 THEN IF sfxnula1(2) = 1 THEN CALL nula1(fil, col) IF sfxnula1(2) = 2 THEN CALL nula2(fil, col) ELSEIF pi(2) = 6 THEN IF sfxnula2(2) = 1 THEN CALL renula1(fil, col) IF sfxnula2(2) = 2 THEN CALL renula2(fil, col) ELSEIF pi(2) = 7 THEN IF sfxte(2) = 1 THEN CALL te1(fil, col) IF sfxte(2) = 2 THEN CALL te2(fil, col) IF sfxte(2) = 3 THEN CALL te3(fil, col) IF sfxte(2) = 4 THEN CALL te4(fil, col) END IF IF pi(1) = 1 THEN underele IF pi(1) = 2 THEN undercuadro IF pi(1) = 3 THEN underbarra IF pi(1) = 4 THEN underele2 IF pi(1) = 5 THEN undernula1 IF pi(1) = 6 THEN undernula2 IF pi(1) = 7 THEN underte IF controlaboludos = 0 THEN FOR x = 1 TO 56 LINE (96, 0)-(96 + x, 33 + x), 0, BF LINE (208, 0)-(208 - x, 33 + x), 0, BF LINE (96, 175)-(96 + x, 145 - x), 0, BF LINE (208, 175)-(208 - x, 145 - x), 0, BF FOR t = 1 TO 150: NEXT NEXT FOR x = 1 TO 50 LINE (96 + x, 88)-(208 - x, 88) FOR t = 1 TO 100: NEXT LINE (96 + x, 88)-(208 - x, 88), 0 NEXT FOR x = 5 TO 1 STEP -1 CIRCLE (152, 88), x CIRCLE (152, 88), x, 0 NEXT parciales LOCATE 10, 32: PRINT "LOSE" LOCATE 21, 29: PRINT "PRESS ENTER" LOCATE 22, 29: PRINT "TO CONTINUE" DO WHILE INKEY$ <> CHR$(13): LOOP menu END IF pi(1) = pi(2) pi(2) = INT(RND * 7) + 1 velocity LOOP END SUB SUB linea (fil, col) cuantas = 0 lineas: FOR fil = 22 TO 1 STEP -1 IF posi(fil, 12) = 1 AND posi(fil, 13) = 1 AND posi(fil, 14) = 1 AND posi(fil, 15) = 1 AND posi(fil, 16) = 1 AND posi(fil, 17) = 1 AND posi(fil, 18) = 1 AND posi(fil, 19) = 1 AND posi(fil, 20) = 1 AND posi(fil, 21) = 1 AND posi(fil, 22) = 1 AND posi(fil, 23) = 1 AND posi(fil, 24) = 1 AND posi(fil, 25) = 1 AND posi(fil, 26) = 1 AND posi(fil, 27) = 1 THEN GOTO unafilabien NEXT IF cuantas = 1 THEN score = score + 100: singl = singl + 1 IF cuantas = 2 THEN score = score + 300: doubl = doubl + 1 IF cuantas = 3 THEN score = score + 900: tripl = tripl + 1 IF cuantas = 4 THEN score = score + 1600: tetri = tetri + 1 EXIT SUB unafilabien: cuantas = cuantas + 1 lines = lines + 1 q = 0 fil = fil + 1 DO 'posi(fil - q - 1, 12) = posi(fil - q - 2, 12) posi(fil - q - 1, 13) = posi(fil - q - 2, 13) posi(fil - q - 1, 14) = posi(fil - q - 2, 14) posi(fil - q - 1, 15) = posi(fil - q - 2, 15) posi(fil - q - 1, 16) = posi(fil - q - 2, 16) posi(fil - q - 1, 17) = posi(fil - q - 2, 17) posi(fil - q - 1, 18) = posi(fil - q - 2, 18) posi(fil - q - 1, 19) = posi(fil - q - 2, 19) posi(fil - q - 1, 20) = posi(fil - q - 2, 20) posi(fil - q - 1, 21) = posi(fil - q - 2, 21) posi(fil - q - 1, 22) = posi(fil - q - 2, 22) posi(fil - q - 1, 23) = posi(fil - q - 2, 23) posi(fil - q - 1, 24) = posi(fil - q - 2, 24) posi(fil - q - 1, 25) = posi(fil - q - 2, 25) posi(fil - q - 1, 26) = posi(fil - q - 2, 26) 'posi(fil - q - 1, 27) = posi(fil - q - 2, 27) q = q + 1 LOOP UNTIL fil - q - 2 = 0 FOR f = 1 TO fil - 1 FOR c = 13 TO 26 LOCATE f, c: PRINT " " NEXT NEXT FOR fil = 1 TO 22 FOR col = 13 TO 26 IF posi(fil, col) = 1 THEN LOCATE fil, col: PRINT "Û" NEXT NEXT GOTO lineas END SUB SUB loadgame OPEN "tetris.dat" FOR INPUT AS #1 DIM reco(25, 40) FOR fil = 1 TO 25 FOR col = 1 TO 40 INPUT #1, reco(fil, col) posi(fil, col) = reco(fil, col) NEXT NEXT INPUT #1, pausa, lines, score, speed, singl, doubl, tripl, tetri FOR fil = 1 TO 22 FOR col = 13 TO 26 IF posi(fil, col) = 1 THEN LOCATE fil, col: PRINT "Û" NEXT NEXT CLOSE END SUB SUB menu CLS FOR fil = 1 TO 22 LOCATE fil, 12: PRINT CHR$(186) LOCATE fil, 27: PRINT CHR$(186) NEXT LOCATE 23, 12: PRINT CHR$(200) + STRING$(14, 205) + CHR$(188) REDIM o$(4) o$(1) = "NEW GAME" o$(2) = "LAST GAME" o$(3) = "EXIT GAME" LOCATE 18, 30: PRINT "NEW GAME" LOCATE 20, 30: PRINT "LAST GAME" LOCATE 22, 30: PRINT "EXIT GAME" COLOR 8: LOCATE 18, 30: PRINT "NEW GAME": COLOR 15: opi = 1: f = 18 press$ = "" DO UNTIL press$ = CHR$(13) press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN IF opi = 3 THEN LOCATE f, 30: PRINT o$(opi) f = 18: opi = 1 COLOR 8: LOCATE f, 30: PRINT o$(opi): COLOR 15 ELSE LOCATE f, 30: PRINT o$(opi) f = f + 2: opi = opi + 1 COLOR 8: LOCATE f, 30: PRINT o$(opi): COLOR 15 END IF END IF IF press$ = CHR$(0) + "H" THEN IF opi = 1 THEN LOCATE f, 30: PRINT o$(opi) f = 22: opi = 3 COLOR 8: LOCATE f, 30: PRINT o$(opi): COLOR 15 ELSE LOCATE f, 30: PRINT o$(opi) f = f - 2: opi = opi - 1 COLOR 8: LOCATE f, 30: PRINT o$(opi): COLOR 15 END IF END IF LOOP LOCATE 18, 30: PRINT " " LOCATE 20, 30: PRINT " " LOCATE 22, 30: PRINT " " IF opi = 1 THEN CALL newgame: CALL ju IF opi = 2 THEN CALL loadgame: CALL ju finulo END SUB SUB newgame FOR fil = 1 TO 25: FOR col = 1 TO 40: posi(fil, col) = 0: NEXT: NEXT FOR fil = 1 TO 22: FOR col = 1 TO 12: posi(fil, col) = 1: NEXT: NEXT FOR fil = 1 TO 22: FOR col = 27 TO 40: posi(fil, col) = 1: NEXT: NEXT FOR fil = 23 TO 25: FOR col = 1 TO 40: posi(fil, col) = 1: NEXT: NEXT END SUB SUB nula1 (fil, col) LOCATE fil + 2, col: PRINT "Û" LOCATE fil + 1, col: PRINT "ÛÛ" LOCATE fil, col + 1: PRINT "Û" END SUB SUB nula2 (fil, col) LOCATE fil + 1, col: PRINT "ÛÛ" LOCATE fil, col - 1: PRINT "ÛÛ" END SUB SUB parciales LOCATE 13, 1: PRINT "SINGLES:" LOCATE 14, 7: PRINT singl LOCATE 15, 1: PRINT "DOUBLES:" LOCATE 16, 7: PRINT doubl LOCATE 17, 1: PRINT "TRIPLES:" LOCATE 18, 7: PRINT tripl LOCATE 19, 1: PRINT "TETRIS.:" LOCATE 20, 7: PRINT tetri END SUB SUB rele1 (fil, col) LOCATE fil + 2, col: PRINT "ÛÛ" LOCATE fil + 1, col + 1: PRINT "Û" LOCATE fil, col + 1: PRINT "Û" END SUB SUB rele2 (fil, col) LOCATE fil + 1, col: PRINT "ÛÛÛ" LOCATE fil, col: PRINT "Û" END SUB SUB rele3 (fil, col) LOCATE fil + 2, col: PRINT "Û" LOCATE fil + 1, col: PRINT "Û" LOCATE fil, col: PRINT "ÛÛ" END SUB SUB rele4 (fil, col) LOCATE fil + 1, col + 2: PRINT "Û" LOCATE fil, col: PRINT "ÛÛÛ" END SUB SUB renula1 (fil, col) LOCATE fil + 2, col + 1: PRINT "Û" LOCATE fil + 1, col: PRINT "ÛÛ" LOCATE fil, col: PRINT "Û" END SUB SUB renula2 (fil, col) LOCATE fil + 1, col - 1: PRINT "ÛÛ" LOCATE fil, col: PRINT "ÛÛ" END SUB SUB savegame DIM reco(25, 40) OPEN "tetris.dat" FOR OUTPUT AS #1 FOR fil = 1 TO 25 FOR col = 1 TO 40 reco(fil, col) = posi(fil, col) WRITE #1, reco(fil, col) NEXT NEXT WRITE #1, pausa, lines, score, speed, singl, doubl, tripl, tetri CLOSE END SUB SUB te1 (fil, col) LOCATE fil + 1, col: PRINT "ÛÛÛ" LOCATE fil, col + 1: PRINT "Û" END SUB SUB te2 (fil, col) LOCATE fil + 2, col: PRINT "Û" LOCATE fil + 1, col: PRINT "ÛÛ" LOCATE fil, col: PRINT "Û" END SUB SUB te3 (fil, col) LOCATE fil + 1, col + 1: PRINT "Û" LOCATE fil, col: PRINT "ÛÛÛ" END SUB SUB te4 (fil, col) LOCATE fil + 2, col + 1: PRINT "Û" LOCATE fil + 1, col: PRINT "ÛÛ" LOCATE fil, col + 1: PRINT "Û" END SUB SUB underbarra fil = 1: col = 19 sfxbarra(1) = sfxbarra(2) sfxbarra(2) = INT(RND * 2) + 1 IF sfxbarra(1) = 1 THEN GOTO b1 IF sfxbarra(1) = 2 THEN fil = fil + 1: GOTO b2 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ b1: COLOR 15: CALL barra1(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(32) THEN IF posi(fil + 1 + 1, col - 1) = 0 AND posi(fil + 1 + 1, col) = 0 AND posi(fil + 1 + 1, col + 1) = 0 AND posi(fil + 1 + 1, col + 2) = 0 THEN COLOR 0: CALL barra1(fil, col): fil = fil + 1 + 1: GOTO b2 END IF IF press$ = CHR$(0) + "M" THEN IF posi(fil, col + 1) = 0 AND posi(fil + 1, col + 1) = 0 AND posi(fil + 2, col + 1) = 0 AND posi(fil + 3, col + 1) = 0 THEN COLOR 0: CALL barra1(fil, col) col = col + 1 COLOR 15: CALL barra1(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil, col - 1) = 0 AND posi(fil + 1, col - 1) = 0 AND posi(fil + 2, col - 1) = 0 AND posi(fil + 3, col - 1) = 0 THEN COLOR 0: CALL barra1(fil, col) col = col - 1 COLOR 15: CALL barra1(fil, col) END IF END IF NEXT COLOR 0: CALL barra1(fil, col) IF posi(fil + 3 + 1, col) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL barra1(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL barra1(fil, col) posi(fil, col) = 1 posi(fil + 1, col) = 1 posi(fil + 2, col) = 1 posi(fil + 3, col) = 1 CALL linea(fil, col) EXIT SUB 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ b2: fil = fil - 1 COLOR 15: CALL barra2(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(32) THEN IF posi(fil, col) = 0 AND posi(fil + 1, col) = 0 AND posi(fil + 2, col) = 0 AND posi(fil + 3, col) = 0 THEN COLOR 0: CALL barra2(fil, col): GOTO b1 END IF IF press$ = CHR$(0) + "M" THEN IF posi(fil + 1, col + 3) = 0 THEN COLOR 0: CALL barra2(fil, col) col = col + 1 COLOR 15: CALL barra2(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil + 1, col - 2) = 0 THEN COLOR 0: CALL barra2(fil, col) col = col - 1 COLOR 15: CALL barra2(fil, col) END IF END IF NEXT COLOR 0: CALL barra2(fil, col) IF posi(fil + 2, col - 1) = 0 AND posi(fil + 2, col) = 0 AND posi(fil + 2, col + 1) = 0 AND posi(fil + 2, col + 2) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL barra2(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL barra2(fil, col) posi(fil + 1, col - 1) = 1: posi(fil + 1, col) = 1: posi(fil + 1, col + 1) = 1: posi(fil + 1, col + 2) = 1 CALL linea(fil, col) END SUB SUB undercuadro fil = 1: col = 19 COLOR 15: CALL cuadro(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(0) + "M" THEN IF posi(fil, col + 2) = 0 AND posi(fil + 1, col + 2) = 0 THEN COLOR 0: CALL cuadro(fil, col) col = col + 1 COLOR 15: CALL cuadro(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil, col - 1) = 0 AND posi(fil + 1, col - 1) = 0 THEN COLOR 0: CALL cuadro(fil, col) col = col - 1 COLOR 15: CALL cuadro(fil, col) END IF END IF NEXT COLOR 0: CALL cuadro(fil, col) IF posi(fil + 1 + 1, col) = 0 AND posi(fil + 1 + 1, col + 1) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL cuadro(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL cuadro(fil, col) posi(fil, col) = 1: posi(fil, col + 1) = 1 posi(fil + 1, col) = 1: posi(fil + 1, col + 1) = 1 CALL linea(fil, col) END SUB SUB underele fil = 1: col = 19 sfxele(1) = sfxele(2) sfxele(2) = INT(RND * 4) + 1 IF sfxele(1) = 1 THEN GOTO e1 IF sfxele(1) = 2 THEN GOTO e2 IF sfxele(1) = 3 THEN GOTO e3 IF sfxele(1) = 4 THEN GOTO e4 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ e1: COLOR 15: CALL ele1(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(32) THEN IF posi(fil + 1, col) = 0 AND posi(fil + 1, col + 1) = 0 AND posi(fil + 1, col + 2) = 0 AND posi(fil + 1 + 1, col) = 0 THEN COLOR 0: CALL ele1(fil, col): fil = fil + 1: GOTO e2 END IF IF press$ = CHR$(0) + "M" THEN IF posi(fil, col + 1) = 0 AND posi(fil + 1, col + 1) = 0 AND posi(fil + 2, col + 1 + 1) = 0 THEN COLOR 0: CALL ele1(fil, col) col = col + 1 COLOR 15: CALL ele1(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil, col - 1) = 0 AND posi(fil + 1, col - 1) = 0 AND posi(fil + 2, col - 1) = 0 THEN COLOR 0: CALL ele1(fil, col) col = col - 1 COLOR 15: CALL ele1(fil, col) END IF END IF NEXT COLOR 0: CALL ele1(fil, col) IF posi(fil + 2 + 1, col) = 0 AND posi(fil + 2 + 1, col + 1) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL ele1(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL ele1(fil, col) posi(fil, col) = 1 posi(fil + 1, col) = 1 posi(fil + 2, col) = 1: posi(fil + 2, col + 1) = 1 CALL linea(fil, col) EXIT SUB 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ e2: COLOR 15: CALL ele2(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(32) THEN IF posi(fil, col) = 0 AND posi(fil, col + 1) = 0 AND posi(fil + 1, col + 1) = 0 AND posi(fil + 2, col + 1) = 0 THEN COLOR 0: CALL ele2(fil, col): GOTO e3 END IF IF press$ = CHR$(0) + "M" THEN IF posi(fil, col + 2 + 1) = 0 AND posi(fil + 1, col + 1) = 0 THEN COLOR 0: CALL ele2(fil, col) col = col + 1 COLOR 15: CALL ele2(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil, col - 1) = 0 AND posi(fil + 1, col - 1) = 0 THEN COLOR 0: CALL ele2(fil, col) col = col - 1 COLOR 15: CALL ele2(fil, col) END IF END IF NEXT COLOR 0: CALL ele2(fil, col) IF posi(fil + 1 + 1, col) = 0 AND posi(fil + 1, col + 1) = 0 AND posi(fil + 1, col + 2) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL ele2(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL ele2(fil, col) posi(fil, col) = 1: posi(fil, col + 1) = 1: posi(fil, col + 2) = 1 posi(fil + 1, col) = 1 CALL linea(fil, col) EXIT SUB 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ e3: COLOR 15: CALL ele3(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(32) THEN IF posi(fil + 1, col + 2) = 0 AND posi(fil + 1 + 1, col) = 0 AND posi(fil + 1 + 1, col + 1) = 0 AND posi(fil + 1 + 1, col + 2) = 0 THEN COLOR 0: CALL ele3(fil, col): fil = fil + 1: GOTO e4 END IF IF press$ = CHR$(0) + "M" THEN IF posi(fil, col + 1 + 1) = 0 AND posi(fil + 1, col + 1 + 1) = 0 AND posi(fil + 2, col + 1 + 1) = 0 THEN COLOR 0: CALL ele3(fil, col) col = col + 1 COLOR 15: CALL ele3(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil, col - 1) = 0 AND posi(fil + 1, col + 1 - 1) = 0 AND posi(fil + 2, col + 1 - 1) = 0 THEN COLOR 0: CALL ele3(fil, col) col = col - 1 COLOR 15: CALL ele3(fil, col) END IF END IF NEXT COLOR 0: CALL ele3(fil, col) IF posi(fil + 1, col) = 0 AND posi(fil + 2 + 1, col + 1) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL ele3(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL ele3(fil, col) posi(fil, col) = 1: posi(fil, col + 1) = 1 posi(fil + 1, col + 1) = 1 posi(fil + 2, col + 1) = 1 CALL linea(fil, col) EXIT SUB 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ e4: COLOR 15: CALL ele4(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(32) THEN IF posi(fil, col) = 0 AND posi(fil + 1, col) = 0 AND posi(fil + 2, col) = 0 AND posi(fil + 2, col + 1) = 0 THEN COLOR 0: CALL ele4(fil, col): GOTO e1 END IF IF press$ = CHR$(0) + "M" THEN IF posi(fil, col + 2 + 1) = 0 AND posi(fil + 1, col + 2 + 1) = 0 THEN COLOR 0: CALL ele4(fil, col) col = col + 1 COLOR 15: CALL ele4(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil, col + 2 - 1) = 0 AND posi(fil + 1, col - 1) = 0 THEN COLOR 0: CALL ele4(fil, col) col = col - 1 COLOR 15: CALL ele4(fil, col) END IF END IF NEXT COLOR 0: CALL ele4(fil, col) IF posi(fil + 1 + 1, col) = 0 AND posi(fil + 1 + 1, col + 1) = 0 AND posi(fil + 1 + 1, col + 2) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL ele4(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL ele4(fil, col) posi(fil, col + 2) = 1 posi(fil + 1, col) = 1: posi(fil + 1, col + 1) = 1: posi(fil + 1, col + 2) = 1 CALL linea(fil, col) END SUB SUB underele2 fil = 1: col = 19 sfxrele(1) = sfxrele(2) sfxrele(2) = INT(RND * 4) + 1 IF sfxrele(1) = 1 THEN GOTO ee1 IF sfxrele(1) = 2 THEN GOTO ee2 IF sfxrele(1) = 3 THEN GOTO ee3 IF sfxrele(1) = 4 THEN GOTO ee4 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ee1: COLOR 15: CALL rele1(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(32) THEN IF posi(fil + 1, col) = 0 AND posi(fil + 1 + 1, col) = 0 AND posi(fil + 1 + 1, col + 1) = 0 AND posi(fil + 1 + 1, col + 2) = 0 THEN COLOR 0: CALL rele1(fil, col): fil = fil + 1: GOTO ee2 END IF IF press$ = CHR$(0) + "M" THEN IF posi(fil, col + 1 + 1) = 0 AND posi(fil + 1, col + 1 + 1) = 0 AND posi(fil + 2, col + 1 + 1) = 0 THEN COLOR 0: CALL rele1(fil, col) col = col + 1 COLOR 15: CALL rele1(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil, col) = 0 AND posi(fil + 1, col) = 0 AND posi(fil + 2, col - 1) = 0 THEN COLOR 0: CALL rele1(fil, col) col = col - 1 COLOR 15: CALL rele1(fil, col) END IF END IF NEXT COLOR 0: CALL rele1(fil, col) IF posi(fil + 2 + 1, col) = 0 AND posi(fil + 2 + 1, col + 1) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL rele1(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL rele1(fil, col) posi(fil, col + 1) = 1 posi(fil + 1, col + 1) = 1 posi(fil + 2, col) = 1: posi(fil + 2, col + 1) = 1 CALL linea(fil, col) EXIT SUB 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ee2: COLOR 15: CALL rele2(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(32) THEN IF posi(fil, col) = 0 AND posi(fil, col + 1) = 0 AND posi(fil + 1, col) = 0 AND posi(fil + 2, col) = 0 THEN COLOR 0: CALL rele2(fil, col): GOTO ee3 END IF IF press$ = CHR$(0) + "M" THEN IF posi(fil + 1, col + 2 + 1) = 0 AND posi(fil, col + 1) = 0 THEN COLOR 0: CALL rele2(fil, col) col = col + 1 COLOR 15: CALL rele2(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil, col - 1) = 0 AND posi(fil + 1, col - 1) = 0 THEN COLOR 0: CALL rele2(fil, col) col = col - 1 COLOR 15: CALL rele2(fil, col) END IF END IF NEXT COLOR 0: CALL rele2(fil, col) IF posi(fil + 2, col) = 0 AND posi(fil + 2, col + 1) = 0 AND posi(fil + 2, col + 2) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL rele2(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL rele2(fil, col) posi(fil, col) = 1 posi(fil + 1, col) = 1: posi(fil + 1, col + 1) = 1: posi(fil + 1, col + 2) = 1 CALL linea(fil, col) EXIT SUB 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ee3: COLOR 15: CALL rele3(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(32) THEN IF posi(fil + 1, col) = 0 AND posi(fil + 1, col + 1) = 0 AND posi(fil + 1, col + 2) = 0 AND posi(fil + 1 + 1, col + 2) = 0 THEN COLOR 0: CALL rele3(fil, col): fil = fil + 1: GOTO ee4 END IF IF press$ = CHR$(0) + "M" THEN IF posi(fil, col + 1 + 1) = 0 AND posi(fil + 1, col + 1) = 0 AND posi(fil + 2, col + 1) = 0 THEN COLOR 0: CALL rele3(fil, col) col = col + 1 COLOR 15: CALL rele3(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil, col - 1) = 0 AND posi(fil + 1, col - 1) = 0 AND posi(fil + 2, col - 1) = 0 THEN COLOR 0: CALL rele3(fil, col) col = col - 1 COLOR 15: CALL rele3(fil, col) END IF END IF NEXT COLOR 0: CALL rele3(fil, col) IF posi(fil + 1, col + 1) = 0 AND posi(fil + 2 + 1, col) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL rele3(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL rele3(fil, col) posi(fil, col) = 1: posi(fil, col + 1) = 1 posi(fil + 1, col) = 1 posi(fil + 2, col) = 1 CALL linea(fil, col) EXIT SUB 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ee4: COLOR 15: CALL rele4(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(32) THEN IF posi(fil, col + 1) = 0 AND posi(fil + 1, col + 1) = 0 AND posi(fil + 2, col) = 0 AND posi(fil + 2, col + 1) = 0 THEN COLOR 0: CALL rele4(fil, col): GOTO ee1 END IF IF press$ = CHR$(0) + "M" THEN IF posi(fil, col + 2 + 1) = 0 AND posi(fil + 1, col + 2 + 1) = 0 THEN COLOR 0: CALL rele4(fil, col) col = col + 1 COLOR 15: CALL rele4(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil + 1, col + 2 - 1) = 0 AND posi(fil, col - 1) = 0 THEN COLOR 0: CALL rele4(fil, col) col = col - 1 COLOR 15: CALL rele4(fil, col) END IF END IF NEXT COLOR 0: CALL rele4(fil, col) IF posi(fil + 1, col) = 0 AND posi(fil + 1, col + 1) = 0 AND posi(fil + 1 + 1, col + 2) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL rele4(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL rele4(fil, col) posi(fil, col) = 1: posi(fil, col + 1) = 1: posi(fil, col + 2) = 1 posi(fil + 1, col + 2) = 1 CALL linea(fil, col) END SUB SUB undernula1 fil = 1: col = 19 sfxnula1(1) = sfxnula1(2) sfxnula1(2) = INT(RND * 2) + 1 IF sfxnula1(1) = 1 THEN GOTO n1 IF sfxnula1(1) = 2 THEN GOTO n2 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ n1: COLOR 15: CALL nula1(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(32) THEN IF posi(fil + 1, col - 1) = 0 AND posi(fil + 1, col) = 0 AND posi(fil + 1 + 1, col) = 0 AND posi(fil + 1 + 1, col + 1) = 0 THEN COLOR 0: CALL nula1(fil, col): fil = fil + 1: GOTO n2 END IF IF press$ = CHR$(0) + "M" THEN IF posi(fil, col + 2) = 0 AND posi(fil + 1, col + 2) = 0 AND posi(fil + 2, col + 1) = 0 THEN COLOR 0: CALL nula1(fil, col) col = col + 1 COLOR 15: CALL nula1(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil, col) = 0 AND posi(fil + 1, col - 1) = 0 AND posi(fil + 2, col - 1) = 0 THEN COLOR 0: CALL nula1(fil, col) col = col - 1 COLOR 15: CALL nula1(fil, col) END IF END IF NEXT COLOR 0: CALL nula1(fil, col) IF posi(fil + 2 + 1, col) = 0 AND posi(fil + 1 + 1, col + 1) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL nula1(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL nula1(fil, col) posi(fil, col + 1) = 1 posi(fil + 1, col) = 1: posi(fil + 1, col + 1) = 1 posi(fil + 2, col) = 1 CALL linea(fil, col) EXIT SUB 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ n2: COLOR 15: CALL nula2(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(32) THEN IF posi(fil, col + 1) = 0 AND posi(fil + 1, col) = 0 AND posi(fil + 1, col + 1) = 0 AND posi(fil + 2, col) = 0 THEN COLOR 0: CALL nula2(fil, col): GOTO n1 END IF IF press$ = CHR$(0) + "M" THEN IF posi(fil, col + 1) = 0 AND posi(fil + 1, col + 2) = 0 THEN COLOR 0: CALL nula2(fil, col) col = col + 1 COLOR 15: CALL nula2(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil, col - 1 - 1) = 0 AND posi(fil + 1, col - 1) = 0 THEN COLOR 0: CALL nula2(fil, col) col = col - 1 COLOR 15: CALL nula2(fil, col) END IF END IF NEXT COLOR 0: CALL nula2(fil, col) IF posi(fil + 2, col) = 0 AND posi(fil + 2, col + 1) = 0 AND posi(fil + 1, col - 1) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL nula2(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL nula2(fil, col) posi(fil, col - 1) = 1: posi(fil, col) = 1 posi(fil + 1, col) = 1: posi(fil + 1, col + 1) = 1 CALL linea(fil, col) END SUB SUB undernula2 fil = 1: col = 19 sfxnula2(1) = sfxnula2(2) sfxnula2(2) = INT(RND * 2) + 1: IF sfxnula2(1) = 1 THEN GOTO nn1 IF sfxnula2(1) = 2 THEN GOTO nn2 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ nn1: COLOR 15: CALL renula1(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(32) THEN IF posi(fil + 1, col) = 0 AND posi(fil + 1, col + 1) = 0 AND posi(fil + 1 + 1, col - 1) = 0 AND posi(fil + 1 + 1, col) = 0 THEN COLOR 0: CALL renula1(fil, col): fil = fil + 1: GOTO nn2 END IF IF press$ = CHR$(0) + "M" THEN IF posi(fil, col + 1) = 0 AND posi(fil + 1, col + 2) = 0 AND posi(fil + 2, col + 2) = 0 THEN COLOR 0: CALL renula1(fil, col) col = col + 1 COLOR 15: CALL renula1(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil, col - 1) = 0 AND posi(fil + 1, col - 1) = 0 AND posi(fil + 2, col) = 0 THEN COLOR 0: CALL renula1(fil, col) col = col - 1 COLOR 15: CALL renula1(fil, col) END IF END IF NEXT COLOR 0: CALL renula1(fil, col) IF posi(fil + 1 + 1, col) = 0 AND posi(fil + 2 + 1, col + 1) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL renula1(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL renula1(fil, col) posi(fil, col) = 1 posi(fil + 1, col) = 1: posi(fil + 1, col + 1) = 1 posi(fil + 2, col + 1) = 1 CALL linea(fil, col) EXIT SUB 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ nn2: COLOR 15: CALL renula2(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(32) THEN IF posi(fil, col) = 0 AND posi(fil + 1, col) = 0 AND posi(fil + 1, col + 1) = 0 AND posi(fil + 2, col + 1) = 0 THEN COLOR 0: CALL renula2(fil, col): GOTO nn1 END IF IF press$ = CHR$(0) + "M" THEN IF posi(fil, col + 1 + 1) = 0 AND posi(fil + 1, col + 1) = 0 THEN COLOR 0: CALL renula2(fil, col) col = col + 1 COLOR 15: CALL renula2(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil + 1, col - 1 - 1) = 0 AND posi(fil, col - 1) = 0 THEN COLOR 0: CALL renula2(fil, col) col = col - 1 COLOR 15: CALL renula2(fil, col) END IF END IF NEXT COLOR 0: CALL renula2(fil, col) IF posi(fil + 2, col - 1) = 0 AND posi(fil + 2, col) = 0 AND posi(fil + 1, col + 1) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL renula2(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL renula2(fil, col) posi(fil, col) = 1: posi(fil, col + 1) = 1 posi(fil + 1, col - 1) = 1: posi(fil + 1, col) = 1 CALL linea(fil, col) END SUB SUB underte fil = 1: col = 19 sfxte(1) = sfxte(2) sfxte(2) = INT(RND * 4) + 1 IF sfxte(1) = 1 THEN GOTO t1 IF sfxte(1) = 2 THEN GOTO t2 IF sfxte(1) = 3 THEN GOTO t3 IF sfxte(1) = 4 THEN GOTO t4 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t1: COLOR 15: CALL te1(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(32) THEN IF posi(fil, col) = 0 AND posi(fil + 1, col) = 0 AND posi(fil + 1, col + 1) = 0 AND posi(fil + 2, col) = 0 THEN COLOR 0: CALL te1(fil, col): GOTO t2 END IF IF press$ = CHR$(0) + "M" THEN IF posi(fil, col + 1 + 1) = 0 AND posi(fil + 1, col + 2 + 1) = 0 THEN COLOR 0: CALL te1(fil, col) col = col + 1 COLOR 15: CALL te1(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil, col + 1 - 1) = 0 AND posi(fil + 1, col - 1) = 0 THEN COLOR 0: CALL te1(fil, col) col = col - 1 COLOR 15: CALL te1(fil, col) END IF END IF NEXT COLOR 0: CALL te1(fil, col) IF posi(fil + 1 + 1, col) = 0 AND posi(fil + 1 + 1, col + 1) = 0 AND posi(fil + 1 + 1, col + 2) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL te1(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL te1(fil, col) posi(fil, col + 1) = 1 posi(fil + 1, col) = 1: posi(fil + 1, col + 1) = 1: posi(fil + 1, col + 2) = 1 CALL linea(fil, col) EXIT SUB 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t2: COLOR 15: CALL te2(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(32) THEN IF posi(fil + 1, col) = 0 AND posi(fil + 1, col + 1) = 0 AND posi(fil + 1, col + 2) = 0 AND posi(fil + 1 + 1, col + 1) = 0 THEN COLOR 0: CALL te2(fil, col): fil = fil + 1: GOTO t3 END IF IF press$ = CHR$(0) + "M" THEN IF posi(fil, col + 1) = 0 AND posi(fil + 1, col + 2) = 0 AND posi(fil + 2, col + 1) = 0 THEN COLOR 0: CALL te2(fil, col) col = col + 1 COLOR 15: CALL te2(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil, col - 1) = 0 AND posi(fil + 1, col - 1) = 0 AND posi(fil + 2, col - 1) = 0 THEN COLOR 0: CALL te2(fil, col) col = col - 1 COLOR 15: CALL te2(fil, col) END IF END IF NEXT COLOR 0: CALL te2(fil, col) IF posi(fil + 2 + 1, col) = 0 AND posi(fil + 1 + 1, col + 1) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL te2(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL te2(fil, col) posi(fil, col) = 1 posi(fil + 1, col) = 1: posi(fil + 1, col + 1) = 1 posi(fil + 2, col) = 1 CALL linea(fil, col) EXIT SUB 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t3: COLOR 15: CALL te3(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(32) THEN IF posi(fil, col + 1) = 0 AND posi(fil + 1, col) = 0 AND posi(fil + 1, col + 1) = 0 AND posi(fil + 2, col + 1) = 0 THEN COLOR 0: CALL te3(fil, col): GOTO t4 END IF IF press$ = CHR$(0) + "M" THEN IF posi(fil + 1, col + 1 + 1) = 0 AND posi(fil, col + 2 + 1) = 0 THEN COLOR 0: CALL te3(fil, col) col = col + 1 COLOR 15: CALL te3(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil + 1, col + 1 - 1) = 0 AND posi(fil, col - 1) = 0 THEN COLOR 0: CALL te3(fil, col) col = col - 1 COLOR 15: CALL te3(fil, col) END IF END IF NEXT COLOR 0: CALL te3(fil, col) IF posi(fil + 1, col) = 0 AND posi(fil + 1 + 1, col + 1) = 0 AND posi(fil + 1, col + 2) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL te3(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL te3(fil, col) posi(fil, col) = 1: posi(fil, col + 1) = 1: posi(fil, col + 2) = 1 posi(fil + 1, col + 1) = 1 CALL linea(fil, col) EXIT SUB 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t4: COLOR 15: CALL te4(fil, col) DO FOR t = 1 TO pausa press$ = INKEY$ IF press$ = CHR$(0) + "P" THEN EXIT FOR IF press$ = CHR$(27) THEN escapo IF press$ = CHR$(32) THEN IF posi(fil + 1, col + 1) = 0 AND posi(fil + 1 + 1, col) = 0 AND posi(fil + 1 + 1, col + 1) = 0 AND posi(fil + 1 + 1, col + 2) = 0 THEN COLOR 0: CALL te4(fil, col): fil = fil + 1: GOTO t1 END IF IF press$ = CHR$(0) + "M" THEN IF posi(fil, col + 2) = 0 AND posi(fil + 1, col + 2) = 0 AND posi(fil + 2, col + 2) = 0 THEN COLOR 0: CALL te4(fil, col) col = col + 1 COLOR 15: CALL te4(fil, col) END IF END IF IF press$ = CHR$(0) + "K" THEN IF posi(fil, col + 1 - 1) = 0 AND posi(fil + 1, col - 1) = 0 AND posi(fil + 2, col + 1 - 1) = 0 THEN COLOR 0: CALL te4(fil, col) col = col - 1 COLOR 15: CALL te4(fil, col) END IF END IF NEXT COLOR 0: CALL te4(fil, col) IF posi(fil + 1 + 1, col) = 0 AND posi(fil + 2 + 1, col + 1) = 0 THEN fil = fil + 1 ELSE EXIT DO COLOR 15: CALL te4(fil, col) controlaboludos = 1 LOOP UNTIL press$ = CHR$(27) COLOR 15: CALL te4(fil, col) posi(fil, col + 1) = 1 posi(fil + 1, col) = 1: posi(fil + 1, col + 1) = 1 posi(fil + 2, col + 1) = 1 CALL linea(fil, col) END SUB SUB velocity constante = 8 SELECT CASE score CASE 0 TO 10000 speed = 0: pausa = 2100 * constante CASE 10000 TO 20000 speed = 1: pausa = 1900 * constante CASE 20000 TO 30000 speed = 2: pausa = 1700 * constante CASE 30000 TO 40000 speed = 3: pausa = 1500 * constante CASE 40000 TO 50000 speed = 4: pausa = 1300 * constante CASE 50000 TO 60000 speed = 5: pausa = 1100 * constante CASE 60000 TO 70000 speed = 6: pausa = 900 * constante CASE 70000 TO 80000 speed = 7: pausa = 700 * 4 CASE 80000 TO 90000 speed = 8: pausa = 500 * 4 CASE 90000 TO 100000 speed = 9: pausa = 300 * constante CASE 100000 END END SELECT END SUB