/**** * Classes ****/ // Food class var Food = Container.expand(function () { var self = Container.call(this); var food = self.attachAsset('food', { anchorX: 0.5, anchorY: 0.5 }); self.randomizePosition = function () { self.x = Math.floor(Math.random() * 2048); self.y = Math.floor(Math.random() * 2732); }; self.randomizePosition(); }); //<Assets used in the game will automatically appear here> // Snake class var Snake = Container.expand(function () { var self = Container.call(this); self.segments = []; self.direction = { x: 1, y: 0 }; self.speed = 10; self.grow = false; self.init = function () { for (var i = 0; i < 5; i++) { var segment = self.addSegment(1024 - i * 20, 1366); self.segments.push(segment); } }; self.addSegment = function (x, y) { var segment = self.attachAsset('snakeSegment', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); return segment; }; self.update = function () { var newHeadX = self.segments[0].x + self.direction.x * self.speed; var newHeadY = self.segments[0].y + self.direction.y * self.speed; if (self.grow) { var newSegment = self.addSegment(newHeadX, newHeadY); self.segments.unshift(newSegment); self.grow = false; } else { var tail = self.segments.pop(); tail.x = newHeadX; tail.y = newHeadY; self.segments.unshift(tail); } // Check for collisions with walls if (newHeadX < 0 || newHeadX > 2048 || newHeadY < 0 || newHeadY > 2732) { LK.showGameOver(); } // Check for collisions with itself for (var i = 1; i < self.segments.length; i++) { if (self.segments[0].x === self.segments[i].x && self.segments[0].y === self.segments[i].y) { LK.showGameOver(); } } }; self.changeDirection = function (newDirection) { if ((newDirection.x !== -self.direction.x || newDirection.y !== -self.direction.y) && (newDirection.x !== self.direction.x || newDirection.y !== self.direction.y)) { self.direction = newDirection; } }; self.init(); }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ var snake = game.addChild(new Snake()); var food = game.addChild(new Food()); var score = 0; var scoreTxt = new Text2('0', { size: 150, fill: "#ffffff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); game.update = function () { snake.update(); // Check for collision with food if (snake.segments[0].x === food.x && snake.segments[0].y === food.y) { snake.grow = true; food.randomizePosition(); score += 1; scoreTxt.setText(score); } }; game.down = function (x, y, obj) { var head = snake.segments[0]; var direction = { x: 0, y: 0 }; if (Math.abs(x - head.x) > Math.abs(y - head.y)) { direction.x = x > head.x ? 1 : -1; } else { direction.y = y > head.y ? 1 : -1; } snake.changeDirection(direction); };
/****
* Classes
****/
// Food class
var Food = Container.expand(function () {
var self = Container.call(this);
var food = self.attachAsset('food', {
anchorX: 0.5,
anchorY: 0.5
});
self.randomizePosition = function () {
self.x = Math.floor(Math.random() * 2048);
self.y = Math.floor(Math.random() * 2732);
};
self.randomizePosition();
});
//<Assets used in the game will automatically appear here>
// Snake class
var Snake = Container.expand(function () {
var self = Container.call(this);
self.segments = [];
self.direction = {
x: 1,
y: 0
};
self.speed = 10;
self.grow = false;
self.init = function () {
for (var i = 0; i < 5; i++) {
var segment = self.addSegment(1024 - i * 20, 1366);
self.segments.push(segment);
}
};
self.addSegment = function (x, y) {
var segment = self.attachAsset('snakeSegment', {
anchorX: 0.5,
anchorY: 0.5,
x: x,
y: y
});
return segment;
};
self.update = function () {
var newHeadX = self.segments[0].x + self.direction.x * self.speed;
var newHeadY = self.segments[0].y + self.direction.y * self.speed;
if (self.grow) {
var newSegment = self.addSegment(newHeadX, newHeadY);
self.segments.unshift(newSegment);
self.grow = false;
} else {
var tail = self.segments.pop();
tail.x = newHeadX;
tail.y = newHeadY;
self.segments.unshift(tail);
}
// Check for collisions with walls
if (newHeadX < 0 || newHeadX > 2048 || newHeadY < 0 || newHeadY > 2732) {
LK.showGameOver();
}
// Check for collisions with itself
for (var i = 1; i < self.segments.length; i++) {
if (self.segments[0].x === self.segments[i].x && self.segments[0].y === self.segments[i].y) {
LK.showGameOver();
}
}
};
self.changeDirection = function (newDirection) {
if ((newDirection.x !== -self.direction.x || newDirection.y !== -self.direction.y) && (newDirection.x !== self.direction.x || newDirection.y !== self.direction.y)) {
self.direction = newDirection;
}
};
self.init();
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
var snake = game.addChild(new Snake());
var food = game.addChild(new Food());
var score = 0;
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
game.update = function () {
snake.update();
// Check for collision with food
if (snake.segments[0].x === food.x && snake.segments[0].y === food.y) {
snake.grow = true;
food.randomizePosition();
score += 1;
scoreTxt.setText(score);
}
};
game.down = function (x, y, obj) {
var head = snake.segments[0];
var direction = {
x: 0,
y: 0
};
if (Math.abs(x - head.x) > Math.abs(y - head.y)) {
direction.x = x > head.x ? 1 : -1;
} else {
direction.y = y > head.y ? 1 : -1;
}
snake.changeDirection(direction);
};