:: Program till the end ::

Publicado: 16:54 02/11/2007 · Etiquetas: tetris, bytes, javascript, js, codigo, ligero · Categorías: Informática : Videojuegos
Alguien entendido en Javascript ha implementado un Tetris con tan sólo 565 bytes de código. Aquí el 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=p*A-Math.round(p/
A)*145)])p=B;!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]=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=Z|=++i%A<2|i>228)i%A?0:S+="
",S+=X
?"■":"_";document.body.innerHTML=S+P;Z[5]||setTimeout(Y,99-P)}Y()</script>
</body>
</html>


Aquí el código con saltos de línea y esas cosas que nos enseñan en informática para hacer código más elegante:

<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+d]==S;
       f?0:h+=d;
     }else{
       C=[];
       for(i=0;i<4;i++){
         p=E;
         v=Math.round(p/12);
         w=p-v*12;
         C=w*12-v;
         if(Z[h+C]==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)]==S;
     Z[240+p]=S
   }
   if(f){
     for(i=0;i<4;i++)Z[h+E]=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*12Z[j]=Z[j---12]
   }
}

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

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

for(i=0;i<7;i++)B.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%12<2||i>228?S="□":" ";
}

Y();
</script>


(Echo de menos una función de resalto de código en el blog...)

Y aquí el juego.

El control es algo tosco a mi parecer, pero no se puede pedir más a un juego que ocupa tan poco y es completamente funcional.

Visto aquí.
2 comentarios :: Enlace permanente
Compartir Compartir
FacebookCompartir
TuentiCompartir en Tuenti
MenéameMenéame Enviar
Comentarios: (del primero al último)
17:10 02/11/2007
Increible, crack el que lo haya hecho
17:38 02/11/2007
Joer con el tetorisu. Eso sí, pulsar abajo no baja la pieza más rápido, la lleva a la derecha :P
Participa con tu Comentario:

Este blog no permite comentarios.

:: Program till the end ::

Blog de maxter2001
I program till the end, for my purposes. What about you? [Blog de OK-River (maxter2001 en Vandal)]

Posts destacados por el autor:
· "Hola, mundo!" con Qt
· Odisea en busca de una PS3 de 60 GB, finalizada
· [Proyecto Fin de Carrera] Vídeo demostración + Capturas + Info
· Ingeniería Informática acabada
· [Proyecto Fin de Carrera] Capturas e info
· Programación: Tutorial para manejo de teclas
· The Legend Of Zelda: Twilight Princess terminado: impresiones/análisis
· Final Fantasy X - To Zanarkand (directo)
· Dichosas comparaciones atenuantes
· Juego para descargar: La Bicha 2.0
· Metal Gear Online "impresionado"
· Estreno



Vídeos:
· Música orquestada
· Variados
· Música variada
· El Informal
· Juegos
· Humoristas españoles



Blogs amigos:
alw
ArKiTo
Arxel
Boddhai
Clone
ComIkari
Cornell
De-mon
delojo
EASMO
erizoazul
Ferr
GeRoxx
Granlutz
HWY2HELL
Isnard
Jimmytrius
Kanevsky
Kiriyama
Modo_7
nach
Naruto
NeoYoshimitsu
NoPLo
Resident Hill
RojoRedRouge
Shino-Kun
Sonny Chiba
Sr.A
suzumiya haruhi
vacajinjo
xispax_
Zeroshcr
ZZGRST
_-Sheik-_


Categorías:
Chorradillas
Hablar con propiedad no cuesta un puto duro
Informática
Manga/Anime/Dorama
Música
Personal
Regalos pal hocico
Tutoriales
Varios
Videojuegos


Archivo:
Octubre 2009
Septiembre 2009
Enero 2009
Septiembre 2008
Agosto 2008
Junio 2008
Mayo 2008
Abril 2008
Marzo 2008
Febrero 2008
Enero 2008
Diciembre 2007
Noviembre 2007
Octubre 2007
Septiembre 2007
Agosto 2007
Julio 2007
Junio 2007
Mayo 2007
Abril 2007
Marzo 2007
Febrero 2007
Enero 2007
Diciembre 2006
Noviembre 2006
Octubre 2006


Vandal Online:
Portada
Blogs
Foro

Blogs en Vandal · Contacto · Denunciar Contenido