board.js
changeset 139 4dde63ac0bb4
parent 121 b7b5e4a03e4b
child 145 bf3d47ecd0dd
child 148 93c122e0ea90
equal deleted inserted replaced
138:23cd36180bf9 139:4dde63ac0bb4
   117         && x1[0] === y1[0] && x1[1] === y1[1] && x1[2] === y1[2] && x1[3] === y1[3]
   117         && x1[0] === y1[0] && x1[1] === y1[1] && x1[2] === y1[2] && x1[3] === y1[3]
   118         && x2[0] === y2[0] && x2[1] === y2[1] && x2[2] === y2[2] && x2[3] === y2[3];
   118         && x2[0] === y2[0] && x2[1] === y2[1] && x2[2] === y2[2] && x2[3] === y2[3];
   119 }
   119 }
   120 /** Compare boards. */
   120 /** Compare boards. */
   121 BoardArr2d.prototype.equals = BoardArr2d.prototype.equals_unrolled;
   121 BoardArr2d.prototype.equals = BoardArr2d.prototype.equals_unrolled;
       
   122 BoardArr2d.prototype.compress = function() {
       
   123     var brd = this.brd;
       
   124     var h1 = brd[0][0];
       
   125     h1 = (h1 << 4) | brd[0][1];
       
   126     h1 = (h1 << 4) | brd[0][2];
       
   127     h1 = (h1 << 4) | brd[0][3];
       
   128     h1 = (h1 << 4) | brd[1][0];
       
   129     h1 = (h1 << 4) | brd[1][1];
       
   130     h1 = (h1 << 4) | brd[1][2];
       
   131     h1 = (h1 << 4) | brd[1][3];
       
   132     var h2 = brd[2][0];
       
   133     h2 = (h2 << 4) | brd[2][1];
       
   134     h2 = (h2 << 4) | brd[2][2];
       
   135     h2 = (h2 << 4) | brd[2][3];
       
   136     h2 = (h2 << 4) | brd[3][0];
       
   137     h2 = (h2 << 4) | brd[3][1];
       
   138     h2 = (h2 << 4) | brd[3][2];
       
   139     h2 = (h2 << 4) | brd[3][3];
       
   140     return [h1, h2];
       
   141 }
   122 
   142 
   123 /* Return and optionally fill 2d board. */
   143 /* Return and optionally fill 2d board. */
   124 BoardArr2d.prototype.exportTo = function(brd) {
   144 BoardArr2d.prototype.exportTo = function(brd) {
   125     brd = brd || [[],[],[],[]];
   145     brd = brd || [[],[],[],[]];
   126     for (var i = 0; i < 4; i++)
   146     for (var i = 0; i < 4; i++)
   810         && self.ba == brd.ba && self.ca == brd.ca
   830         && self.ba == brd.ba && self.ca == brd.ca
   811         && self.bd == brd.bd && self.cd == brd.cd
   831         && self.bd == brd.bd && self.cd == brd.cd
   812         && self.db == brd.db && self.dc == brd.dc
   832         && self.db == brd.db && self.dc == brd.dc
   813         && self.bb == brd.bb && self.bc == brd.bc && self.cb == brd.cb && self.cc == brd.cc;
   833         && self.bb == brd.bb && self.bc == brd.bc && self.cb == brd.cb && self.cc == brd.cc;
   814 };
   834 };
       
   835 BoardObj.prototype.compress = function() {
       
   836     var brd = this.brd;
       
   837     var h1 = brd.aa;
       
   838     h1 = (h1 << 4) | brd.ab;
       
   839     h1 = (h1 << 4) | brd.ac;
       
   840     h1 = (h1 << 4) | brd.ad;
       
   841     h1 = (h1 << 4) | brd.ba;
       
   842     h1 = (h1 << 4) | brd.bb;
       
   843     h1 = (h1 << 4) | brd.bc;
       
   844     h1 = (h1 << 4) | brd.bd;
       
   845     var h2 = brd.ca;
       
   846     h2 = (h2 << 4) | brd.cb;
       
   847     h2 = (h2 << 4) | brd.cc;
       
   848     h2 = (h2 << 4) | brd.cd;
       
   849     h2 = (h2 << 4) | brd.da;
       
   850     h2 = (h2 << 4) | brd.db;
       
   851     h2 = (h2 << 4) | brd.dc;
       
   852     h2 = (h2 << 4) | brd.dd;
       
   853     return [h1, h2];
       
   854 }
   815 BoardObj.prototype.copy = function(brd) {
   855 BoardObj.prototype.copy = function(brd) {
   816     var self = this.brd;
   856     var self = this.brd;
   817     if ( ! brd) {
   857     if ( ! brd) {
   818         var newBrd = new Object(BoardObj.prototype);
   858         var newBrd = new Object(BoardObj.prototype);
   819         newBrd.brd = { aa: self.aa, ab: self.ab, ac: self.ac, ad: self.ad,
   859         newBrd.brd = { aa: self.aa, ab: self.ab, ac: self.ac, ad: self.ad,