/****
* Classes
****/
var Paddle = Container.expand(function () {
var self = Container.call(this);
var paddleGraphics = self.attachAsset('paddle', {
anchorX: 0.5,
anchorY: 0.5
});
self.move = function (x) {
self.x = x;
};
});
var Ball = Container.expand(function () {
var self = Container.call(this);
var ballGraphics = self.attachAsset('ball', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocity = {
x: 5,
y: -5
};
self.move = function () {
self.x += self.velocity.x;
self.y += self.velocity.y;
};
self.bounce = function (axis) {
if (axis === 'x') {
self.velocity.x *= -1;
LK.effects.flashObject(self, 0xff0000, 300);
} else if (axis === 'y') {
self.velocity.y *= -1;
LK.effects.flashObject(self, 0xff0000, 300);
}
};
});
var Brick = Container.expand(function (scoreValue) {
var self = Container.call(this);
self.scoreValue = scoreValue;
var brickGraphics = self.attachAsset('brick', {
anchorX: 0.5,
anchorY: 0.5
});
});
var StoryManager = Container.expand(function () {
var self = Container.call(this);
self.choices = [];
self.currentChoiceIndex = 0;
self.makeChoice = function (choiceIndex) {
self.currentChoiceIndex = choiceIndex;
var choice = self.choices[choiceIndex];
choice.score = LK.getScore();
self.emit('choiceMade', choice);
};
self.addChoice = function (choice) {
self.choices.push(choice);
};
self.displayChoices = function () {
// Display logic for choices goes here
};
self.on('choiceMade', function (choice) {
if (choice.score >= 100) {
// Outcome for high score
} else {
// Outcome for low score
}
startNextLevel(); // Proceed to the next level after choice
});
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
var storyManager = game.addChild(new StoryManager());
storyManager.addChoice({
text: 'Take the safe path',
outcome: 'safe'
});
storyManager.addChoice({
text: 'Take the risky path',
outcome: 'risky'
});
var scoreTxt = new Text2('0', {
size: 150,
fill: '#ffffff',
anchorX: 0.5,
anchorY: 0
});
LK.gui.top.addChild(scoreTxt);
var paddle = game.addChild(new Paddle());
paddle.x = game.width / 2;
paddle.y = game.height - 100;
var ball = game.addChild(new Ball());
ball.x = game.width / 2;
ball.y = game.height - 150;
var bricks = [];
for (var i = 0; i < 5; i++) {
for (var j = 0; j < 8; j++) {
var scoreValue = (i + 1) * (j + 1);
var brick = game.addChild(new Brick(scoreValue));
brick.x = 150 + j * (brick.width + 10);
brick.y = 100 + i * (brick.height + 10);
bricks.push(brick);
}
}
game.on('move', function (obj) {
var pos = obj.event.getLocalPosition(game);
paddle.move(pos.x);
});
LK.on('tick', function () {
ball.move();
// Ball collision with walls
if (ball.x <= ball.width / 2 || ball.x >= game.width - ball.width / 2) {
ball.bounce('x');
}
if (ball.y <= ball.height / 2) {
ball.bounce('y');
}
// Ball collision with paddle
if (ball.intersects(paddle)) {
ball.bounce('y');
}
// Ball collision with bricks
for (var b = bricks.length - 1; b >= 0; b--) {
if (ball.intersects(bricks[b])) {
ball.bounce('y');
var scoreIncrement = bricks[b].scoreValue;
LK.setScore(LK.getScore() + scoreIncrement);
LK.effects.flashObject(bricks[b], 0xffffff, 500);
LK.setTimeout(function () {
bricks[b].destroy();
}, 500);
bricks.splice(b, 1);
scoreTxt.setText(LK.getScore().toString());
// Check if all bricks are destroyed and initiate level transition
if (bricks.length === 0) {
transitionToNextLevel();
}
}
}
// Ball out of bounds
if (ball.y > game.height) {
ball.x = game.width / 2;
ball.y = game.height - 150;
ball.velocity = {
x: 5,
y: -5
};
}
// Function to handle level transition
function transitionToNextLevel() {
// Animate paddle and ball soaring upwards
var levelTransitionDuration = 2000; // Duration of the transition in milliseconds
var levelTransitionTick = 0;
var levelTransitionInterval = LK.setInterval(function () {
paddle.y -= 5;
ball.y -= 5;
levelTransitionTick += 16.6667; // Approximately 1 tick at 60FPS
if (levelTransitionTick >= levelTransitionDuration) {
LK.clearInterval(levelTransitionInterval);
storyManager.displayChoices();
}
}, 16.6667);
}
// Function to start the next level
function startNextLevel() {
// Reset paddle and ball position
paddle.x = game.width / 2;
paddle.y = game.height - 100;
ball.x = game.width / 2;
ball.y = game.height - 150;
// TODO: Increase difficulty for the next level
}
}); /****
* Classes
****/
var Paddle = Container.expand(function () {
var self = Container.call(this);
var paddleGraphics = self.attachAsset('paddle', {
anchorX: 0.5,
anchorY: 0.5
});
self.move = function (x) {
self.x = x;
};
});
var Ball = Container.expand(function () {
var self = Container.call(this);
var ballGraphics = self.attachAsset('ball', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocity = {
x: 5,
y: -5
};
self.move = function () {
self.x += self.velocity.x;
self.y += self.velocity.y;
};
self.bounce = function (axis) {
if (axis === 'x') {
self.velocity.x *= -1;
LK.effects.flashObject(self, 0xff0000, 300);
} else if (axis === 'y') {
self.velocity.y *= -1;
LK.effects.flashObject(self, 0xff0000, 300);
}
};
});
var Brick = Container.expand(function (scoreValue) {
var self = Container.call(this);
self.scoreValue = scoreValue;
var brickGraphics = self.attachAsset('brick', {
anchorX: 0.5,
anchorY: 0.5
});
});
var StoryManager = Container.expand(function () {
var self = Container.call(this);
self.choices = [];
self.currentChoiceIndex = 0;
self.makeChoice = function (choiceIndex) {
self.currentChoiceIndex = choiceIndex;
var choice = self.choices[choiceIndex];
choice.score = LK.getScore();
self.emit('choiceMade', choice);
};
self.addChoice = function (choice) {
self.choices.push(choice);
};
self.displayChoices = function () {
// Display logic for choices goes here
};
self.on('choiceMade', function (choice) {
if (choice.score >= 100) {
// Outcome for high score
} else {
// Outcome for low score
}
startNextLevel(); // Proceed to the next level after choice
});
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
var storyManager = game.addChild(new StoryManager());
storyManager.addChoice({
text: 'Take the safe path',
outcome: 'safe'
});
storyManager.addChoice({
text: 'Take the risky path',
outcome: 'risky'
});
var scoreTxt = new Text2('0', {
size: 150,
fill: '#ffffff',
anchorX: 0.5,
anchorY: 0
});
LK.gui.top.addChild(scoreTxt);
var paddle = game.addChild(new Paddle());
paddle.x = game.width / 2;
paddle.y = game.height - 100;
var ball = game.addChild(new Ball());
ball.x = game.width / 2;
ball.y = game.height - 150;
var bricks = [];
for (var i = 0; i < 5; i++) {
for (var j = 0; j < 8; j++) {
var scoreValue = (i + 1) * (j + 1);
var brick = game.addChild(new Brick(scoreValue));
brick.x = 150 + j * (brick.width + 10);
brick.y = 100 + i * (brick.height + 10);
bricks.push(brick);
}
}
game.on('move', function (obj) {
var pos = obj.event.getLocalPosition(game);
paddle.move(pos.x);
});
LK.on('tick', function () {
ball.move();
// Ball collision with walls
if (ball.x <= ball.width / 2 || ball.x >= game.width - ball.width / 2) {
ball.bounce('x');
}
if (ball.y <= ball.height / 2) {
ball.bounce('y');
}
// Ball collision with paddle
if (ball.intersects(paddle)) {
ball.bounce('y');
}
// Ball collision with bricks
for (var b = bricks.length - 1; b >= 0; b--) {
if (ball.intersects(bricks[b])) {
ball.bounce('y');
var scoreIncrement = bricks[b].scoreValue;
LK.setScore(LK.getScore() + scoreIncrement);
LK.effects.flashObject(bricks[b], 0xffffff, 500);
LK.setTimeout(function () {
bricks[b].destroy();
}, 500);
bricks.splice(b, 1);
scoreTxt.setText(LK.getScore().toString());
// Check if all bricks are destroyed and initiate level transition
if (bricks.length === 0) {
transitionToNextLevel();
}
}
}
// Ball out of bounds
if (ball.y > game.height) {
ball.x = game.width / 2;
ball.y = game.height - 150;
ball.velocity = {
x: 5,
y: -5
};
}
// Function to handle level transition
function transitionToNextLevel() {
// Animate paddle and ball soaring upwards
var levelTransitionDuration = 2000; // Duration of the transition in milliseconds
var levelTransitionTick = 0;
var levelTransitionInterval = LK.setInterval(function () {
paddle.y -= 5;
ball.y -= 5;
levelTransitionTick += 16.6667; // Approximately 1 tick at 60FPS
if (levelTransitionTick >= levelTransitionDuration) {
LK.clearInterval(levelTransitionInterval);
storyManager.displayChoices();
}
}, 16.6667);
}
// Function to start the next level
function startNextLevel() {
// Reset paddle and ball position
paddle.x = game.width / 2;
paddle.y = game.height - 100;
ball.x = game.width / 2;
ball.y = game.height - 150;
// TODO: Increase difficulty for the next level
}
});