プログラムソースおよび解説

七行プログラミングに戻る

7行テトリス (javascript)

いくつかバージョンがありますが、最新版(2006/10/17)より。
解説については、ひとまずこちらをご覧ください。 7行テトリスの解説
最初の七行達成版は 2002/4/27 でした。

モノクロテキストバージョン - 遊ぶ

<body id=D onKeyDown=K=event.keyCode-38><script>Z=X=[B=A=12];function Y(){for(C
=[q=c=i=4];f=i--*K;c-=!Z[h+(K+6?p+K:C[i]=p*A-(p/9|0)*145)])p=B[i];for(c?0:K+6?h
+=K:t?B=C:0;i=K=q--;f+=Z[A+p])k=X[p=h+B[q]]=1;if(e=!e)if(h+=A,f|B)for(Z=X,X=[l=
228],B=[[-7,-20,6,h=17,-9,3,3][t=++t%7]-4,0,1,t-6?-A:2];l--;)for(l%A?l-=l%A*!Z[
l]:(P+=k++,c=l+=A);--c>A;)Z[c]=Z[c-A];for(S="";i<240;S+=X[i]|(X[i]=Z[i]|=++i%A<
2|i>228)?i%A?"■":"■<br>":"_");D.innerHTML=S+P;Z[5]||setTimeout(Y,99-P)}Y(h=e
=K=t=P=0)</script>

カラーバージョン - 遊ぶ

<body id=D onKeyDown=K=event.keyCode-38><script>Z=X=[B=A=12];function Y(){for(C
=[q=c=i=4];f=i--*K;c-=!Z[h+(K+6?p+K:C[i]=p*A-(p/9|0)*145)])p=B[i];for(c?0:K+6?h
+=K:t?B=C:0;k=i=K=q--;f+=Z[A+p])X[p=h+B[q]]=t+1;if(e=!e)if(h+=A,f|B)for(Z=X,X=[
l=228],B=[[-7,-20,6,h=17,-9,3,3][t=++t%7]-4,0,1,t-6?-A:2];l--;)for(l%A?l-=l%A*!
Z[l]:(P+=++k,c=l+=A);--c>A;)Z[c]=Z[c-A];for(S="<b>";i<240;S+=(c=X[i]|(X[i]=Z[i]
|=++i%A<2|i>228))?"<b style=color:#"+142*c+">■":"_")i%A?0:S+="<br>";
D.innerHTML=S+P;Z[5]||setTimeout(Y,99-P)}Y(h=e=K=t=P=0)</script>

JavaScript でライン描画 (javascript) - 表示する(注意!!)

注意!! 環境によってはブラウザがフリーズするかのごとく重くなる事があります。

<body><script>function Y(x,y,w,z){c=(C=x-w)*C>(C=y-z)*C;for(a=s=c?x>w?(e=x,t=z,
u=y,w):(e=w,t=y,u=z,x):y>z?(e=y,t=w,u=x,z):(e=z,t=x,u=w,y);b=(u-t)*(a-s)/(e-s)+
t,a<=e;a+=2)document.write("<dd style='background:red;position:absolute;top:"+(
c?b:a)+";left:"+(c?a:b)+";overflow:hidden;width:2;height:2'>")}G=P=Q=r=99,R=66,
S=33,A=Math.PI/20;F=P+r;for(i=41;i--;Y(F,G,F=P+j*Math.cos(i*A),G=Q+j*Math.sin(i
*A)))j=[r,S,R,S][i%4];F=G=P=Q=220;for(i=1;i<41;i++)Y(F,G,F=P+(j=[0,S,R,S][k=i%4
])*Math.cos((k+=i)*A),G=Q+j*Math.sin(k*A));</script>

弾避けゲーム (javascript) - 遊ぶ

マウスカーソルを、■に触れないように動かして下さい。IE専用

<body id=B onMouseMove=y=event.y;x=event.x><script>h=B.clientHeight-20;a=[b=[q= 
[D=document]]];for(U=x=99;x--;C=F=q[x]=P=y=0)D.write("<b style=background:red;" 
+"width=16;height=16;position:absolute;top:-20></b>");function T(){for(i=C;i--* 
!F;J=D.all(5+i).style,l=q[i]/U,m=J.left=a[i]*(c=1-l)+a[d=i+U]*l,n=J.top=b[i]*c+ 
b[d]*l,F=m-15<x&x<m+16&n-15<y&y<n+16)if(!q[s=i]--)for(j=2;j--;s+=R%3+1)R=Math. 
random(q[i]=U)*w*h|0,a[c=j?i:i+U]=s%2?s%4>1?0:w:R%w,b[c]=s%2?R%h:s%4?h:0;P++-C* 
9||C-U&&C++;if(F)alert(P);else setTimeout(T,U-C)}T(w=B.clientWidth-20)</script>

8行ぷよぷよ

8行です orz

<body id=D onKeyDown=K=event.keyCode-38><script>function G(x){Z[x]==c&&(Z[x]=q?
(P+=k++,0):-c,G(x+1),G(x+8),G(x-1),G(x-8),v++)}function Y(){i=I=96;if(e=++e%4)
for(K?K+6?Z[a=h+K]|Z[a+B]?0:h=a:Z[h+(E=B%8?B*8:-B/8)]?0:B=E:0;K=k=i--;X[h]=2+t%
5|0,X[h+B]=2+t/5|0,f=Z[8+h]+Z[8+h+B])X[i]=Z[i];else if(h+=8,r||f){r?r=0:X=[Z=X]
for(Z[-5]=0;i--;B=8)Z[j=i-8]*!Z[i]&&(Z[i]=Z[j],Z[r=j]=0);if(!r)for(t=Math.
random(h=3)*25;I--;q=v=0)if(c=Z[I],c>1)G(I),c=-c,r+=q=v>3,G(I);e=r?3:0}for(i=S=
"";i<96;S+=i%8?"_■●★▲*□".charAt(c):"■<br>")c=X[i]|(Z[i]|=++i%8<2|i>88);
D.innerHTML=S+P;Z[3]*!r||setTimeout(Y,99-P)}e=3;Y(f=X=Z=[r=h=K=P=0])</script>