|
|
-
- function LOLGame(size) {
- // Set initial
- var length = Math.max(size,0);
- var player = 0;
-
- // Accessor
- this.getLength = function() {
- return length;
- };
- this.getPlayer = function() {
- return player;
- };
-
- // Change player, only at start
- this.reverse = function() {
- player = (player + 1) % 2;
- return true;
- };
-
- // Play
- this.play = function(number) {
- if (number === undefined || number == null || number < 1 || number > 3 || number > length)
- return length;
- length = length - number;
- if (length > 0)
- player = (player + 1) % 2;
- return length;
- };
-
- // Test end of game
- this.endOfGame = function() {
- return length == 0;
- };
-
- // Think to the better next shot
- this.think = function(level) {
- // Level 1: try to leave at least one at end of game
- if (level >= 1) {
- if (length >= 2 && length <= 4)
- return length-1;
- }
-
- // Level 2: try to leave five
- if (level >= 2) {
- if (length >= 6 && length <= 8)
- return length-5;
- }
-
- // Level 3: always try to left the nearest multiple of 4+1
- if (level >= 3) {
- var attemptsup = length-(Math.floor(length/4)*4+1);
- if (attemptsup >=1 && attemptsup <= 3)
- return attemptsup;
- var attemptinf = length-((Math.floor(length/4)-1)*4+1);
- if (attemptinf >=1 && attemptinf <= 3)
- return attemptinf;
- }
-
- // Simple case: randomly choose a number
- return Math.floor(Math.random()*Math.min(3,length-1))+1;
- };
- }
|