UNPKG

tictactoe-agent

Version:

TicTacToe Agent - Suggests a good tictactoe move based on a heuristic

57 lines (53 loc) 2.87 kB
var TicTacToeView = { render: function(model) { var output = []; output.push("#####"); output.push("#" + model.row(0).replace(/-/g, ' ') + "#"); output.push("#" + model.row(1).replace(/-/g, ' ') + "#"); output.push("#" + model.row(2).replace(/-/g, ' ') + "#"); output.push("#####"); return output.join("\n"); }, dump: function(model, isDebugging) { var output = []; var summary = model.boardSummary(); var recommendation = model.getRecommendation(); output.push('********************************************************'); output.push(this.render(model)); output.push('********************************************************'); if (isDebugging) { output.push('* Lines'); output.push('********************************************************'); for (var i = 0; i < summary.lines.length; i++) { output.push(JSON.stringify(summary.lines[i])); } } if (summary.complete) { output.push('********************************************************'); output.push('* Game Over ********************************************'); output.push('********************************************************'); output.push('****** Player \'' + summary.complete.winner + '\' won on line ' + summary.complete.line + ' ************************'); output.push('********************************************************'); } else if (recommendation) { if (isDebugging) { output.push('********************************************************'); output.push('* Current Score : ' + summary.score); output.push('********************************************************'); output.push('* Options'); output.push('********************************************************'); for (var i = 0; i < recommendation.possibilities.length; i++) { output.push(JSON.stringify(recommendation.possibilities[i])); } output.push('********************************************************'); } output.push('* Recommendation for ' + model.currentTurn + ' is ' + recommendation.index + " (Score: " + recommendation.score + ")"); output.push('********************************************************'); } else { output.push('********************************************************'); output.push('********* No moves available ***************************'); output.push('********************************************************'); } return output.join("\n"); } } module.exports = TicTacToeView;