board.js
changeset 121 b7b5e4a03e4b
parent 117 5701802ff232
child 139 4dde63ac0bb4
equal deleted inserted replaced
120:653ee00d2601 121:b7b5e4a03e4b
   836     if (brd.ba === 0) cnt++; if (brd.bb === 0) cnt++; if (brd.bc === 0) cnt++; if (brd.bd === 0) cnt++;
   836     if (brd.ba === 0) cnt++; if (brd.bb === 0) cnt++; if (brd.bc === 0) cnt++; if (brd.bd === 0) cnt++;
   837     if (brd.ca === 0) cnt++; if (brd.cb === 0) cnt++; if (brd.cc === 0) cnt++; if (brd.cd === 0) cnt++;
   837     if (brd.ca === 0) cnt++; if (brd.cb === 0) cnt++; if (brd.cc === 0) cnt++; if (brd.cd === 0) cnt++;
   838     if (brd.da === 0) cnt++; if (brd.db === 0) cnt++; if (brd.dc === 0) cnt++; if (brd.dd === 0) cnt++;
   838     if (brd.da === 0) cnt++; if (brd.db === 0) cnt++; if (brd.dc === 0) cnt++; if (brd.dd === 0) cnt++;
   839     return cnt;
   839     return cnt;
   840 }
   840 }
       
   841 BoardObj.scoreLookup = [0]; // [ 0, 4, 16, 48, 128, 320, 768, 1792, 4096, 9216, 20480, 45056, 98304];
       
   842 (function() {
       
   843     for (var i = 1; i < 16; i++)
       
   844         BoardObj.scoreLookup[i] = (i-1)*(1 << i);
       
   845 })();
   841 BoardObj.prototype.score = function() {
   846 BoardObj.prototype.score = function() {
   842     var score = 0;
       
   843     var brd = this.brd;
   847     var brd = this.brd;
   844     var v = brd.aa;
   848     var lookup = BoardObj.scoreLookup;
   845     if (v > 1) score += (v-1)*(1 << v);
   849     var score = lookup[brd.aa];
   846     var v = brd.ab;
   850     score += lookup[brd.ab];
   847     if (v > 1) score += (v-1)*(1 << v);
   851     score += lookup[brd.ac];
   848     var v = brd.ac;
   852     score += lookup[brd.ad];
   849     if (v > 1) score += (v-1)*(1 << v);
   853     score += lookup[brd.ba];
   850     var v = brd.ad;
   854     score += lookup[brd.bb];
   851     if (v > 1) score += (v-1)*(1 << v);
   855     score += lookup[brd.bc];
   852     var v = brd.ba;
   856     score += lookup[brd.bd];
   853     if (v > 1) score += (v-1)*(1 << v);
   857     score += lookup[brd.ca];
   854     var v = brd.bb;
   858     score += lookup[brd.cb];
   855     if (v > 1) score += (v-1)*(1 << v);
   859     score += lookup[brd.cc];
   856     var v = brd.bc;
   860     score += lookup[brd.cd];
   857     if (v > 1) score += (v-1)*(1 << v);
   861     score += lookup[brd.da];
   858     var v = brd.bd;
   862     score += lookup[brd.db];
   859     if (v > 1) score += (v-1)*(1 << v);
   863     score += lookup[brd.dc];
   860     var v = brd.ca;
   864     score += lookup[brd.dd];
   861     if (v > 1) score += (v-1)*(1 << v);
       
   862     var v = brd.cb;
       
   863     if (v > 1) score += (v-1)*(1 << v);
       
   864     var v = brd.cc;
       
   865     if (v > 1) score += (v-1)*(1 << v);
       
   866     var v = brd.cd;
       
   867     if (v > 1) score += (v-1)*(1 << v);
       
   868     var v = brd.da;
       
   869     if (v > 1) score += (v-1)*(1 << v);
       
   870     var v = brd.db;
       
   871     if (v > 1) score += (v-1)*(1 << v);
       
   872     var v = brd.dc;
       
   873     if (v > 1) score += (v-1)*(1 << v);
       
   874     var v = brd.dd;
       
   875     if (v > 1) score += (v-1)*(1 << v);
       
   876     return score;
   865     return score;
   877 }
   866 }
   878 BoardObj.prototype.max = function() {
   867 BoardObj.prototype.max = function() {
   879     var brd = this.brd;
   868     var brd = this.brd;
   880     var max = brd.aa;
   869     var max = brd.aa;