-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathtic-tac-toe.min.js
3 lines (3 loc) · 1.19 KB
/
tic-tac-toe.min.js
1
2
3
function Game(L){function B(f){for(z in A){for(j=x=o=g;j--;){k=A[z][j];q[k]>0&&x--;q[k]<0&&o--}if(!x)return n-f;if(!o)return f-n}}function F(i,p){with(u){x=i%g*n;y=~~(i/g)*n;c=n/2;d=n/3;e=d*2;lineWidth=4;bn();p?a(x+c,y+c,d/2,0,Math.PI*2,false):(mT(x+d,y+d),lT(x+e,y+e),mT(x+d,y+e),lT(x+e,y+d));stroke();q[i]=p||1}}function G(f,p,v,H){var w=g*g,I=-n,s,r,J;if(r=B(f))return r*p;if(M>f)for(;w--;)if(!q[w]){q[w]=p;r=-G(f+1,-p,-H,-v);q[w]=C;if(s===C||r>s)s=r;if(r>v)v=r;if(v>=H)return v;if(s>I){I=s;J=w}}return f?
s||0:J}var g=3,n=100,M=6,K=document,D=K.body,t=K.createElement("canvas"),u=t.getContext("2d"),E=alert,A=[],q=[],C;for(i in u)u[i[0]+(i[4]||"")]=u[i];t.height=t.width=g*n;with(u){strokeStyle="#666";bn();i=1;for(h=g-1;i<=h*2;i++){j=k=0;l=m=g*n;i<=h?(j=l=i*n):(k=m=i*n-h*n);mT(j,k);lT(l,m)}stroke()}(L||D).appendChild(t);i=0;c=[];for(d=[];i<g;i++){j=0;a=[];for(b=[];j<g;j++){a.push(i*g+j);b.push(j*g+i)}A.push(a,b);c.push(i*g+i);d.push((g-i-1)*g+i)}A.push(c,d);t.onclick=function(f){var p=t.getBoundingClientRect();
f=~~((f.pageY-p.top+D.scrollTop)/n)*g+~~((f.pageX-p.left+D.scrollLeft)/n);if(!q[f]){F(f,-1);if(B(0)<0)return E("won");f=G(0,1,-n,n);if(f===C)return E("tie");F(f);if(B(0)>0)return E("lost")}}};