カメヲラボ

主にプログラミングとお勉強全般について書いてます

6行テトリス

書こう書こうと思いつつ放置しておりました。
随分前話題になった7行テトリス
http://d.hatena.ne.jp/Ozy/20071104#p1
ですが、2ch(http://pc11.2ch.net/test/read.cgi/tech/1215352849/35)やら
http://d.hatena.ne.jp/Ozy/20071101#p1
のコメントでscriptタグを使わずにonload属性を使えば6行に収められることを知りました。

6行テトリス(473B)
<body onKeyDown=K=event.keyCode-38 onload="Z=X=[B=A=12];function Y(){for(C=[q=c
=i=4];f=i--*K;c-=!Z[h+(K+6?p+K:C[i]=p*A-(p/9|0)*145)])p=B[i];for(c?0:K+6?h+=K:t
?B=C:0;i=K=q--;f+=Z[A+p])k=X[p=h+B[q]]=1;h+=A;if(f|B)for(Z=X,X=[l=228],B=[[-7,-
20,6,h=17,-9,3,3][t=++t%7]-4,0,1,t-6?-A:2];l--;)for(l%A?l-=l%A*!Z[l]:(P+=k++,c=
l+=A);--c>A;)Z[c]=Z[c-A];for(S='';i<240;S+=X[i]|(X[i]=Z[i]|=++i%A<2|i>228)?i%A?
'■':'■<br>':'_');D.innerHTML=S+P;Z[5]||setTimeout(Y,i-P)}Y(h=K=t=P=0)"id=D>

innerHTMLをinnerTextに変えれば、brタグを'\n'にできるので2バイト短くなりますが、Firefoxではうまくいかないので、どちらでも動く方を紹介しておきます。

7行から6行にする過程でゲーム性を犠牲にしているので、これぐらいのサイズでもうちょっとクオリティが上がると良いですね。