i=navigator.appName; if(i=="Microsoft Internet Explorer") brws=1; else if(i=="Netscape") brws=0; else brws=1; xn=4; // マスの数(横) yn=4; // マスの数(縦) xs=55; // マスの横サイズ ys=55; // マスの縦サイズ pad=0; // マスの間隔 shf=100; // シャッフル回数 buf=100; // バッファサイズ wt=1; // スライドウェイト dvx=5; // 横スライド移動分割量 dvy=5; // 縦スライド移動分割量 num=xn*yn; // ピースの数 nn=num-1; // 抜くピースの番号 xnn=xn-1; ynn=yn-1; xm=new Array(num+1); // ピースオフセット(横) ym=new Array(num+1); // ピースオフセット(縦) id=new Array(num+1); // ピース番号 i2p=new Array(num+1); // 各ピースの座標 p2i=new Array(num+1); // 各マスのピース番号 xm=60; // 左マージン ym=100; // 上マージン bdrwid=8; // 枠太さ bdrcol="brown"; // 枠色 bbgcol="navy"; // 枠内背景色 bdrsty="ridge"; // 枠スタイル rsx=new Array(buf); rsy=new Array(buf); rs=0; rs0=0; score=0; flag=0; with(document){ write("
"); write("Puzzle    "); write(""); write("    "); write("←全ての画像が表示されてから押して下さい

