バッファリンの半分はやさしさでできてるといいますが、パソコンというかコンピュータは全部がon/offスイッチで出来てます。
一本道を流れてきた電流が二手に分かれていて、スイッチonの場合は右、スイッチoffの場合は左へと分岐。このような回路を持つ部品をトランジスタと言いますが、これがたくさん集まっていろいろと複雑なことをやらかしてるのがいわゆるコンピュータです。
すごい進化を遂げてしまった昨今、このことを経験的に感覚的に知ってる人ってどのくらいいるでしょうか。
私が生まれて初めてコンピュータの凄さを身にしみたのは、たった一人の高校生が作った「ドアドア」というゲームを見たときでした。私は中学一年生でした。
その当時は私自身、on/off回路からはじまってちょっとしたプログラムを書けるようにはなっていましたが、とてもじゃないけどあと数年後、高校生になった自分がゲームセンターに置いてあるゲームよりもすごい、そんな「ドアドア」のようなゲームを作れるようになるとは全然思えませんでした。
その高校生は後にドラクエを生み出した現チュンソフト社長の中村光一さん。
今思えばかなうわけないのは当たり前なんですが、当時の衝撃は今でもトラウマに。(笑)
というわけで前置きが長くなりましたが、久々に衝撃。
まずはその実体、これです。
<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>
記号だらけのうえの文章を見ただけで何かわかった人はすごいです。
でも作った人は当たり前だけどもっとすごい。
これはテトリスのプログラムです。
たったこれだけのテキストで、あのゲームができるんです。
嘘だと思う方は試してください。
ウィンドウズならアクセサリにあるメモ帳を開いて上記テキストをコピーして保存するだけ。
拡張子をtxtではなく、htmlにしてください。
面倒な方のために私がご用意したのがこれ。(クリックしてください)
※操作方法:左右は矢印キー、回転はエンターキーです。
どうすか?すごいでしょ。
さらにさらに。。。
<body onKeyDown=K=event.keyCode-38><script>function T(){h=100,B=Math.floor(Math
.random(l=8,p=-1)*16+4)}function Y(){for(S=”",i=104;i–;i%8||(S+=”<br>”))n=N[i]
,S+=n?~n?”<a style=color:#”+(249*n)+”>●</a>”:”■”:”_”;document.body.innerHTML
=S;N=[K-50?h-=M[h+l-K]|M[h-K]?0:K:M[h+p]?0:(x=p,p=-l,l=x)];for(K=0;++i<113;N[i]
=M[i]);N[h]=B>>2;N[h+l]=B%4+1;if(!(++e%10))if(h-=8,M[h]+M[h+l])for(M=N,T(f=0);f
=!f;){for(i=112;i–;g=C[i]=0);for(;g=!g;)for(i=0;i<103;i++)if(n=M[i+8],!M[i]&&n
)M[i]=n,M[i+8]=g=0;for(;i–;){n=c=0;for(E=[i];M[i]>0&n>=c;c++)for(j=4;j–;t>102
|C[t]|M[i]-M[t]||(C[t]=E[++n]=t))x=p,p=-l,l=x,t=E[c]+p;if(n>3)for(;n;)f=M[E[n–
]]=0}}M[100]||setTimeout(Y,49)}for(M=N=[C=[i=113]];–i;M[i-1]=i%8>1&i>7?0:-1);Y
(T(e=K=0));</script>
これはなんと「ぷよぷよ」です。(クリックしてください)
両方とも1KBも無いのがすごいです。
資源に無駄なく環境にやさしすぎ。
頭痛がしてきた方、ごめんなさい。 (笑)
というわけで、小ネタは続くよ~どこまでも~♪
P.S.最後に、このエントリのネタ元をご紹介。
■わずか565バイトテトリスのプログラミング解説



コメント
スゴイ。