Game of Stones
by david_i_smith
JavaScript
var Player = function (id) {
this.id = id;
this.possibleMoves = [2];
};
Player.prototype.hasMove = function (game) {
var hasMove = false;
for (var i = 0; i < this.possibleMoves.length; i++) {
if (game.numStones - this.possibleMoves[i] >= 0) {
hasMove = true;
}
}
return hasMove;
};
Player.prototype.move = function (game) {
game.numStones -= this.possibleMoves[0];
};
var Game = function (options) {
this.numStones = options.numStones;
this.player1 = options.player1;
this.player2 = options.player2;
this.initialize();
};
Game.prototype.initialize = function () {
this.setCurrentPlayer(this.player1);
this.setWinner(false);
};
Game.prototype.start = function () {
if (!this.winner) {
if (!this.currentPlayer.hasMove(this)) {
this.setCurrentPlayer();
this.setWinner(this.currentPlayer);
console.log(this.winner.id);
return;
}
this.currentPlayer.move(this);
this.setCurrentPlayer();
this.start();
}
};
Game.prototype.setCurrentPlayer = function (player) {
var currentPlayer;
if (!player) {
currentPlayer = (this.currentPlayer.id === 'First') ? this.player2 : this.player1;
} else {
currentPlayer = player;
}
this.currentPlayer = currentPlayer;
};
Game.prototype.setWinner = function (winner) {
this.winner = winner;
};
(function (nValues) {
for (var i = 0; i < nValues.length; i++) {
var game = new Game({
numStones: nValues[i],
player1: new Player('First'),
player2: new Player('Second')
});
game.start();
}
})([1,2,3,4,5,6,7,10]);