morris
Version:
Nine Men's Morris implementation in Node.js
74 lines (67 loc) • 1.75 kB
JavaScript
(function() {
class Cursor {
constructor(game) {
this.row = 0;
this.position = 0;
this.game = game;
}
get index() {
return game.board.getPointIndex(this.row, this.position);
}
move(key) {
this.relativeActions[this.sides[0][key]]();
}
get relativeActions() {
var self = this;
return {
right() {
self.position = self.position + 1 < self.game.board.pointCount ? (self.position + 1) : 0;
},
left() {
self.position = self.position - 1 >= 0 ? (self.position - 1) : (self.game.board.pointCount - 1);
},
up() {
self.row = self.row + 1 < self.game.board.rows.length ? (self.row + 1) : 0;
},
down() {
self.row = self.row - 1 >= 0 ? (self.row - 1) : (self.game.board.rows.length - 1);
}
};
}
}
Cursor.prototype.sides = [
{
right: "right",
left: "left",
up: "up",
down: "down"
}
];
module.exports = Cursor;
})();
function moveCursor(key) {
var relativeActions = {
right: function() {
cursor.position = cursor.position + 1 < game.board.pointCount ? (cursor.position + 1) : 0;
},
left: function() {
cursor.position = cursor.position - 1 >= 0 ? (cursor.position - 1) : (game.board.pointCount - 1);
},
up: function() {
cursor.row = cursor.row + 1 < game.board.rows.length ? (cursor.row + 1) : 0;
},
down: function() {
cursor.row = cursor.row - 1 >= 0 ? (cursor.row - 1) : (game.board.rows.length - 1);
}
};
var sides = [
{
right: "right",
left: "left",
up: "up",
down: "down"
}
];
relativeActions[sides[0][key]]();
renderGame();
}