/****
* 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