Contenido

Increible Tetris desarrollado en un Javascript de solo 565 bytes

2 Nov

+ 21

Increible lo que es capaz de hacer alguien con mucha idea de Javascript y pocas ganas de escribir líneas de código

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<body onKeyDown=K=event.keyCode><script>X=[Z=[B=A=12]];h=e=K=t=P=0;function Y()
{C=[d=K-38];c=0;for(i=4;i--*K;K-13?c+=!Z[h+p+d]:c-=!Z[h+(C[i]=p*A-Math.round(p/
A)*145)])p=B[i];!t|c+4?c-4?0:h+=d:B=C;for(f=K=i=0;i<4;f+=Z[A+p])X[p=h+B[i++]]=1
if(e=!e){if(f|B){for(l=228;i--;)Z[h+B[i]]=k=1;for(B=[[-7,-20,6,17,-9,3,6][t=++t
%7]-4,0,1,t-6?-A:-1];l--;h=5)if(l%A)l-=l%A*!Z[l];else for(P+=k++,j=l+=A;--j>A;)
Z[j]=Z[j-A]}h+=A}for(i=S="";i<240;X[i]=Z[i]|=++i%A<2|i>228)i%A?0:S+="<br>",S+=X
[i]?"■":"_";document.body.innerHTML=S+P;Z[5]||setTimeout(Y,99-P)}Y()</script>
</body>
</html>

 Una muestra de ello, es esta versión de Tetris, completamente funcional, desarrollada en Javascript. El peso del JS es de solo 565 bytes, algo realmente ligero para añadir a cualquier aplicación… incluso… podríamos hacer que nuestros visitantes jueguen al tetris mientras la página esté cargando :D

Creo que ni desencriptando el código hay quien lo entienda :D

<body onKeyDown=K=event.keyCode><pre><script>
	function Y(){
	  	Z[11]=P;
	  	E=B[t];
	  	f=0;
	  	if(K)
	    	if(K!=32){
	      		d=K-37?1:-1
	      		for(i=0;i<4;i++)
	        		f+=Z[h+E[i]+d]==S;
	      		f?0:h+=d;
	    	}else{
	      		C=[];
	      		for(i=0;i<4;i++){
	        		p=E[i];
	        		v=Math.round(p/12);
	        		w=p-v*12;
	        		C[i]=w*12-v;
	        		if(Z[h+C[i]]==S)f=1;
	      		}
	      		t*!f?E=B[t]=C:0;
	    	}
	  		K=0;

	  		for(f=i=0;i<4;i++){
	    		f+=Z[12+(p=h+E[i])]==S;
	    		Z[240+p]=S
	  		}
	  		if(f){
	    		for(i=0;i<4;i++)Z[h+E[i]]=S;
	    		t=++t%7;
	    		h=17
	  		}else h+=12;

	  		for(k=1,i=19;i--;){

	    	for(j=11;--j&&Z[i*12+j]==S;);
	    	if(!j){
	      		P+=k++;
	      		for(j=++i*12;j>2*12;)Z[j]=Z[j---12]
	  		}
		}

	  	for(i=240;i--;){
	    	D.all(6+i).innerHTML=Z[240+i];
	    	Z[240+i]=Z[i]
	  	}
	  	Z[5]!=S?setTimeout(Y,99):0;
	}

	B=[[-11],[-24],[2],[13],[-13],[-1],[2,-1]];

	for(i=0;i<7;i++)B[i].push(0,1,-12);
	D=document;

	h=17;
	Z=[];
	for(K=t=P=i=0;i<240;){
	  D.write(i%12?"":"\n","<b></b>");
	  Z[240+i]=Z[i]=++i%12<2||i>228?S="□":" ";
	}

	Y();
</script>

WOW, no es la gran cosa el juego. Pero lo mas interesante es el peso!

Me gustaria saber con que tecla puedo voltear la pieza, gracias

Hola Santiag0 :P
Rotar creo que no se puede, pero con ENTER pasas a la siguiente pieza.

Gracias por responder Aquilez, ya descubri como se rota y efectivamente es con ENTER, ahora el misterio es saber como se baja directo, saludos y suerte!

una fuente monospace podría ayudar mucho a la jugabilidad, andar adivinando no ayuda mucho con el juego
he descubierto un bug, si presionan shift pueden hacer subir la pieza, sólo que necesitan que esté a la izquierda
como sea, por medio kilobyte es un gran logro!

Tienes razon muy impresionate todo lo que se puede hacer con javascript.

Pero lo más sorprendente es que es medio Kb. de código fuente, no de código compilado. Esto lo hace más increíble si cabe! Me deja alucinando en colores…

Impresionante. Ha sido como un feedback a tiempos casi prehistóricos. Alguién recuerda el ZX81 de Sinclair? 1 KB de memoria ram. Había que ser un virgero para programarlo.
Impresionante este Tetris.
:)

No se que me impresiona más, si los 565 bytes de la versión comprimida, o que en la descomprimida apenas se entienda nada!

Increíble.

Increíble, funcional y útil. Te enlazo a mi web, saludos!

ES una pena que no funcione correctamente con Safari ;)

vaya dominio, menuda muestra de optimización de código totalmente eficiente… envidia me da lo que jamás he podido conseguir: hacer en 7 líneas lo que otros hacemos en 50.
Me quito el sombrero.

Es impresionante poder escribir el tetris en tan pocas lineas, im presionante. Yo tambien he programado el tetris en javascript (http://www.misterguille.com/tetris) pero el código es muuuuucho más largo, aunque la gráfica la he cuidado un poco mas :)

más que un genio del javascript, este tío es un genio de las matemáticas!

Muy bueno che, estaría buenisimo que sea en colores.

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.


Cerrar
Enviar por Correo