2048.html
changeset 53 ee53cd2cb69a
parent 52 e4e21d2fcbe7
child 55 8ba9dc89be87
equal deleted inserted replaced
52:e4e21d2fcbe7 53:ee53cd2cb69a
   183         <div class="option">
   183         <div class="option">
   184           <input type="checkbox" name="whilePossible"/> max move in one direction
   184           <input type="checkbox" name="whilePossible"/> max move in one direction
   185         </div>
   185         </div>
   186         <div class="clearfix"></div>
   186         <div class="clearfix"></div>
   187       </div>
   187       </div>
   188       <div class="ai" id="ai-next-max-value">
   188       <div class="ai" id="ai-one-step-deep">
   189         <button class="ai">enable</button>
   189         <button class="ai">enable</button>
   190         <h5>next merge makes max value</h5>
   190         <h5>next merge makes max value</h5>
       
   191         <div class="option">
       
   192           <input type="text" name="scoreCoef" class="int" pattern="[0-9]*" value="1"/> score weight
       
   193         </div>
       
   194         <div class="option">
       
   195           <input type="text" name="maxValCoef" class="int" pattern="[0-9]*" value="0"/> max value weight
       
   196         </div>
       
   197         <div class="option">
       
   198           <input type="text" name="cornerBonus" class="int" pattern="[0-9]*" value="100"/> max value at corner bonus
       
   199         </div>
       
   200         <div class="option">
       
   201           <input type="text" name="edgeBonus" class="int" pattern="[0-9]*" value="0"/> max value at edge bonus
       
   202         </div>
       
   203         <div class="option">
       
   204           <input type="text" name="freeBonus" class="int" pattern="[0-9]*" value="10"/> free cell coefficient
       
   205         </div>
       
   206         <div class="clearfix"></div>
   191       </div>
   207       </div>
   192       <div class="ai" id="ai-deep-max-score">
   208       <div class="ai" id="ai-deep-max-score">
   193         <button class="ai">enable</button>
   209         <button class="ai">enable</button>
   194         <h5>deep merges without simulation make max score</h5>
   210         <h5>deep merges without simulation make max score</h5>
   195       </div>
   211       </div>
   526     ////////////////////////////////////////////////////////////////
   542     ////////////////////////////////////////////////////////////////
   527     // Register AIs.
   543     // Register AIs.
   528 
   544 
   529     ui.ai = {};
   545     ui.ai = {};
   530     ui.ai.current = null;
   546     ui.ai.current = null;
       
   547     ui.ai.parseCfg = function(aiDom, cfg) {
       
   548       var optDoms = aiDom.querySelectorAll("div.option > input.int[type='text']");
       
   549       for (var i = 0; i < optDoms.length; i++) {
       
   550         var val = parseFloat(optDoms[i].value);
       
   551         if (val === NaN) {
       
   552           ui.game.setMessage('' + optDoms[i].name + ' setting is not a number!');
       
   553           continue;
       
   554         }
       
   555         cfg[optDoms[i].name] = val;
       
   556       }
       
   557     }
   531     ui.ai.algList = {
   558     ui.ai.algList = {
   532       "ai-blind-random": function() {
   559       "ai-blind-random": function() {
   533         return new ai.blindRandom(ui.brdEngine);
   560         return new ai.blindRandom(ui.brdEngine);
   534       },
   561       },
   535       "ai-blind-weight-random": function(aiDom) {
   562       "ai-blind-weight-random": function(aiDom) {
   544         var cfg = {};
   571         var cfg = {};
   545         cfg.clockwise = aiDom.querySelectorAll("input[name='clockwise']")[0].checked;
   572         cfg.clockwise = aiDom.querySelectorAll("input[name='clockwise']")[0].checked;
   546         cfg.whilePossible = aiDom.querySelectorAll("input[name='whilePossible']")[0].checked;
   573         cfg.whilePossible = aiDom.querySelectorAll("input[name='whilePossible']")[0].checked;
   547         return new ai.blindCycle(ui.brdEngine, cfg);
   574         return new ai.blindCycle(ui.brdEngine, cfg);
   548       },
   575       },
   549       "ai-next-max-score": function() {
   576       "ai-one-step-deep": function(aiDom) {
   550         return new ai.nextMaxScore(ui.brdEngine);
   577         var cfg = {};
   551       },
   578         ui.ai.parseCfg(aiDom, cfg);
   552       "ai-next-max-value": function() {
   579         console.log(cfg);
   553         return new ai.nextMaxValue(ui.brdEngine);
   580         return new ai.oneStepDeep(ui.brdEngine, cfg);
   554       },
   581       },
   555       "ai-deep-max-score": function() {
   582       "ai-deep-max-score": function() {
   556         return new ai.deepMaxScore(ui.brdEngine);
   583         return new ai.deepMaxScore(ui.brdEngine);
   557       },
   584       },
   558       "ai-deep-max-score-corner": function() {
   585       "ai-deep-max-score-corner": function() {