});
}
+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);
}
// 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)
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();
}
});