/* truc.js

   Pavage de Truchet 12/06/2003 (jj/mm/aaaa)

   Jean-Paul Davalan © 2003 jpdvl@wanadoo.fr

   Licence GPL (GNU General Public)  
   http://www.gnu.org/licenses/gpl.txt
     
   programme d'essai
   
 */
var hor=6, vert=10;
var cols = new Array("b","r","v","j","m");
var ncols = 2;
var Im = new Array();

var a = Math.floor(5*Math.random());
var b = (a+1+Math.floor(4*Math.random()))%5; // b != a
/* les quatre motifs sont codés de 0 à 3 de telle manière
   que la parité de la somme 
                abscisse + ordonnée+ motif
   ait une parité constante ssi le pavage est correct

   démo : il suffit de construire la table des 4 x 4
   juxtapositions hor. (ou vert.) des motifs et éventuellement
   de modifier les codes pour avoir un échiquier des
   cas possibles = ou interdits X

      0 1 2 3 
    0 X = X =
    1 = X = X       etc.
    2 X
    3
    
    exemple de pavage qui convient

      1 0 3 0 1 2 1 2 3
      2 3 2 1 0 3 2 3 0
      2 2 1 0 3 0 1 2 1
      etc.

    motifs en ascii :
    
     x /   \ x   x /   \ x
      /     \     x     x      motifs
     / x   x \   / x   x \

      0     1     2     3      codes
      
   Une fois le pavage réalisé, chaque carreau de motif m
   peut être remplacé par un carreau de motif m ± 2
   (d'ailleurs dans la représentation ci-dessus, seuls 
   les \ ou x central  changent si on conserve la parité)
   
 */
Im[0] = new Image();Im[0].src = "v0.png";
Im[1] = new Image();Im[1].src = "v1.png";
Im[2] = new Image();Im[2].src = "v2.png";
Im[3] = new Image();Im[3].src = "v3.png";

var tab=new Array();   /* mémoire des motifs */

function mktab() {
  var i, j, m;
  document.writeln("<center>");
  document.writeln('<table border="0" cellspacing="0" cellpadding="0">');
  for(i=0; i<hor; i++) {
    document.writeln("<tr>");
   
    for(j=0;j<vert;j++) {
      m = Math.floor(4*Math.random());
      tab[vert*i+j] = m;
      document.write('<td>');
      document.write('<a href="javascript:chge('+i+','+j+')"><img border=0 name="f'+i+''+j+'" src="'+Im[0].src+'" width=40 height=40 alt=""></a>');
      document.images["f"+i+""+j].src=Im[m].src;
      document.write('</td>');
    }

    document.writeln("</tr>");
  } 
  document.writeln("</table>"); document.writeln("</center>");
}

function chge(i, j) {
  var u = i+""+j, 
      k= vert*i+j, 
      m=(tab[k]+1)%4;
  tab[k] = m;
  document.images["f"+u].src = Im[m].src;
}

function chge2() {
  var i, j, m, n;
  for(i=0; i<hor; i++) {
    for(j=0;j<vert;j++) {
      m = Math.floor(4*Math.random());
      document.images["f"+i+""+j].src=Im[m].src;
    }
  }
}



