/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Platform = Container.expand(function () {
var self = Container.call(this);
var platformGraphics = self.attachAsset('platform', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 0;
self.lastX = 0;
self.update = function () {
self.x -= self.speed;
self.lastX = self.x;
};
return self;
});
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocityY = 0;
self.isJumping = false;
self.jumpPower = 0;
self.maxJumpPower = 25;
self.gravity = 0.8;
self.groundY = 0;
self.setGroundLevel = function (y) {
self.groundY = y;
self.y = y;
};
self.startJump = function () {
if (!self.isJumping && self.y >= self.groundY) {
self.isJumping = true;
self.velocityY = -15;
LK.getSound('jump').play();
}
};
self.update = function () {
self.velocityY += self.gravity;
self.y += self.velocityY;
if (self.y >= self.groundY) {
self.y = self.groundY;
self.velocityY = 0;
self.isJumping = false;
if (!self.isJumping) {
self.jumpPower = 0;
}
}
self.maxJumpHeightReached = 0;
if (self.isJumping) {
var jumpHeight = self.groundY - self.y;
if (jumpHeight > self.maxJumpHeightReached) {
self.maxJumpHeightReached = jumpHeight;
}
}
var color = self.isJumping ? 0xffff00 : 0x00ff00;
playerGraphics.tint = color;
};
return self;
});
var Spike = Container.expand(function () {
var self = Container.call(this);
var spikeGraphics = self.attachAsset('spike', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 0;
self.lastX = 0;
self.update = function () {
self.x -= self.speed;
self.lastX = self.x;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a2e
});
/****
* Game Code
****/
var groundY = 2100;
var gameWidth = 2048;
var gameHeight = 2732;
var isGameRunning = true;
var obstacleSpeed = 8;
var baseObstacleSpeed = 8;
var spawnRate = 80;
var tickCounter = 0;
var distanceTraveled = 0;
var lastScore = 0;
var player = game.addChild(new Player());
player.setGroundLevel(groundY);
player.x = 300;
var obstacles = [];
var scoreTxt = new Text2('Distance: 0', {
size: 120,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
function spawnObstacle() {
var randomType = Math.floor(Math.random() * 2);
var obstacle = null;
if (randomType === 0) {
obstacle = game.addChild(new Spike());
obstacle.x = gameWidth + 100;
obstacle.y = groundY;
} else {
obstacle = game.addChild(new Platform());
obstacle.x = gameWidth + 100;
obstacle.y = groundY + 60;
}
obstacle.speed = obstacleSpeed;
obstacle.lastX = obstacle.x;
obstacles.push(obstacle);
}
game.down = function (x, y, obj) {
if (isGameRunning) {
player.startJump();
}
};
game.update = function () {
if (!isGameRunning) {
return;
}
tickCounter++;
if (Math.floor(tickCounter / 100) > lastScore) {
lastScore = Math.floor(tickCounter / 100);
scoreTxt.setText('Distance: ' + lastScore);
}
if (tickCounter % spawnRate === 0) {
spawnObstacle();
}
player.update();
for (var i = obstacles.length - 1; i >= 0; i--) {
var obstacle = obstacles[i];
if (obstacle.lastX === undefined) {
obstacle.lastX = obstacle.x;
}
obstacle.update();
if (obstacle.x < -200) {
obstacle.destroy();
obstacles.splice(i, 1);
continue;
}
var wasOffscreen = obstacle.lastX > gameWidth + 50;
var isOnscreen = obstacle.x >= -50 && obstacle.x <= gameWidth + 50;
if (player.intersects(obstacle)) {
LK.getSound('hit').play();
LK.effects.flashScreen(0xff0000, 500);
isGameRunning = false;
LK.showGameOver();
}
obstacle.lastX = obstacle.x;
}
};
LK.playMusic('bgmusic', {
loop: true
}); /****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Platform = Container.expand(function () {
var self = Container.call(this);
var platformGraphics = self.attachAsset('platform', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 0;
self.lastX = 0;
self.update = function () {
self.x -= self.speed;
self.lastX = self.x;
};
return self;
});
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocityY = 0;
self.isJumping = false;
self.jumpPower = 0;
self.maxJumpPower = 25;
self.gravity = 0.8;
self.groundY = 0;
self.setGroundLevel = function (y) {
self.groundY = y;
self.y = y;
};
self.startJump = function () {
if (!self.isJumping && self.y >= self.groundY) {
self.isJumping = true;
self.velocityY = -15;
LK.getSound('jump').play();
}
};
self.update = function () {
self.velocityY += self.gravity;
self.y += self.velocityY;
if (self.y >= self.groundY) {
self.y = self.groundY;
self.velocityY = 0;
self.isJumping = false;
if (!self.isJumping) {
self.jumpPower = 0;
}
}
self.maxJumpHeightReached = 0;
if (self.isJumping) {
var jumpHeight = self.groundY - self.y;
if (jumpHeight > self.maxJumpHeightReached) {
self.maxJumpHeightReached = jumpHeight;
}
}
var color = self.isJumping ? 0xffff00 : 0x00ff00;
playerGraphics.tint = color;
};
return self;
});
var Spike = Container.expand(function () {
var self = Container.call(this);
var spikeGraphics = self.attachAsset('spike', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 0;
self.lastX = 0;
self.update = function () {
self.x -= self.speed;
self.lastX = self.x;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a2e
});
/****
* Game Code
****/
var groundY = 2100;
var gameWidth = 2048;
var gameHeight = 2732;
var isGameRunning = true;
var obstacleSpeed = 8;
var baseObstacleSpeed = 8;
var spawnRate = 80;
var tickCounter = 0;
var distanceTraveled = 0;
var lastScore = 0;
var player = game.addChild(new Player());
player.setGroundLevel(groundY);
player.x = 300;
var obstacles = [];
var scoreTxt = new Text2('Distance: 0', {
size: 120,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
function spawnObstacle() {
var randomType = Math.floor(Math.random() * 2);
var obstacle = null;
if (randomType === 0) {
obstacle = game.addChild(new Spike());
obstacle.x = gameWidth + 100;
obstacle.y = groundY;
} else {
obstacle = game.addChild(new Platform());
obstacle.x = gameWidth + 100;
obstacle.y = groundY + 60;
}
obstacle.speed = obstacleSpeed;
obstacle.lastX = obstacle.x;
obstacles.push(obstacle);
}
game.down = function (x, y, obj) {
if (isGameRunning) {
player.startJump();
}
};
game.update = function () {
if (!isGameRunning) {
return;
}
tickCounter++;
if (Math.floor(tickCounter / 100) > lastScore) {
lastScore = Math.floor(tickCounter / 100);
scoreTxt.setText('Distance: ' + lastScore);
}
if (tickCounter % spawnRate === 0) {
spawnObstacle();
}
player.update();
for (var i = obstacles.length - 1; i >= 0; i--) {
var obstacle = obstacles[i];
if (obstacle.lastX === undefined) {
obstacle.lastX = obstacle.x;
}
obstacle.update();
if (obstacle.x < -200) {
obstacle.destroy();
obstacles.splice(i, 1);
continue;
}
var wasOffscreen = obstacle.lastX > gameWidth + 50;
var isOnscreen = obstacle.x >= -50 && obstacle.x <= gameWidth + 50;
if (player.intersects(obstacle)) {
LK.getSound('hit').play();
LK.effects.flashScreen(0xff0000, 500);
isGameRunning = false;
LK.showGameOver();
}
obstacle.lastX = obstacle.x;
}
};
LK.playMusic('bgmusic', {
loop: true
});