Expand|Select|Wrap|Line Numbers
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>Sudoku 9</title>
- <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
- <link type="text/css" rel="stylesheet" href="http://www.tpgames.net/gaming/2/game.css">
- <link rel="shortcut icon" href="http://www.tpgames.net/tpgamesicon.gif">
- <script language="JavaScript1.2">
- var IsNetscape;
- if(navigator.appName == "Netscape")
- { IsNetscape = true;
- document.captureEvents(Event.KEYDOWN)
- }
- else IsNetscape = false;
- function NetscapeKeyDown(key)
- { if(IsNetscape)
- KeyDown(key.which);
- }
- document.onkeydown = NetscapeKeyDown;
- </script>
- <script for=document event="onkeydown()" language="JScript">
- if (window.event) KeyDown(window.event.keyCode);
- </script>
- <script language="JavaScript">
- var i, j, k, I_Sel, J_Sel, K_Sel, L_Sel, StartTime, EndTime, IsOver;
- PreFld0=new Array(
- new Array(
- new Array(new Array(1,2),new Array(3,4)),
- new Array(new Array(3,4),new Array(1,2)),
- new Array(
- new Array(new Array(2,3),new Array(4,1)),
- new Array(new Array(4,1),new Array(2,3)),
- new Array(
- new Array(new Array(3,4),new Array(1,2)),
- new Array(new Array(1,2),new Array(3,4))));
- PreFld=new Array(
- new Array(
- new Array(new Array(1,2),new Array(3,4)),
- new Array(new Array(3,4),new Array(1,2)),
- new Array(
- new Array(new Array(2,3),new Array(4,1)),
- new Array(new Array(4,1),new Array(2,3)),
- new Array(
- new Array(new Array(3,4),new Array(1,2)),
- new Array(new Array(1,2),new Array(3,4))));
- Fld=new Array(
- new Array(
- new Array(new Array(1,2),new Array(3,4)),
- new Array(new Array(3,4),new Array(1,2)),
- new Array(
- new Array(new Array(2,1),new Array(4,3)),
- new Array(new Array(4,3),new Array(2,1)),
- new Array(
- new Array(new Array(1,4),new Array(3,2)),
- new Array(new Array(3,2),new Array(1,4))));
- NPic = new Array(5);
- NPic[0] = new Image();
- NPic[0].src = "rebu_n.gif";
- for (i=1; i < 5; i++)
- { NPic[i] = new Image();
- NPic[i].src = "rebu"+eval(i)+"n.gif";
- }
- QPic = new Image();
- QPic.src = "rebu0q.gif";
- function Clicked(ii, jj, kk, ll)
- { var ff=false;
- if (IsOver) return;
- if (I_Sel>=0) window.document.images[4*I_Sel+4*J_Sel+K_Sel+2*L_Sel].src = NPic[0].src;
- if (Fld[ii][jj][kk][ll]>0) return;
- I_Sel=ii;
- J_Sel=jj;
- K_Sel=kk;
- L_Sel=ll;
- window.document.images[4*I_Sel+4*J_Sel+K_Sel+2*L_Sel].src = QPic.src;
- }
- function KeyDown(whichkey)
- { if (IsOver) return;
- if (I_Sel==-1) return;
- if ((whichkey>=48)&&(whichkey<=57))
- { Fld[I_Sel][J_Sel][K_Sel][L_Sel]=48-whichkey;
- window.document.images[4*I_Sel+4*J_Sel+K_Sel+2*L_Sel].src = NPic[whichkey-48].src;
- I_Sel=-1;
- }
- if (IsSolved())
- { IsOver=true;
- Now = new Date();
- EndTime = Now.getTime() / 1000;
- i=Math.floor(EndTime - StartTime);
- if (window.opener)
- { if (window.opener.SetHighscores)
- window.opener.SetHighscores("Sudoku","",i,-1);
- }
- alert("Super, you solved this game in "+i+ " seconds !");
- }
- }
- function IsSolved()
- { var ii,jj,kk,ll,nn;
- bb=new Array(10);
- for (ii=0; ii<2; ii++)
- { for (jj=0; jj<2; jj++)
- { for (nn=0; nn<10; nn++) bb[nn]=0;
- for (kk=0; kk<2; kk++)
- { for (ll=0; ll<2; ll++)
- bb[Math.abs(Fld[ii][jj][kk][ll])]++;
- }
- if (bb[0]>0) return(false);
- for (nn=1; nn<10; nn++)
- { if (bb[nn]!=1) return(false);
- }
- }
- }
- for (ii=0; ii<2; ii++)
- { for (kk=0; kk<2; kk++)
- { for (nn=1; nn<10; nn++) bb[nn]=0;
- for (jj=0; jj<2; jj++)
- { for (ll=0; ll<2; ll++)
- bb[Math.abs(Fld[ii][jj][kk][ll])]++;
- }
- for (nn=1; nn<10; nn++)
- { if (bb[nn]!=1) return(false);
- }
- }
- }
- for (jj=0; jj<2; jj++)
- { for (ll=0; ll<2; ll++)
- { for (nn=1; nn<10; nn++) bb[nn]=0;
- for (ii=0; ii<2; ii++)
- { for (kk=0; kk<2; kk++)
- bb[Math.abs(Fld[ii][jj][kk][ll])]++;
- }
- for (nn=1; nn<10; nn++)
- { if (bb[nn]!=1) return(false);
- }
- }
- }
- return(true);
- }
- function Show()
- { if (IsOver)
- { alert("Everything's okay.");
- return;
- }
- for (i=0; i<2; i++)
- { for (j=0; j<2; j++)
- { for (k=0; k<2; k++)
- { for (l=0; l<2; l++)
- Fld[i][j][k][l]=PreFld[i][j][k][l];
- }
- }
- }
- IsOver=true;
- I_Sel=-1;
- RefreshScreen();
- alert(" TIM solved it for you!");
- }
- function SwitchI(ii0,ii1)
- { var jj,kk,ll,tt;
- for (jj=0; jj<2; jj++)
- { for (kk=0; kk<2; kk++)
- { for (ll=0; ll<2; ll++)
- { tt=PreFld[ii0][jj][kk][ll];
- PreFld[ii0][jj][kk][ll]=PreFld[ii1][jj][kk][ll];
- PreFld[ii1][jj][kk][ll]=tt;
- }
- }
- }
- }
- function SwitchJ(jj0,jj1)
- { var ii,kk,ll,tt;
- for (ii=0; ii<2; ii++)
- { for (kk=0; kk<2; kk++)
- { for (ll=0; ll<2; ll++)
- { tt=PreFld[ii][jj0][kk][ll];
- PreFld[ii][jj0][kk][ll]=PreFld[ii][jj1][kk][ll];
- PreFld[ii][jj1][kk][ll]=tt;
- }
- }
- }
- }
- function SwitchK(ii,kk0,kk1)
- { var jj,ll,tt;
- for (jj=0; jj<2; jj++)
- { for (ll=0; ll<2; ll++)
- { tt=PreFld[ii][jj][kk0][ll];
- PreFld[ii][jj][kk0][ll]=PreFld[ii][jj][kk1][ll];
- PreFld[ii][jj][kk1][ll]=tt;
- }
- }
- }
- function SwitchL(jj,ll0,ll1)
- { var ii,kk,tt;
- for (ii=0; ii<2; ii++)
- { for (kk=0; kk<2; kk++)
- { tt=PreFld[ii][jj][kk][ll0];
- PreFld[ii][jj][kk][ll0]=PreFld[ii][jj][kk][ll1];
- PreFld[ii][jj][kk][ll1]=tt;
- }
- }
- }
- function MixNumbers()
- { var nn,tt,ii,jj,kk,ll,rr=new Array(0,1,2,3,4);
- for (nn=0; nn<48; nn++)
- { ii=1+Math.floor(Math.random()*4);
- jj=1+Math.floor(Math.random()*4);
- tt=rr[ii];
- rr[ii]=rr[jj];
- rr[jj]=tt;
- }
- for (ii=0; ii<2; ii++)
- { for (jj=0; jj<2; jj++)
- { for (kk=0; kk<2; kk++)
- { for (ll=0; ll<2; ll++)
- { tt=PreFld[ii][jj][kk][ll];
- PreFld[ii][jj][kk][ll]=rr[tt];
- }
- }
- }
- }
- }
- function random(nn)
- { return(Math.floor(Math.random()*nn));
- }
- function Scramble()
- { var ff=0, ss, tt, vv0, vv1, vv2;
- for (i=0; i<2; i++)
- { for (j=0; j<2; j++)
- { for (k=0; k<2; k++)
- { for (l=0; l<2; l++)
- PreFld[i][j][k][l]=PreFld0[i][j][k][l];
- }
- }
- }
- for (j=0; j<2; j++)
- { tt=PreFld[0][j][0][0];
- for (k=0; k<1; k++)
- PreFld[0][j][k][0]=PreFld[0][j][k+1][0];
- PreFld[0][j][2][0]=tt;
- }
- for (j=0; j<2; j++)
- { tt=PreFld[0][j][2][2];
- for (k=1; k>0; k--)
- PreFld[0][j][k][2]=PreFld[0][j][k-1][2];
- PreFld[0][j][0][2]=tt;
- }
- for (ff=0; ff<54; ff++)
- { j=random(2);
- k=random(2);
- vv0=PreFld[0][j][k][1];
- vv1=PreFld[0][j][k][2];
- if (PreFld[1][j][(k+2)%3][1]==vv1)
- { vv2=PreFld[1][j][(k+2)%3][2];
- for (tt=0; tt<2; tt++)
- { if ((PreFld[2][j][tt][1]==vv2)&&(PreFld[2][j][tt][2]==vv0))
- { PreFld[0][j][k][1]=vv1;
- PreFld[0][j][k][2]=vv0;
- PreFld[1][j][(k+2)%3][1]=vv2;
- PreFld[1][j][(k+2)%3][2]=vv1;
- PreFld[2][j][tt][1]=vv0;
- PreFld[2][j][tt][2]=vv2;
- }
- }
- }
- j=random(2);
- k=random(2);
- vv0=PreFld[0][j][k][0];
- vv1=PreFld[0][j][k][1];
- if (PreFld[1][j][k][0]==vv1)
- { vv2=PreFld[1][j][k][1];
- for (tt=0; tt<2; tt++)
- { if ((PreFld[2][j][tt][0]==vv2)&&(PreFld[2][j][tt][1]==vv0))
- { PreFld[0][j][k][0]=vv1;
- PreFld[0][j][k][1]=vv0;
- PreFld[1][j][k][0]=vv2;
- PreFld[1][j][k][1]=vv1;
- PreFld[2][j][tt][0]=vv0;
- PreFld[2][j][tt][1]=vv2;
- }
- }
- }
- }
- for (ff=0; ff<3; ff++)
- { i=random(2);
- j=random(2);
- if (i!=j) SwitchI(i,j);
- i=random(2);
- j=random(2);
- if (i!=j) SwitchJ(i,j);
- i=random(2);
- k=random(2);
- l=random(2);
- if (k!=l) SwitchK(i,k,l);
- j=random(2);
- k=random(2);
- l=random(2);
- if (k!=l) SwitchL(j,k,l);
- }
- MixNumbers();
- for (i=0; i<2; i++)
- { for (j=0; j<2; j++)
- { for (k=0; k<2; k++)
- { for (l=0; l<2; l++)
- Fld[i][j][k][l]=PreFld[i][j][k][l];
- }
- }
- }
- ff=0;
- while (ff<40)
- { i=Math.floor(Math.random()*2);
- j=Math.floor(Math.random()*2);
- k=Math.floor(Math.random()*2);
- l=Math.floor(Math.random()*2);
- if (Fld[i][j][k][l]>0) { Fld[i][j][k][l]=0; ff++; }
- if (Fld[2-i][2-j][2-k][2-l]>0) { Fld[2-i][2-j][2-k][2-l]=0; ff++; }
- if (Fld[j][i][l][k]>0) { Fld[j][i][l][k]=0; ff++; }
- if (Fld[2-j][2-i][2-l][2-k]>0) { Fld[2-j][2-i][2-l][2-k]=0; ff++; }
- }
- I_Sel=-1;
- IsOver=false;
- RefreshScreen();
- Now = new Date();
- StartTime = Now.getTime() / 1000;
- }
- function RefreshScreen()
- { for (i=0; i<2; i++)
- { for (j=0; j<2; j++)
- { for (k=0; k<2; k++)
- { for (l=0; l<2; l++)
- { window.document.images[4*i+24*j+k+2*l].src = NPic[Fld[i][j][k][l]].src;
- }
- }
- }
- }
- }
- function Help()
- { alert("Put the missing Czech letters into the grid"+
- "\nso that every letter occurs once in every row"+
- "\nand column and in every 2x2 block."+
- "\nThe `A means Put answer here.");
- }
- </script>