/* wythoff.js

   Implémentation du jeu de Wythoff en javascript
   (NIM Two persons game)

   Jean-Paul Davalan Copyright © 2002-2006
   Concarneau le 17 septembre 2002
   jpdavalan@wanadoo.fr
*/
function alerte(s) {
        document.getElementById("comment").innerHTML=s;
}

var cote = 22, xpos, ypos, xancien=0, yancien=0;
var npart=0, npartg=0;
var lg="fr";
var corr = new Array();
for(i=0;i<=35;i++) corr[i] = 0;

corr[1] = 2;corr[3]=5;corr[4]=7;corr[6]=10;corr[8]=13;corr[9]=15;corr[11]=18;corr[12]=20;corr[14]=23;
corr[16]=26;corr[17]=28;corr[19]=31;corr[21]=34;
corr[2]=1;corr[5]=3;corr[7]=4;corr[10]=6;corr[13]=8;corr[15]=9;corr[18]=11;corr[20]=12;corr[23]=14;
corr[26]=16;corr[28]=17;corr[31]=19;corr[34]=21;

var Im = new Array();

Im[0] = new Image; Im[0].src="pg.png";
Im[1] = new Image; Im[1].src="pj.png";
Im[2] = new Image; Im[2].src="pr.png";
Im[3] = new Image; Im[3].src="pb.png";


function mjpart() {
  var s = npartg +" / "+npart;
  document.frm.parties.value=s;
}

function suivant() {
  var t=0, i, u, x, y, b = corr[xpos], a = corr[ypos];
  
  if(xpos==0 || ypos==0 || xpos==ypos) {
    x=0; y=0; t=1;
    if(lg=="fr") alerte("Vous avez perdu.");
    else if(lg=="en") alerte("You lose.");
    npart++;
    mjpart();
  } else if(b>0 && b<ypos) {
    x = xpos; y=b; t=1;
  } else if (a>0 && a < xpos) {
    y = ypos; x=a; t=1;
  } else {
    for(i=1; t==0 && i<= xpos && i<=ypos; i++) {
      if(corr[xpos-i] == ypos-i) {
        x=xpos-i; y=ypos-i;
        t = 1;
      }
    }
  }
  if(t==0) {
    if(xpos>1 && ypos>1) {

      u=Math.floor(3*Math.random());
      if(u==0) {
        x = 1+Math.floor((xpos-1)*Math.random());
        y = ypos;
      } else if(u==1) {
        x = xpos;
        y = 1 + Math.floor((ypos-1)*Math.random());
      } else {
        x = (xpos < ypos) ? xpos : ypos;
        i = Math.floor((x-1)*Math.random());
        x = xpos - i;
        y = ypos - i;
      }
    } else if(xpos>1) {
      x = xpos-1; y = ypos;
    } else {
      x = xpos; y = ypos-1;
    }
  }
  if(xancien>=0 && yancien>=0)
    document.images["c"+xancien+"_"+yancien].src=Im[0].src;
  xancien = xpos; yancien=ypos;
  effacepos(x,y);
  coloriepos();
  document.images["c"+xancien+"_"+yancien].src=Im[3].src;

}
function valide(x, y) {
 var a = 0;
 if (x>=0 && y>=0 && ((x==xpos && y<ypos)|| (y==ypos && x<xpos) || (x<xpos && y<ypos && xpos-x==ypos-y)))
  a = 1;
 return a;
}
function effacepos(x,y) {
  for(i=0;i<=xpos;i++) 
    document.images["c"+i+"_"+ypos].src=Im[0].src;
  for(i=0;i< ypos;i++)
    document.images["c"+xpos+"_"+i].src=Im[0].src;
  for(i=1; i<=xpos && i<=ypos;i++)
    document.images["c"+(xpos-i)+"_"+(ypos-i)].src=Im[0].src;
  xpos = x; ypos = y;
}
function coloriepos() {
  var i;
  document.images["c"+xancien+"_"+yancien].src=Im[0].src;
  for(i=0;i<xpos;i++)
    document.images["c"+i+"_"+ypos].src=Im[1].src;
  for(i=0;i<ypos;i++)
    document.images["c"+xpos+"_"+i].src=Im[1].src;
  for(i=1;i<=xpos && i<=ypos;i++)
    document.images["c"+(xpos-i)+"_"+(ypos-i)].src=Im[1].src;
  document.images["c"+xpos+"_"+ypos].src=Im[2].src;
}
function lesimages() {
  for(var i=0;i<cote;i++) {
    for(var j=0;j<cote;j++) {
      document.images["c"+i+"_"+j].src=Im[0].src;
    }
  }
}
function commence() {
var i, j, v=Math.floor(4+(cote-5)*Math.random());
alerte("");
  if(Math.random()<0.5) {
    xpos=v; ypos=cote-1;
  } else {
    ypos=v; xpos=cote-1;
  }
 coloriepos();
}
function joue(x,y) {
  if(valide(x,y)) {
    effacepos(x,y);
    coloriepos();
    if(xpos==0 && ypos==0) {
      if(lg=="fr") alerte("Bravo, vous avez gagné.");
      else if(lg=="en") alerte("You wins.");
      npart++; npartg++; mjpart();
    } else {
     suivant();
    }
  }
}