"); write("SCORE : "); write("
"); write("
"); write("パネキット秘密倉庫"); write("
"); forms["LINK"].style.position="absolute"; forms["LINK"].style.left=0; forms["LINK"].style.top=-100; write("
"); write("
"); write("
"); forms["BACK"].style.position="absolute"; forms["BACK"].style.left=xm-bdrwid; forms["BACK"].style.top=ym-bdrwid; for(i=0;i"); if(i%xn==xn-1) write("
"); images[id[i]].style.position="absolute"; images[id[i]].style.left=xm+(i%xn)*(xs+pad); images[id[i]].style.top=ym+Math.floor(i/xn)*(ys+pad); } id[nn]="N"+String(nn); i2p[nn]=nn; p2i[nn]=nn; write(""); images[id[nn]].style.position="absolute"; images[id[nn]].style.left=xm+(nn%xn)*(xs+pad); images[id[nn]].style.top=-ys*2; id[num]="N"+String(num); i2p[num]=num; p2i[num]=num; write(""); images[id[num]].style.position="absolute"; images[id[num]].style.left=xm+(nn%xn)*(xs+pad); images[id[num]].style.top=ym+Math.floor(nn/xn)*(ys+pad); scr_disp(); to="ready"; } function game_start(){ if((to=="ready")||(to=="ok")){ for(i=0;i=ya;i--){ j=xa+i*xn; k=p2i[j]; i2p[k]+=xn; p2i[i2p[k]]=k; } i2p[nn]+=(ya-yb)*xn; p2i[i2p[nn]]=nn; mv=sty; tid=setTimeout("move(0)",wt); } else{ for(i=yb+1;i<=ya;i++){ j=xa+i*xn; k=p2i[j]; i2p[k]-=xn; p2i[i2p[k]]=k; } i2p[nn]+=(ya-yb)*xn; p2i[i2p[nn]]=nn; mv=sty; tid=setTimeout("move(1)",wt); } } else if(ya==yb){ if(xa=xa;i--){ j=i+ya*xn; k=p2i[j]; i2p[k]+=1; p2i[i2p[k]]=k; } i2p[nn]+=(xa-xb); p2i[i2p[nn]]=nn; mv=stx; tid=setTimeout("move(2)",wt); } else{ for(i=xb+1;i<=xa;i++){ j=i+ya*xn; k=p2i[j]; i2p[k]-=1; p2i[i2p[k]]=k; } i2p[nn]+=(xa-xb); p2i[i2p[nn]]=nn; mv=stx; tid=setTimeout("move(3)",wt); } } else{ tid=setTimeout("shuffle()",0); } } function puzzle(n){ if(to=="mv"){ rsv=1; rsn=n; } else if(to=="ok"){ a=i2p[n]; xa=a%xn; ya=Math.floor(a/xn); b=i2p[nn]; xb=b%xn; yb=Math.floor(b/xn); xd=0; yd=0; if(xa==xb){ if(flag!=1){ score--; flag=1; rs=(rs+1)%buf; rsx[rs]=xb; rsy[rs]=yb; if(rs==rs0) rs0=(rs0+1)%buf; } else{ if((rsx[rs]==xa)&&(rsy[rs]==ya)){ score++; if(flag!=0){ rs=(rs+buf-1)%buf; if(rs!=rs0) flag=2; else flag=0; } } } if(ya=ya;i--){ j=xa+i*xn; k=p2i[j]; i2p[k]+=xn; p2i[i2p[k]]=k; } i2p[nn]+=(ya-yb)*xn; p2i[i2p[nn]]=nn; mv=sty; tid=setTimeout("move(0)",wt); } else{ for(i=yb+1;i<=ya;i++){ j=xa+i*xn; k=p2i[j]; i2p[k]-=xn; p2i[i2p[k]]=k; } i2p[nn]+=(ya-yb)*xn; p2i[i2p[nn]]=nn; mv=sty; tid=setTimeout("move(1)",wt); } } else if(ya==yb){ if(flag!=2){ score--; flag=2; rs=(rs+1)%buf; rsx[rs]=xb; rsy[rs]=yb; if(rs==rs0) rs0=(rs0+1)%buf; } else{ if((rsx[rs]==xa)&&(rsy[rs]==ya)){ score++; if(flag!=0){ rs=(rs+buf-1)%buf; if(rs!=rs0) flag=1; else flag=0; } } } if(xa=xa;i--){ j=i+ya*xn; k=p2i[j]; i2p[k]+=1; p2i[i2p[k]]=k; } i2p[nn]+=(xa-xb); p2i[i2p[nn]]=nn; mv=stx; tid=setTimeout("move(2)",wt); } else{ for(i=xb+1;i<=xa;i++){ j=i+ya*xn; k=p2i[j]; i2p[k]-=1; p2i[i2p[k]]=k; } i2p[nn]+=(xa-xb); p2i[i2p[nn]]=nn; mv=stx; tid=setTimeout("move(3)",wt); } } // a="xa="+String(xa)+",ya="+String(ya)+",xb="+String(xb)+",yb="+String(yb)+",p2i="+String(p2i[nn])+",i2p="+String(i2p[nn]); // alert(a); } } function move(n){ clearTimeout(tid); if(to=="shuf"){ to="shuf_"; } else if(to=="ok"){ to="mv"; } switch(n){ case 0: mv+=spy; for(i=ya+1;i<=yb;i++){ k=p2i[xa+i*xn]; y=ym+i*(ys+pad)+mv; document.images[id[k]].style.top=y; } break; case 1: mv+=spy; for(i=ya-1;i>=yb;i--){ k=p2i[xa+i*xn]; y=ym+i*(ys+pad)-mv; document.images[id[k]].style.top=y; } break; case 2: mv+=spx; for(i=xa+1;i<=xb;i++){ k=p2i[i+ya*xn]; x=xm+i*(xs+pad)+mv; document.images[id[k]].style.left=x; } break; case 3: mv+=spx; for(i=xa-1;i>=xb;i--){ k=p2i[i+ya*xn]; x=xm+i*(xs+pad)-mv; document.images[id[k]].style.left=x; } break; } if(mv>=0){ scr_disp(); if(to=="shuf_"){ round--; if(round>0){ tid=setTimeout("shuffle()",0); to="shuf"; } else{ spx=Math.floor(xs/dvx); stx=-spx*dvx; spy=Math.floor(ys/dvy); sty=-spy*dvy; rsv=0; rsn=0; to="ok"; } } else{ for(i=0;i