board.js
changeset 186 dbf2da029e02
parent 162 f2c55c5744ab
equal deleted inserted replaced
185:59df68b203ca 186:dbf2da029e02
    68     var cnt = 0;
    68     var cnt = 0;
    69     for (var i = 0; i < 16; i++)
    69     for (var i = 0; i < 16; i++)
    70         if (this.brd[i] === 0)
    70         if (this.brd[i] === 0)
    71             cnt++;
    71             cnt++;
    72     return cnt;
    72     return cnt;
       
    73 }
       
    74 /** Put random value to free cell uniformly. */
       
    75 BoardArr.prototype.rnd = function(val) {
       
    76     var brd = this.brd;
       
    77     var idx;
       
    78     var free = 0;
       
    79     for (var i = 0; i < 16; i++) {
       
    80         if (brd[idx] === 0) {
       
    81             free++;
       
    82             if (Math.random()*free < 1)
       
    83                 idx = i;
       
    84         }
       
    85     }
       
    86     if (free === 0)
       
    87         throw new Error('There are no free space...');
       
    88     brd[idx] = val;
    73 }
    89 }
    74 BoardArr.prototype.score = function() {
    90 BoardArr.prototype.score = function() {
    75     var score = 0;
    91     var score = 0;
    76     for (var i = 0; i < 16; i++) {
    92     for (var i = 0; i < 16; i++) {
    77         var v = this.brd[i][j];
    93         var v = this.brd[i][j];
   175     for (var i = 0; i < 4; i++)
   191     for (var i = 0; i < 4; i++)
   176         for (var j = 0; j < 4; j++)
   192         for (var j = 0; j < 4; j++)
   177             if (this.brd[i][j] === 0)
   193             if (this.brd[i][j] === 0)
   178                 cnt++;
   194                 cnt++;
   179     return cnt;
   195     return cnt;
       
   196 }
       
   197 /** Put random value to free cell uniformly. */
       
   198 BoardArr2d.prototype.rnd = function(val) {
       
   199     var brd = this.brd;
       
   200     var xi, xj;
       
   201     var free = 0;
       
   202     for (var i = 0; i < 4; i++)
       
   203         for (var j = 0; j < 4; j++)
       
   204             if (this.brd[i][j] === 0) {
       
   205                 free++;
       
   206                 if (Math.random()*free < 1) {
       
   207                     xi = i;
       
   208                     xj = j;
       
   209                 }
       
   210             }
       
   211     if (free === 0)
       
   212         throw new Error('There are no free space...');
       
   213     brd[xi][xj] = val;
   180 }
   214 }
   181 BoardArr2d.prototype.score = function() {
   215 BoardArr2d.prototype.score = function() {
   182     var score = 0;
   216     var score = 0;
   183     for (var i = 0; i < 4; i++) {
   217     for (var i = 0; i < 4; i++) {
   184         for (var j = 0; j < 4; j++) {
   218         for (var j = 0; j < 4; j++) {