Phantasy Garden

わずか565バイトテトリスのプログラミング解説(ZAPAブロ〜グ2.0)

実際のコード。リンク先にこの元になった分かりやすいコードがコメント付きで載っている。

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

SUGEEEEEEE! これは感動モンの職人芸。実際のテトリスと比較して視覚効果とか滑りとかが考慮されてないので多少やりづらい部分もあるけれど、「テトリス」の根本的な部分は抑えてありますよ。これをメモ帳にコピペして.htmlに書き換え、ブラウザで読み込むだけでテトリスができます。Linux+Firefox2.0でもちゃんと動作しました。

一時期、Perl等のCGIで処理コードをひたすら短くするという職人的プログラミングがありましたが、Javascriptゲームでここまで簡略化できるのも凄い。超有名大作のマリオブラザーズが40KB(ITmedia)だったり、昔は制限が多かった中で制作するのが普通で、こういった職人芸もそこまで珍しいものではなかった模様。今では大容量化が進んでCD1枚650MBにも収まらなかったりするんだから、時代の進歩ってのは驚異だね。

でも、ゲーム性というのは大容量じゃなきゃできないということはないことが、このテトリスからも理解できるはず。こういうことをできる人が、たぶん一流になれるorなっているプログラマなんだろうね。

Comment

名前:

機械的スパムを防止するための検証です。以下の画像に書かれている文字列(半角英数字)を入力してください。
Captcha Image
認証:

Information

About this website

サイト名『空想庭園』。御巫 悠が自由気ままに運営しているサイトです。役に立たないコラム書きがメインなのかもしれません。

本サイトはクリエイティブ・コモンズ表示4.0 国際ライセンスの下に提供されています。

Recent Weblog

Recent Comment

Weblog Search

Weblog Category

Friend Links