わずか681バイトで動くぷよぷよ
2007年11月09日 ゲーム全般
「わずか565バイトテトリスのプログラミング解説」で載せた、「10行ぷよぷよ」の作者pascalさんからトラックバックが来ました。
勝手にソースコードを晒してしまって、すみません…。
テトリス以上に、ぷよぷよの方に感動している方もたくさんいました、とご報告しておきます。
(テトリスからぷよぷよへの感動の連鎖や!)
しかも今確認してみたところ、前回載せていたソースコードと動作サンプルとして動かしていたページのソースコードが違っていました。
前回載せていたソースコードは古い方で、動作サンプルの方は新しいソースコードでした。(下キーで加速するバージョン)
最新版のソースコードは、pascalさんのサイト
に載っています。
勝手にソースコードを晒してしまって、すみません…。
テトリス以上に、ぷよぷよの方に感動している方もたくさんいました、とご報告しておきます。
(テトリスからぷよぷよへの感動の連鎖や!)
しかも今確認してみたところ、前回載せていたソースコードと動作サンプルとして動かしていたページのソースコードが違っていました。
前回載せていたソースコードは古い方で、動作サンプルの方は新しいソースコードでした。(下キーで加速するバージョン)
最新版のソースコードは、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」に、素晴らしいソースコードの解説記事が掲載されました。