2007年 10月 31日

40kBのマリオと7行のテトリス

先日、ネットで初代スーマリが40キロバイトで
作られていると話題になった。

CDって650メガバイトくらいだったっけ?
スーマリ16*1000である。

スーマリでて25年くらいか?
いやはや時が経つのははやいものだね。

昔の時代の開発者は、職人芸のようなプログラムで
容量をセーブし開発していたのだろう。恐れ入る限り。

さて。
その話題のなかで以下のコードが紹介されていた。

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

上記のコードをテキストファイルに貼り付けて、
拡張子を.htmにする。

そして、ブラウザで開くと。。。
なんとテトリスがはじまるのだな。
これはタマげた。7行ですよ。7行。

操作方法は
エンターキー:回転 十字キー:移動
である。

さて。わたしもプロのはしくれである。
ふふん。改行がないだけで、改行を入れたら、
別に普通のコードだろ?




ご め ん な さ い!!!

これ、マジですごいわ。

変数名がhやらpやらあまりにも不親切すぎるってのもある。
が、適当に10分程度ながめても、何もピンとこなかった。

こいつは本気で読まないといけないな。
なんか悔しいから今度、気合い入れて解析してみよう。
短くしまくっているので、とにかく読みにくい。。。

しかしまー。。。テトリスがこの程度のコードで
作れるなんてねー。。。そもそも発想すらした
ことがなかったよ。

まー、このコードメンテしてくれって依頼が来たら、
開発者をぶん殴りたくなるのは間違いないけどw
[PR]

by netnetnet_78 | 2007-10-31 23:00 | 雑記


<< バンダイネット、“赤い彗星”も...      初音ミクを体験した >>