changeset 162 | f2c55c5744ab |
parent 161 | ddc36c6cc097 |
child 186 | dbf2da029e02 |
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 })(); |