/**** * Classes ****/ //<Assets used in the game will automatically appear here> //<Write imports for supported plugins here> // Kitten class representing the player character var Kitten = Container.expand(function () { var self = Container.call(this); var kittenGraphics = self.attachAsset('kitten', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 20; self.dashDistance = 100; self.dashCooldown = 2000; // 2 seconds cooldown self.lastDashTime = 0; self.update = function () { // Move the kitten to the right self.x += self.speed; // If the kitten reaches the right edge of the screen, wrap around to the left if (self.x > 2048) { self.x = 0; } // Make the kitten fly up and down if (self.y > 2732 - 200) { self.speedY = -5; } else if (self.y < 200) { self.speedY = 5; } self.y += self.speedY; // Make the kitten fly self.y -= self.speed; }; self.dash = function () { var currentTime = Date.now(); // Check if the dash is off cooldown if (currentTime - self.lastDashTime >= self.dashCooldown) { // Dash to the right self.x += self.dashDistance; // If the kitten reaches the right edge of the screen, wrap around to the left if (self.x > 2048) { self.x = 0; } // Reset the dash cooldown self.lastDashTime = currentTime; // Update the dash cooldown display dashCooldownTxt.setText(Math.round((self.dashCooldown - (currentTime - self.lastDashTime)) / 1000)); } }; }); // Level class to handle level generation and progression var Level = Container.expand(function () { var self = Container.call(this); self.level = 1; self.obstacleCount = 10; self.obstacles = []; self.generateObstacles = function () { for (var i = 0; i < self.obstacleCount; i++) { var obstacle = new Obstacle(); obstacle.x = Math.random() * 2048; obstacle.y = Math.random() * 2732; self.obstacles.push(obstacle); game.addChild(obstacle); } }; self.nextLevel = function () { self.level++; self.obstacleCount += 5; for (var i = 0; i < self.obstacles.length; i++) { game.removeChild(self.obstacles[i]); } self.obstacles = []; self.generateObstacles(); }; }); // Obstacle class representing obstacles in the game var Obstacle = Container.expand(function () { var self = Container.call(this); var obstacleGraphics = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 10; self.update = function () { self.y += self.speed; if (self.y > 2732) { self.y = -self.height; self.x = Math.random() * 2048; } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB // Light blue background }); /**** * Game Code ****/ // Initialize game elements var kitten = game.addChild(new Kitten()); // Position the kitten at the left edge of the screen kitten.x = 0; kitten.y = 2732 - 200; // Initialize the Level class and generate the first level var level = new Level(); level.generateObstacles(); // Handle touch events for dashing game.down = function (x, y, obj) { // Set the kitten's x coordinate to the touch event's x coordinate kitten.x = x; }; // Update game logic game.update = function () { for (var i = 0; i < level.obstacles.length; i++) { level.obstacles[i].update(); if (kitten.intersects(level.obstacles[i])) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } } // Update the dash cooldown display var currentTime = Date.now(); dashCooldownTxt.setText(Math.round((kitten.dashCooldown - (currentTime - kitten.lastDashTime)) / 1000)); }; // Score display var scoreTxt = new Text2('0', { size: 150, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Dash cooldown display var dashCooldownTxt = new Text2('0', { size: 150, fill: 0xFFFFFF }); dashCooldownTxt.anchor.set(0.5, 0); LK.gui.top.addChild(dashCooldownTxt); // Update score function updateScore() { var score = parseInt(scoreTxt.text) + 1; scoreTxt.setText(score); if (score >= 50) { level.nextLevel(); scoreTxt.setText(0); } } // Increment score every second LK.setInterval(updateScore, 1000);
/****
* Classes
****/
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Kitten class representing the player character
var Kitten = Container.expand(function () {
var self = Container.call(this);
var kittenGraphics = self.attachAsset('kitten', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 20;
self.dashDistance = 100;
self.dashCooldown = 2000; // 2 seconds cooldown
self.lastDashTime = 0;
self.update = function () {
// Move the kitten to the right
self.x += self.speed;
// If the kitten reaches the right edge of the screen, wrap around to the left
if (self.x > 2048) {
self.x = 0;
}
// Make the kitten fly up and down
if (self.y > 2732 - 200) {
self.speedY = -5;
} else if (self.y < 200) {
self.speedY = 5;
}
self.y += self.speedY;
// Make the kitten fly
self.y -= self.speed;
};
self.dash = function () {
var currentTime = Date.now();
// Check if the dash is off cooldown
if (currentTime - self.lastDashTime >= self.dashCooldown) {
// Dash to the right
self.x += self.dashDistance;
// If the kitten reaches the right edge of the screen, wrap around to the left
if (self.x > 2048) {
self.x = 0;
}
// Reset the dash cooldown
self.lastDashTime = currentTime;
// Update the dash cooldown display
dashCooldownTxt.setText(Math.round((self.dashCooldown - (currentTime - self.lastDashTime)) / 1000));
}
};
});
// Level class to handle level generation and progression
var Level = Container.expand(function () {
var self = Container.call(this);
self.level = 1;
self.obstacleCount = 10;
self.obstacles = [];
self.generateObstacles = function () {
for (var i = 0; i < self.obstacleCount; i++) {
var obstacle = new Obstacle();
obstacle.x = Math.random() * 2048;
obstacle.y = Math.random() * 2732;
self.obstacles.push(obstacle);
game.addChild(obstacle);
}
};
self.nextLevel = function () {
self.level++;
self.obstacleCount += 5;
for (var i = 0; i < self.obstacles.length; i++) {
game.removeChild(self.obstacles[i]);
}
self.obstacles = [];
self.generateObstacles();
};
});
// Obstacle class representing obstacles in the game
var Obstacle = Container.expand(function () {
var self = Container.call(this);
var obstacleGraphics = self.attachAsset('obstacle', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.update = function () {
self.y += self.speed;
if (self.y > 2732) {
self.y = -self.height;
self.x = Math.random() * 2048;
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB // Light blue background
});
/****
* Game Code
****/
// Initialize game elements
var kitten = game.addChild(new Kitten());
// Position the kitten at the left edge of the screen
kitten.x = 0;
kitten.y = 2732 - 200;
// Initialize the Level class and generate the first level
var level = new Level();
level.generateObstacles();
// Handle touch events for dashing
game.down = function (x, y, obj) {
// Set the kitten's x coordinate to the touch event's x coordinate
kitten.x = x;
};
// Update game logic
game.update = function () {
for (var i = 0; i < level.obstacles.length; i++) {
level.obstacles[i].update();
if (kitten.intersects(level.obstacles[i])) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
}
// Update the dash cooldown display
var currentTime = Date.now();
dashCooldownTxt.setText(Math.round((kitten.dashCooldown - (currentTime - kitten.lastDashTime)) / 1000));
};
// Score display
var scoreTxt = new Text2('0', {
size: 150,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Dash cooldown display
var dashCooldownTxt = new Text2('0', {
size: 150,
fill: 0xFFFFFF
});
dashCooldownTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(dashCooldownTxt);
// Update score
function updateScore() {
var score = parseInt(scoreTxt.text) + 1;
scoreTxt.setText(score);
if (score >= 50) {
level.nextLevel();
scoreTxt.setText(0);
}
}
// Increment score every second
LK.setInterval(updateScore, 1000);