/**** * Classes ****/ // Class for the overlay square in the grid var OverlaySquare = Container.expand(function (underlyingSquare) { var self = Container.call(this); self.underlyingSquare = underlyingSquare; var squareGraphics = self.attachAsset('overgraySquare', { anchorX: 0.5, anchorY: 0.5 }); self.down = function (x, y, obj) { self.destroy(); if (self.underlyingSquare) { if (self.underlyingSquare.isRed) { hearts[hearts.length - 1].destroy(); hearts.pop(); if (hearts.length === 0) { // Add 5 points for every extra heart that is left when the game ends LK.setScore(LK.getScore() + hearts.length * 5); scoreTxt.setText(LK.getScore()); LK.showGameOver(); } } else if (self.underlyingSquare.isGreen) { LK.setScore(LK.getScore() + 1); scoreTxt.setText(LK.getScore()); if (LK.getScore() == 3) { // Add 5 points for every extra heart that is left when the game ends LK.setScore(LK.getScore() + hearts.length * 5); scoreTxt.setText(LK.getScore()); LK.showGameOver(); } } } }; }); // Assets will be automatically created and loaded by the LK engine based on their usage in the code. // Class for a single square in the grid var Square = Container.expand(function () { var self = Container.call(this); self.isGreen = false; self.isRed = false; // Attach a gray square asset by default var squareGraphics = self.attachAsset('graySquare', { anchorX: 0.5, anchorY: 0.5 }); // Method to set the square as green self.setGreen = function () { self.isGreen = true; squareGraphics = self.attachAsset('greenSquare', { anchorX: 0.5, anchorY: 0.5 }); }; // Method to set the square as red self.setRed = function () { self.isRed = true; squareGraphics = self.attachAsset('redSquare', { anchorX: 0.5, anchorY: 0.5 }); }; // Event handler for when the square is clicked self.down = function (x, y, obj) {}; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x333333 // Init game with dark gray background }); /**** * Game Code ****/ var grid = []; var foundGreenSquares = 0; var foundRedSquares = 0; var redSquaresRevealed = 0; // Initialize the grid function initializeGrid() { var positions = []; for (var i = 0; i < 25; i++) { positions.push(i); } // Shuffle positions positions.sort(function () { return Math.random() - 0.5; }); // Create squares for (var i = 0; i < 25; i++) { var square = new Square(); var x = i % 5 * 200 + (2048 - 5 * 200) / 2 + 100; // Move the grid 100 pixels to the right var y = Math.floor(i / 5) * 200 + (2732 - 5 * 200) / 2; // Centering the grid vertically square.x = x; square.y = y; grid.push(square); game.addChild(square); // Create overlay square var overlaySquare = new OverlaySquare(square); overlaySquare.x = x; overlaySquare.y = y; game.addChild(overlaySquare); } // Set 5 green squares for (var i = 0; i < 5; i++) { grid[positions[i]].setGreen(); } // Set 10 red squares for (var i = 5; i < 15; i++) { grid[positions[i]].setRed(); } } // Initialize the game grid initializeGrid(); var hearts = []; for (var i = 0; i < 3; i++) { var heart = game.addChild(LK.getAsset('heart', { anchorX: 0.5, anchorY: 0.5, x: 2048 - (100 + i * 120), y: 100 })); hearts.push(heart); } var scoreTxt = new Text2('0', { size: 150, fill: "#ffffff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt);
/****
* Classes
****/
// Class for the overlay square in the grid
var OverlaySquare = Container.expand(function (underlyingSquare) {
var self = Container.call(this);
self.underlyingSquare = underlyingSquare;
var squareGraphics = self.attachAsset('overgraySquare', {
anchorX: 0.5,
anchorY: 0.5
});
self.down = function (x, y, obj) {
self.destroy();
if (self.underlyingSquare) {
if (self.underlyingSquare.isRed) {
hearts[hearts.length - 1].destroy();
hearts.pop();
if (hearts.length === 0) {
// Add 5 points for every extra heart that is left when the game ends
LK.setScore(LK.getScore() + hearts.length * 5);
scoreTxt.setText(LK.getScore());
LK.showGameOver();
}
} else if (self.underlyingSquare.isGreen) {
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
if (LK.getScore() == 3) {
// Add 5 points for every extra heart that is left when the game ends
LK.setScore(LK.getScore() + hearts.length * 5);
scoreTxt.setText(LK.getScore());
LK.showGameOver();
}
}
}
};
});
// Assets will be automatically created and loaded by the LK engine based on their usage in the code.
// Class for a single square in the grid
var Square = Container.expand(function () {
var self = Container.call(this);
self.isGreen = false;
self.isRed = false;
// Attach a gray square asset by default
var squareGraphics = self.attachAsset('graySquare', {
anchorX: 0.5,
anchorY: 0.5
});
// Method to set the square as green
self.setGreen = function () {
self.isGreen = true;
squareGraphics = self.attachAsset('greenSquare', {
anchorX: 0.5,
anchorY: 0.5
});
};
// Method to set the square as red
self.setRed = function () {
self.isRed = true;
squareGraphics = self.attachAsset('redSquare', {
anchorX: 0.5,
anchorY: 0.5
});
};
// Event handler for when the square is clicked
self.down = function (x, y, obj) {};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x333333 // Init game with dark gray background
});
/****
* Game Code
****/
var grid = [];
var foundGreenSquares = 0;
var foundRedSquares = 0;
var redSquaresRevealed = 0;
// Initialize the grid
function initializeGrid() {
var positions = [];
for (var i = 0; i < 25; i++) {
positions.push(i);
}
// Shuffle positions
positions.sort(function () {
return Math.random() - 0.5;
});
// Create squares
for (var i = 0; i < 25; i++) {
var square = new Square();
var x = i % 5 * 200 + (2048 - 5 * 200) / 2 + 100; // Move the grid 100 pixels to the right
var y = Math.floor(i / 5) * 200 + (2732 - 5 * 200) / 2; // Centering the grid vertically
square.x = x;
square.y = y;
grid.push(square);
game.addChild(square);
// Create overlay square
var overlaySquare = new OverlaySquare(square);
overlaySquare.x = x;
overlaySquare.y = y;
game.addChild(overlaySquare);
}
// Set 5 green squares
for (var i = 0; i < 5; i++) {
grid[positions[i]].setGreen();
}
// Set 10 red squares
for (var i = 5; i < 15; i++) {
grid[positions[i]].setRed();
}
}
// Initialize the game grid
initializeGrid();
var hearts = [];
for (var i = 0; i < 3; i++) {
var heart = game.addChild(LK.getAsset('heart', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 - (100 + i * 120),
y: 100
}));
hearts.push(heart);
}
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);