/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1", { highScore: 0 }); /**** * Classes ****/ var Animal = Container.expand(function (type, speed, points) { var self = Container.call(this); // Set properties self.type = type; self.speed = speed || 3; self.points = points || 1; self.isActive = true; // Define assets based on animal type var assetId, size; switch (type) { case 'elephant': assetId = 'elephant'; size = 200; self.points = 1; self.speed = 2; break; case 'monkey': assetId = 'monkey'; size = 150; self.points = 2; self.speed = 3; break; case 'rabbit': assetId = 'rabbit'; size = 120; self.points = 3; self.speed = 4; break; case 'fox': assetId = 'fox'; size = 100; self.points = 5; self.speed = 5; break; case 'mouse': assetId = 'mouse'; size = 80; self.points = 10; self.speed = 6; break; case 'golden': assetId = 'golden'; size = 100; self.points = 25; self.speed = 7; break; } // Create and attach the animal graphic self.graphic = self.attachAsset(assetId, { anchorX: 0.5, anchorY: 0.5, scaleX: 1, scaleY: 1 }); // Initial position - will be set by the game self.velocity = { x: (Math.random() - 0.5) * self.speed, y: -self.speed - Math.random() * 2 }; // Assign interaction handlers self.down = function (x, y, obj) { if (!self.isActive) return; // Pop animation tween(self.graphic, { scaleX: 0.1, scaleY: 0.1, alpha: 0 }, { duration: 300, easing: tween.easeOut, onFinish: function onFinish() { // Play appropriate sound effect if (self.type === 'golden') { LK.getSound('goldenPop').play(); } else { LK.getSound('pop').play(); } // Update score and remove from game LK.setScore(LK.getScore() + self.points); self.isActive = false; // Signal to game that this animal was popped if (typeof self.onPopped === 'function') { self.onPopped(self); } } }); }; // Update method called by the game each frame self.update = function () { if (!self.isActive) return; // Update position self.x += self.velocity.x; self.y += self.velocity.y; // Simple boundary checking - bounce off walls if (self.x < self.graphic.width / 2) { self.x = self.graphic.width / 2; self.velocity.x *= -1; } else if (self.x > 2048 - self.graphic.width / 2) { self.x = 2048 - self.graphic.width / 2; self.velocity.x *= -1; } // Check if animal has gone off the top if (self.y < -self.graphic.height) { self.isActive = false; if (typeof self.onMissed === 'function') { self.onMissed(self); } } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB // Sky blue background }); /**** * Game Code ****/ // Game variables var animals = []; var gameTime = 60; // 60 seconds game time var timeRemaining = gameTime; var timer = null; var spawnInterval = null; var difficultyInterval = null; var spawnRate = 1500; // milliseconds between spawns var maxAnimalsOnScreen = 8; var gamePaused = false; var gameRunning = false; var highScore = storage.highScore || 0; // Create UI elements var scoreText = new Text2('Score: 0', { size: 70, fill: 0xFFFFFF }); scoreText.anchor.set(0, 0); LK.gui.topRight.addChild(scoreText); scoreText.x = -scoreText.width - 20; scoreText.y = 20; var timeText = new Text2('Time: 60', { size: 70, fill: 0xFFFFFF }); timeText.anchor.set(0, 0); LK.gui.topLeft.addChild(timeText); timeText.x = 120; // Keep away from the menu icon timeText.y = 20; var highScoreText = new Text2('High Score: ' + highScore, { size: 50, fill: 0xFFFFFF }); highScoreText.anchor.set(0.5, 0); LK.gui.top.addChild(highScoreText); highScoreText.y = 20; // Create timer bar var timerBarBackground = LK.getAsset('timerBg', { anchorX: 0, anchorY: 0 }); var timerBar = LK.getAsset('timerBar', { anchorX: 0, anchorY: 0 }); LK.gui.top.addChild(timerBarBackground); LK.gui.top.addChild(timerBar); timerBarBackground.x = (2048 - timerBarBackground.width) / 2; timerBarBackground.y = 100; timerBar.x = timerBarBackground.x; timerBar.y = timerBarBackground.y; // Start screen message var startText = new Text2('Tap to Start!', { size: 100, fill: 0xFFFFFF }); startText.anchor.set(0.5, 0.5); LK.gui.center.addChild(startText); // Game instructions var instructionsText = new Text2('Pop the animal balloons!\nSmaller animals = More points', { size: 60, fill: 0xFFFFFF }); instructionsText.anchor.set(0.5, 0.5); LK.gui.center.addChild(instructionsText); instructionsText.y = 150; // Function to update UI function updateUI() { scoreText.setText('Score: ' + LK.getScore()); timeText.setText('Time: ' + Math.ceil(timeRemaining)); // Update timer bar var ratio = timeRemaining / gameTime; timerBar.width = timerBarBackground.width * ratio; // Change color as time runs out if (ratio <= 0.2) { timerBar.tint = 0xFF0000; // Red when almost out of time } else if (ratio <= 0.5) { timerBar.tint = 0xFFFF00; // Yellow when half time } else { timerBar.tint = 0x00FF00; // Green otherwise } } // Function to spawn a new animal function spawnAnimal() { if (!gameRunning || animals.length >= maxAnimalsOnScreen) return; // Determine animal type based on random chance with weights var rand = Math.random(); var type; if (rand < 0.01) { // 1% chance for golden (special) type = 'golden'; } else if (rand < 0.1) { // 9% chance for mouse (smallest, fastest) type = 'mouse'; } else if (rand < 0.25) { // 15% chance for fox type = 'fox'; } else if (rand < 0.5) { // 25% chance for rabbit type = 'rabbit'; } else if (rand < 0.8) { // 30% chance for monkey type = 'monkey'; } else { // 20% chance for elephant (largest, slowest) type = 'elephant'; } var animal = new Animal(type); // Set position - start from bottom of screen animal.x = Math.random() * (2048 - animal.graphic.width) + animal.graphic.width / 2; animal.y = 2732 + animal.graphic.height / 2; // Event handlers animal.onPopped = function (sender) { // Find and remove from array var index = animals.indexOf(sender); if (index !== -1) { animals.splice(index, 1); } // Remove from display after a short delay LK.setTimeout(function () { game.removeChild(sender); }, 300); }; animal.onMissed = function (sender) { // Find and remove from array var index = animals.indexOf(sender); if (index !== -1) { animals.splice(index, 1); } // Remove from display game.removeChild(sender); }; // Add to game and array game.addChild(animal); animals.push(animal); } // Function to increase game difficulty function increaseDifficulty() { if (!gameRunning) return; // Increase spawn rate and max animals on screen as game progresses spawnRate = Math.max(500, spawnRate - 100); // Faster spawning maxAnimalsOnScreen = Math.min(15, maxAnimalsOnScreen + 1); // More animals // Update spawn interval with new rate if (spawnInterval) { LK.clearInterval(spawnInterval); } spawnInterval = LK.setInterval(spawnAnimal, spawnRate); } // Function to start the game function startGame() { // Hide start screen elements startText.visible = false; instructionsText.visible = false; // Reset game variables timeRemaining = gameTime; LK.setScore(0); animals = []; gameRunning = true; // Play game music LK.playMusic('gameMusic'); // Clear any existing intervals if (timer) LK.clearInterval(timer); if (spawnInterval) LK.clearInterval(spawnInterval); if (difficultyInterval) LK.clearInterval(difficultyInterval); // Set up timer timer = LK.setInterval(function () { timeRemaining -= 0.1; // Decrease time in tenths of a second for smoother timer updateUI(); if (timeRemaining <= 0) { endGame(); } }, 100); // Set up animal spawning spawnRate = 1500; maxAnimalsOnScreen = 8; spawnInterval = LK.setInterval(spawnAnimal, spawnRate); // Set up difficulty increase difficultyInterval = LK.setInterval(increaseDifficulty, 10000); // Increase difficulty every 10 seconds // Update UI updateUI(); } // Function to end the game function endGame() { gameRunning = false; // Clear intervals if (timer) LK.clearInterval(timer); if (spawnInterval) LK.clearInterval(spawnInterval); if (difficultyInterval) LK.clearInterval(difficultyInterval); // Play game over sound LK.getSound('gameover').play(); // Stop music LK.stopMusic(); // Update high score if needed if (LK.getScore() > highScore) { highScore = LK.getScore(); storage.highScore = highScore; } // Show game over screen LK.showGameOver(); } // Game update function (called every frame) game.update = function () { if (!gameRunning) return; // Update all animals for (var i = animals.length - 1; i >= 0; i--) { animals[i].update(); } }; // Game input events game.down = function (x, y, obj) { if (!gameRunning && startText.visible) { startGame(); } }; // Initialize the game updateUI();
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,349 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+var storage = LK.import("@upit/storage.v1", {
+ highScore: 0
+});
+
+/****
+* Classes
+****/
+var Animal = Container.expand(function (type, speed, points) {
+ var self = Container.call(this);
+ // Set properties
+ self.type = type;
+ self.speed = speed || 3;
+ self.points = points || 1;
+ self.isActive = true;
+ // Define assets based on animal type
+ var assetId, size;
+ switch (type) {
+ case 'elephant':
+ assetId = 'elephant';
+ size = 200;
+ self.points = 1;
+ self.speed = 2;
+ break;
+ case 'monkey':
+ assetId = 'monkey';
+ size = 150;
+ self.points = 2;
+ self.speed = 3;
+ break;
+ case 'rabbit':
+ assetId = 'rabbit';
+ size = 120;
+ self.points = 3;
+ self.speed = 4;
+ break;
+ case 'fox':
+ assetId = 'fox';
+ size = 100;
+ self.points = 5;
+ self.speed = 5;
+ break;
+ case 'mouse':
+ assetId = 'mouse';
+ size = 80;
+ self.points = 10;
+ self.speed = 6;
+ break;
+ case 'golden':
+ assetId = 'golden';
+ size = 100;
+ self.points = 25;
+ self.speed = 7;
+ break;
+ }
+ // Create and attach the animal graphic
+ self.graphic = self.attachAsset(assetId, {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ scaleX: 1,
+ scaleY: 1
+ });
+ // Initial position - will be set by the game
+ self.velocity = {
+ x: (Math.random() - 0.5) * self.speed,
+ y: -self.speed - Math.random() * 2
+ };
+ // Assign interaction handlers
+ self.down = function (x, y, obj) {
+ if (!self.isActive) return;
+ // Pop animation
+ tween(self.graphic, {
+ scaleX: 0.1,
+ scaleY: 0.1,
+ alpha: 0
+ }, {
+ duration: 300,
+ easing: tween.easeOut,
+ onFinish: function onFinish() {
+ // Play appropriate sound effect
+ if (self.type === 'golden') {
+ LK.getSound('goldenPop').play();
+ } else {
+ LK.getSound('pop').play();
+ }
+ // Update score and remove from game
+ LK.setScore(LK.getScore() + self.points);
+ self.isActive = false;
+ // Signal to game that this animal was popped
+ if (typeof self.onPopped === 'function') {
+ self.onPopped(self);
+ }
+ }
+ });
+ };
+ // Update method called by the game each frame
+ self.update = function () {
+ if (!self.isActive) return;
+ // Update position
+ self.x += self.velocity.x;
+ self.y += self.velocity.y;
+ // Simple boundary checking - bounce off walls
+ if (self.x < self.graphic.width / 2) {
+ self.x = self.graphic.width / 2;
+ self.velocity.x *= -1;
+ } else if (self.x > 2048 - self.graphic.width / 2) {
+ self.x = 2048 - self.graphic.width / 2;
+ self.velocity.x *= -1;
+ }
+ // Check if animal has gone off the top
+ if (self.y < -self.graphic.height) {
+ self.isActive = false;
+ if (typeof self.onMissed === 'function') {
+ self.onMissed(self);
+ }
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x87CEEB // Sky blue background
+});
+
+/****
+* Game Code
+****/
+// Game variables
+var animals = [];
+var gameTime = 60; // 60 seconds game time
+var timeRemaining = gameTime;
+var timer = null;
+var spawnInterval = null;
+var difficultyInterval = null;
+var spawnRate = 1500; // milliseconds between spawns
+var maxAnimalsOnScreen = 8;
+var gamePaused = false;
+var gameRunning = false;
+var highScore = storage.highScore || 0;
+// Create UI elements
+var scoreText = new Text2('Score: 0', {
+ size: 70,
+ fill: 0xFFFFFF
+});
+scoreText.anchor.set(0, 0);
+LK.gui.topRight.addChild(scoreText);
+scoreText.x = -scoreText.width - 20;
+scoreText.y = 20;
+var timeText = new Text2('Time: 60', {
+ size: 70,
+ fill: 0xFFFFFF
+});
+timeText.anchor.set(0, 0);
+LK.gui.topLeft.addChild(timeText);
+timeText.x = 120; // Keep away from the menu icon
+timeText.y = 20;
+var highScoreText = new Text2('High Score: ' + highScore, {
+ size: 50,
+ fill: 0xFFFFFF
+});
+highScoreText.anchor.set(0.5, 0);
+LK.gui.top.addChild(highScoreText);
+highScoreText.y = 20;
+// Create timer bar
+var timerBarBackground = LK.getAsset('timerBg', {
+ anchorX: 0,
+ anchorY: 0
+});
+var timerBar = LK.getAsset('timerBar', {
+ anchorX: 0,
+ anchorY: 0
+});
+LK.gui.top.addChild(timerBarBackground);
+LK.gui.top.addChild(timerBar);
+timerBarBackground.x = (2048 - timerBarBackground.width) / 2;
+timerBarBackground.y = 100;
+timerBar.x = timerBarBackground.x;
+timerBar.y = timerBarBackground.y;
+// Start screen message
+var startText = new Text2('Tap to Start!', {
+ size: 100,
+ fill: 0xFFFFFF
+});
+startText.anchor.set(0.5, 0.5);
+LK.gui.center.addChild(startText);
+// Game instructions
+var instructionsText = new Text2('Pop the animal balloons!\nSmaller animals = More points', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+instructionsText.anchor.set(0.5, 0.5);
+LK.gui.center.addChild(instructionsText);
+instructionsText.y = 150;
+// Function to update UI
+function updateUI() {
+ scoreText.setText('Score: ' + LK.getScore());
+ timeText.setText('Time: ' + Math.ceil(timeRemaining));
+ // Update timer bar
+ var ratio = timeRemaining / gameTime;
+ timerBar.width = timerBarBackground.width * ratio;
+ // Change color as time runs out
+ if (ratio <= 0.2) {
+ timerBar.tint = 0xFF0000; // Red when almost out of time
+ } else if (ratio <= 0.5) {
+ timerBar.tint = 0xFFFF00; // Yellow when half time
+ } else {
+ timerBar.tint = 0x00FF00; // Green otherwise
+ }
+}
+// Function to spawn a new animal
+function spawnAnimal() {
+ if (!gameRunning || animals.length >= maxAnimalsOnScreen) return;
+ // Determine animal type based on random chance with weights
+ var rand = Math.random();
+ var type;
+ if (rand < 0.01) {
+ // 1% chance for golden (special)
+ type = 'golden';
+ } else if (rand < 0.1) {
+ // 9% chance for mouse (smallest, fastest)
+ type = 'mouse';
+ } else if (rand < 0.25) {
+ // 15% chance for fox
+ type = 'fox';
+ } else if (rand < 0.5) {
+ // 25% chance for rabbit
+ type = 'rabbit';
+ } else if (rand < 0.8) {
+ // 30% chance for monkey
+ type = 'monkey';
+ } else {
+ // 20% chance for elephant (largest, slowest)
+ type = 'elephant';
+ }
+ var animal = new Animal(type);
+ // Set position - start from bottom of screen
+ animal.x = Math.random() * (2048 - animal.graphic.width) + animal.graphic.width / 2;
+ animal.y = 2732 + animal.graphic.height / 2;
+ // Event handlers
+ animal.onPopped = function (sender) {
+ // Find and remove from array
+ var index = animals.indexOf(sender);
+ if (index !== -1) {
+ animals.splice(index, 1);
+ }
+ // Remove from display after a short delay
+ LK.setTimeout(function () {
+ game.removeChild(sender);
+ }, 300);
+ };
+ animal.onMissed = function (sender) {
+ // Find and remove from array
+ var index = animals.indexOf(sender);
+ if (index !== -1) {
+ animals.splice(index, 1);
+ }
+ // Remove from display
+ game.removeChild(sender);
+ };
+ // Add to game and array
+ game.addChild(animal);
+ animals.push(animal);
+}
+// Function to increase game difficulty
+function increaseDifficulty() {
+ if (!gameRunning) return;
+ // Increase spawn rate and max animals on screen as game progresses
+ spawnRate = Math.max(500, spawnRate - 100); // Faster spawning
+ maxAnimalsOnScreen = Math.min(15, maxAnimalsOnScreen + 1); // More animals
+ // Update spawn interval with new rate
+ if (spawnInterval) {
+ LK.clearInterval(spawnInterval);
+ }
+ spawnInterval = LK.setInterval(spawnAnimal, spawnRate);
+}
+// Function to start the game
+function startGame() {
+ // Hide start screen elements
+ startText.visible = false;
+ instructionsText.visible = false;
+ // Reset game variables
+ timeRemaining = gameTime;
+ LK.setScore(0);
+ animals = [];
+ gameRunning = true;
+ // Play game music
+ LK.playMusic('gameMusic');
+ // Clear any existing intervals
+ if (timer) LK.clearInterval(timer);
+ if (spawnInterval) LK.clearInterval(spawnInterval);
+ if (difficultyInterval) LK.clearInterval(difficultyInterval);
+ // Set up timer
+ timer = LK.setInterval(function () {
+ timeRemaining -= 0.1; // Decrease time in tenths of a second for smoother timer
+ updateUI();
+ if (timeRemaining <= 0) {
+ endGame();
+ }
+ }, 100);
+ // Set up animal spawning
+ spawnRate = 1500;
+ maxAnimalsOnScreen = 8;
+ spawnInterval = LK.setInterval(spawnAnimal, spawnRate);
+ // Set up difficulty increase
+ difficultyInterval = LK.setInterval(increaseDifficulty, 10000); // Increase difficulty every 10 seconds
+ // Update UI
+ updateUI();
+}
+// Function to end the game
+function endGame() {
+ gameRunning = false;
+ // Clear intervals
+ if (timer) LK.clearInterval(timer);
+ if (spawnInterval) LK.clearInterval(spawnInterval);
+ if (difficultyInterval) LK.clearInterval(difficultyInterval);
+ // Play game over sound
+ LK.getSound('gameover').play();
+ // Stop music
+ LK.stopMusic();
+ // Update high score if needed
+ if (LK.getScore() > highScore) {
+ highScore = LK.getScore();
+ storage.highScore = highScore;
+ }
+ // Show game over screen
+ LK.showGameOver();
+}
+// Game update function (called every frame)
+game.update = function () {
+ if (!gameRunning) return;
+ // Update all animals
+ for (var i = animals.length - 1; i >= 0; i--) {
+ animals[i].update();
+ }
+};
+// Game input events
+game.down = function (x, y, obj) {
+ if (!gameRunning && startText.visible) {
+ startGame();
+ }
+};
+// Initialize the game
+updateUI();
\ No newline at end of file
rabbit . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
mouse. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
fox. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
golden. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
monkey. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
elephanth. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
timebar. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat