From b6effd41313938e70b383f9d6fa61ff53806cf56 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Fri, 3 Jun 2016 21:40:54 +0200 Subject: [PATCH] Allow switching computer moves with j/k. --- www/js/book.js | 47 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/www/js/book.js b/www/js/book.js index e4c3ce1..aacd980 100644 --- a/www/js/book.js +++ b/www/js/book.js @@ -158,12 +158,15 @@ var find_last_move_score = function() { }); } +var candidate_moves = []; +var chosen_index = null; + var find_computer_move = function() { var fen = current_display_fen(); $.ajax({ url: "/opening-stats.pl?fen=" + encodeURIComponent(fen) + ";includetransp=0" }).done(function(data, textstatus, xhr) { - var candidate_moves = []; + candidate_moves = []; var moves = data['moves']; var root_move = sort_move_by_frequency(moves, data); @@ -185,19 +188,37 @@ var find_computer_move = function() { } // Pick one at random. - var chosen_index = Math.floor(Math.random() * candidate_moves.length); - var chosen = candidate_moves[chosen_index]; - $("#compmove").text(chosen['move']); - $("#compfraction").text((100.0 * chosen['fraction']).toFixed(1) + "%"); - if (candidate_moves.length == 1) { - $("#comprank").text("only candidate move"); - } else { - $("#comprank").text(format_ordinal(chosen_index + 1) + " out of " + candidate_moves.length + " candidate moves"); - } - make_move(chosen['move']); + choose_move(Math.floor(Math.random() * candidate_moves.length)); }); } +var choose_move = function(idx) { + chosen_index = idx; + var chosen = candidate_moves[chosen_index]; + $("#compmove").text(chosen['move']); + $("#compfraction").text((100.0 * chosen['fraction']).toFixed(1) + "%"); + if (candidate_moves.length == 1) { + $("#comprank").text("only candidate move"); + } else { + $("#comprank").text(format_ordinal(chosen_index + 1) + " out of " + candidate_moves.length + " candidate moves, j/k to switch"); + } + make_move(chosen['move']); +} + +var prev_variant = function() { + if (chosen_index !== null) { + --move_override; + choose_move((chosen_index + candidate_moves.length - 1) % candidate_moves.length); + } +} + +var next_variant = function() { + if (chosen_index !== null) { + --move_override; + choose_move((chosen_index + 1) % candidate_moves.length); + } +} + // Add deried data and then sort moves to get the most common ones (in-place). // Remove the root mode and return it. Currently usable for practice mode only! var sort_move_by_frequency = function(moves, data) @@ -734,6 +755,10 @@ var init = function() { next_move(); } else if (event.which == 37) { prev_move(); + } else if (event.which == 74) { // j + if (practice_mode) next_variant(); + } else if (event.which == 75) { // k + if (practice_mode) prev_variant(); } }); -- 2.39.2