board.js
changeset 162 f2c55c5744ab
parent 161 ddc36c6cc097
child 186 dbf2da029e02
equal deleted inserted replaced
161:ddc36c6cc097 162:f2c55c5744ab
   987     if (brd.ba === 0) cnt++; if (brd.bb === 0) cnt++; if (brd.bc === 0) cnt++; if (brd.bd === 0) cnt++;
   987     if (brd.ba === 0) cnt++; if (brd.bb === 0) cnt++; if (brd.bc === 0) cnt++; if (brd.bd === 0) cnt++;
   988     if (brd.ca === 0) cnt++; if (brd.cb === 0) cnt++; if (brd.cc === 0) cnt++; if (brd.cd === 0) cnt++;
   988     if (brd.ca === 0) cnt++; if (brd.cb === 0) cnt++; if (brd.cc === 0) cnt++; if (brd.cd === 0) cnt++;
   989     if (brd.da === 0) cnt++; if (brd.db === 0) cnt++; if (brd.dc === 0) cnt++; if (brd.dd === 0) cnt++;
   989     if (brd.da === 0) cnt++; if (brd.db === 0) cnt++; if (brd.dc === 0) cnt++; if (brd.dd === 0) cnt++;
   990     return cnt;
   990     return cnt;
   991 }
   991 }
       
   992 BoardObj.indexes = ["aa", "ab", "ac", "ad", "ba", "bb", "bc", "bd", "ca", "cb", "cc", "cd", "da", "db", "dc", "dd"];
       
   993 /** Put random value to free cell uniformly. */
       
   994 BoardObj.prototype.rnd = function(val) {
       
   995     var brd = this.brd;
       
   996     var idx;
       
   997     var free = 0;
       
   998     for (var i = BoardObj.indexes.length-1; i >= 0; i--) {
       
   999         var idx = BoardObj.indexes[i];
       
  1000         if (brd[idx] === 0) {
       
  1001             free++;
       
  1002             if (Math.random()*free < 1)
       
  1003                 idx = i;
       
  1004         }
       
  1005     }
       
  1006     if (free === 0)
       
  1007         throw new Error('There are no free space...');
       
  1008     brd[idx] = val;
       
  1009 }
       
  1010 
   992 BoardObj.scoreLookup = [0]; // [ 0, 4, 16, 48, 128, 320, 768, 1792, 4096, 9216, 20480, 45056, 98304];
  1011 BoardObj.scoreLookup = [0]; // [ 0, 4, 16, 48, 128, 320, 768, 1792, 4096, 9216, 20480, 45056, 98304];
   993 (function() {
  1012 (function() {
   994     for (var i = 1; i < 16; i++)
  1013     for (var i = 1; i < 16; i++)
   995         BoardObj.scoreLookup[i] = (i-1)*(1 << i);
  1014         BoardObj.scoreLookup[i] = (i-1)*(1 << i);
   996 })();
  1015 })();