equal
deleted
inserted
replaced
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() { |