ZAPAnet総合情報局 > ZAPAブログ2.0 > わずか681バイトで動くぷよぷよ

わずか681バイトで動くぷよぷよ

2007年11月09日 ゲーム全般
わずか565バイトテトリスのプログラミング解説」で載せた、「10行ぷよぷよ」の作者pascalさんからトラックバックが来ました。
Short Coding - pascal's memo
勝手にソースコードを晒してしまって、すみません…。
テトリス以上に、ぷよぷよの方に感動している方もたくさんいました、とご報告しておきます。
(テトリスからぷよぷよへの感動の連鎖や!)

しかも今確認してみたところ、前回載せていたソースコードと動作サンプルとして動かしていたページのソースコードが違っていました。
前回載せていたソースコードは古い方で、動作サンプルの方は新しいソースコードでした。(下キーで加速するバージョン)

最新版のソースコードは、pascalさんのサイト
ぷよぷよ
に載っています。

最新版のソースコードからさらに短縮して、
document.body.innerHTML
の部分を、bodyタグにIDを付けて作り直せば…
<body onKeyDown=K=event.keyCode-38 id=D><script>for(M=N=[i=113];--i;M[i-1]=i%8<
2|i<8)function Y(){e++;if(e%=10)for(N=[K-2?K-50?h-=M[h+l-K]|M[h-K]?0:K:M[h+p]||
(x=p,p=-l,l=x):e=0],K=0;++i<113;N[i]=M[i])N[h]=B>>2,N[h+l]=B%4-B%1+2;if(!e&&(h
-=8,!g||M[h]+M[h+l])){C=[M=N];for(i=g=1;++i<103;!M[i]*n&&(M[i]=n,g=M[i+8]=0))n=
M[i+8];for(;--i;){n=c=0;for(E=[i];g&M[i]>1&n>=c>>2;t>102|C[t]|M[i]-M[t]||(E[++n
]=C[t]=t))t=p,p=-l,l=t,t+=E[c++>>2];for(;c>16&&n;)g=M[E[n--]]=0}B=g?Math.random
(h=100,l=8,p=-1)*16+8:--e}for(i=104,S="";i--;S+=n--?n?"<a style=color:#"+(248*n
)+">●"+"</a>":i%8?"■":"■<br>":"_")n=N[i];D.innerHTML=S;M[100]*g||setTimeout
(Y,50)}Y(g=h=e=9,l=p=K=0)</script>
このようになって、681バイトでぷよぷよが動きます。
(上記コードをメモ帳に貼り付けて、puyo.htmlとしてHTMLファイルとして保存。できあがったファイルをダブルクリックで実行するとブラウザでぷよぷよが動きます)
→動作サンプルはこちら
操作方法は、xキーで回転、カーソルキー(左右下)で移動です
下キーで加速もできて、ちゃんと連鎖も動くので、普通にとことんぷよぷよが遊べます。
起動すると、ついつい6連鎖とかして遊んでしまいます。

昔買った「ぷよりん」を思い出して、懐かしい気持ちになりました。

2020年6月13日追記:「10行ぷよぷよのソースコードを読む - Qiita」に、素晴らしいソースコードの解説記事が掲載されました。

関連リンク

わずか565バイトテトリスのプログラミング解説
続・わずか565バイトテトリスのプログラミング解説
あの565バイトテトリスが、ついに500バイトを切った!
わずか96キロバイトの超絶FPSゲーム