« 相続差別は違憲 | メイン | 死後のパソコンデータ »

2013年11月 5日 (火)

プログラムをうごかしてみよう

開発部の大島です。
今回はプログラムのすごさを少しお見せしたいと思います。


<html>
<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>
</body></html>


これは7行テトリスと言われるプログラムの一種です。
一体何のプログラムだと思いますか?

正解は「テトリス」です。
テトリスの説明は特にしませんが、このコードだけでも普通に遊ぶことができます。

このコードは、マリオブラザーズというゲームが40キロバイトで作成されているというニュースで刺激を受けた方が作られたものです。この40キロバイトとは40000(4万)文字のことを意味し、上記コードも元々は565バイトで作られています。呪文のような言葉がひとつの形になるってすごいと思いませんか?

ただし、私たち開発はこのような超絶トリックを使って開発をしているのではありません。例えば、“権”の見張り番だけでも400キロバイト近くありますし、それを使うための.NetFramework関係の処理などを含めるともっと多くなります。ちなみに上記コードをわかりやすく、普段の開発風に書くと以下のようになります。


<body onKeyDown=K=event.keyCode><pre><script>
function Y(){
  Z[11]=P; // 得点を表示バッファに書き込み
  E=B[t]; // 現在落下中のブロック
  f=0; // 移動・回転決定用フラグ
  if(K)
    if(K!=32){
      d=K-37?1:-1 // d:x方向の差分
...

どちらにしてもわからない人にはさっぱりだと思いますが、少なくとも説明文がついていることと改行と空白があることはわかっていただけると思います。これだけでも少しは見やすくなりませんか。ちなみになぜこのようにしておくかというと、後で修正する時にわかるようにしておくためです。

今回の記事を見てプログラムのすごさが少しは感じてもらえたかと思います。興味をもたれた方はネット上に他にもいろいろとプログラムの例がありますので探してみるのも楽しいですよ。

実際に試してみたい方は以下の手順通りにしてみてください。

1.最初に記載したコードを「コピー」して、Windowsのテキストファイルを読み書きできる「メモ帳」に「貼り付け」する
2.拡張子をhtmlとして「名前をつけて保存」する(例えば、tetris.html)
3.保存したファイルをダブルクリックで実行

これだけです。InternetExplorer上でテトリスが動き始めます。
一部動きがおかしいですが、そこは見なかったことにしてあげてください。


2024年11月

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

検索

 
 
 
各製品Webサイト