User prompt
If we are low on health after 100 points, let the falling speed of the incoming heart be 16x
User prompt
If he has passed 100 points and only has 1 heart left, only 1 heart will spawn on the screen and think about it. If he can't catch it, he won't be able to get it, but if he clicks, he will get 1 life. After getting the life, it will not appear again.
User prompt
What you will add: bananas 14x after 150 scores, 15x after 160 scores, 16x after 170 scores, 17x after 180 scores, 18x after 190 scores, 19x after 200 scores, 20x. Do this banana acceleration.
User prompt
What you will add: bananas 9x after 90 scores, 9.5x after 100 scores, 10x after 110 scores, 10.5x after 120 scores, 11x after 130 scores, 12x after 140 scores, 13x. Do this banana acceleration.
User prompt
Things to add: Bananas increase 6x after 30 scores, 6.5x after 40 scores, 7x after 50 scores, 7.5x after 60 scores, 8x after 70 scores and 8.5x after 80 scores. Add these bananas to the speedup code.
User prompt
Increase your speed in this order. After 5 scores 2x, after 10 scores 3x, after 20 scores 5x% etc. I want you to do this.
User prompt
Please fix the bug: 'Uncaught TypeError: tween.to is not a function' in or related to this line: 'tween.to(self, 0.2, {' Line Number: 79 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
Kalpleri sağ tarafa al.
Code edit (1 edits merged)
Please save this source code
User prompt
Don't Drop It
Initial prompt
Oyunda yukarıdan muzlar düşecek ve oyuncu tıklamazsa ve en aşağı düşerse oyunu kaybedecek. Muzlar yavaştan başlayıp git gide hızlanacak. Ve 15 skordan sonra bombalar düşmeye başlayacak. 3 tane de kalbimiz olacak. Bunu yap. Oyunun adı da "Don't Drop It"
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var FallingItem = Container.expand(function () { var self = Container.call(this); self.type = "banana"; // default type self.speed = 2; // default speed self.lastY = 0; self.active = true; self.graphics = null; self.init = function (type, speed) { self.type = type || "banana"; self.speed = speed || 2; // Remove any existing graphics if (self.graphics) { self.removeChild(self.graphics); } // Create the appropriate graphics based on type if (self.type === "banana") { self.graphics = self.attachAsset('banana', { anchorX: 0.5, anchorY: 0.5 }); } else if (self.type === "bomb") { self.graphics = self.attachAsset('bomb', { anchorX: 0.5, anchorY: 0.5 }); } // Set initial position self.x = Math.random() * (2048 - 200) + 100; self.y = -100; self.lastY = self.y; // Interactive for tapping self.interactive = true; }; self.update = function () { if (!self.active) return; self.lastY = self.y; self.y += self.speed; }; self.down = function (x, y, obj) { if (!self.active) return; if (self.type === "banana") { // Scored a point by tapping banana LK.setScore(LK.getScore() + 1); LK.getSound('pop').play(); self.remove(); } else if (self.type === "bomb") { // Lost a life by tapping bomb LK.getSound('explosion').play(); decreaseLife(); self.remove(); } }; self.remove = function () { self.active = false; tween.to(self, 0.2, { alpha: 0, scaleX: 0.3, scaleY: 0.3, onComplete: function onComplete() { self.destroy(); } }); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ ; // Game constants var SCREEN_WIDTH = 2048; var SCREEN_HEIGHT = 2732; var MAX_LIVES = 3; var BOMB_THRESHOLD_SCORE = 15; var SPAWN_INTERVAL_INITIAL = 60; // frames var MIN_SPAWN_INTERVAL = 20; // frames var SPEED_INCREMENT = 0.1; var INTERVAL_DECREMENT = 1; // Game variables var fallingItems = []; var lives = MAX_LIVES; var spawnCounter = 0; var currentSpawnInterval = SPAWN_INTERVAL_INITIAL; var currentSpeed = 2; var isGameOver = false; // Add background var background = game.addChild(LK.getAsset('background', { anchorX: 0, anchorY: 0 })); // Initialize score text var scoreText = new Text2('Score: 0', { size: 80, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); scoreText.x = SCREEN_WIDTH / 2; scoreText.y = 50; game.addChild(scoreText); // Create hearts container var heartsContainer = new Container(); heartsContainer.x = 50; heartsContainer.y = 50; game.addChild(heartsContainer); // Initialize hearts display function initLives() { // Clear existing hearts while (heartsContainer.children.length > 0) { heartsContainer.removeChildAt(0); } // Add hearts based on current lives for (var i = 0; i < lives; i++) { var heart = LK.getAsset('heart', { anchorX: 0, anchorY: 0, x: i * 100, y: 0 }); heartsContainer.addChild(heart); } } // Function to decrease life function decreaseLife() { lives--; initLives(); // Shake the screen LK.effects.flashScreen(0xff0000, 300); // Check for game over if (lives <= 0) { gameOver(); } } // Function to handle game over function gameOver() { if (isGameOver) return; isGameOver = true; LK.getSound('gameover').play(); LK.effects.flashScreen(0xff0000, 1000); // Remove all falling items for (var i = fallingItems.length - 1; i >= 0; i--) { fallingItems[i].destroy(); } fallingItems = []; // Show game over screen LK.setTimeout(function () { LK.showGameOver(); }, 1000); } // Function to spawn a new falling item function spawnItem() { var isBomb = LK.getScore() >= BOMB_THRESHOLD_SCORE && Math.random() < 0.3; var itemType = isBomb ? "bomb" : "banana"; var item = new FallingItem(); item.init(itemType, currentSpeed); fallingItems.push(item); game.addChild(item); return item; } // Update game state each frame game.update = function () { if (isGameOver) return; // Update all falling items for (var i = fallingItems.length - 1; i >= 0; i--) { var item = fallingItems[i]; // Check if item has fallen off screen if (item.lastY < SCREEN_HEIGHT && item.y >= SCREEN_HEIGHT) { if (item.type === "banana" && item.active) { // Missed a banana - lose a life decreaseLife(); item.remove(); } else if (item.type === "bomb" && item.active) { // Bomb fell off screen - remove it with no penalty item.destroy(); fallingItems.splice(i, 1); } } // Remove destroyed items from array if (!item.active || item.alpha <= 0) { fallingItems.splice(i, 1); } } // Spawn new items at intervals spawnCounter++; if (spawnCounter >= currentSpawnInterval) { spawnItem(); spawnCounter = 0; // Increase difficulty based on score var score = LK.getScore(); currentSpeed = 2 + score * SPEED_INCREMENT; currentSpawnInterval = Math.max(MIN_SPAWN_INTERVAL, SPAWN_INTERVAL_INITIAL - score * INTERVAL_DECREMENT); } // Update score text scoreText.setText('Score: ' + LK.getScore()); }; // Initialize the game function initGame() { // Reset game variables lives = MAX_LIVES; LK.setScore(0); spawnCounter = 0; currentSpawnInterval = SPAWN_INTERVAL_INITIAL; currentSpeed = 2; isGameOver = false; fallingItems = []; // Initialize UI initLives(); scoreText.setText('Score: 0'); // Play background music LK.playMusic('gameMusic'); } // Start the game initGame();
===================================================================
--- original.js
+++ change.js
@@ -1,291 +1,228 @@
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
-var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
-var Banana = Container.expand(function () {
+var FallingItem = Container.expand(function () {
var self = Container.call(this);
- var bananaGraphics = self.attachAsset('banana', {
- anchorX: 0.5,
- anchorY: 0.5,
- rotation: Math.PI / 6
- });
- self.fallSpeed = 5;
- self.isActive = true;
- self.update = function () {
- if (self.isActive) {
- self.y += self.fallSpeed;
- if (self.rotation) {
- self.rotation += 0.01;
- }
+ self.type = "banana"; // default type
+ self.speed = 2; // default speed
+ self.lastY = 0;
+ self.active = true;
+ self.graphics = null;
+ self.init = function (type, speed) {
+ self.type = type || "banana";
+ self.speed = speed || 2;
+ // Remove any existing graphics
+ if (self.graphics) {
+ self.removeChild(self.graphics);
}
- };
- self.down = function (x, y, obj) {
- if (self.isActive) {
- LK.getSound('pop').play();
- LK.setScore(LK.getScore() + 1);
- self.isActive = false;
- tween(self, {
- alpha: 0,
- scaleX: 1.5,
- scaleY: 1.5
- }, {
- duration: 300,
- onFinish: function onFinish() {
- self.destroy();
- }
+ // Create the appropriate graphics based on type
+ if (self.type === "banana") {
+ self.graphics = self.attachAsset('banana', {
+ anchorX: 0.5,
+ anchorY: 0.5
});
+ } else if (self.type === "bomb") {
+ self.graphics = self.attachAsset('bomb', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
}
+ // Set initial position
+ self.x = Math.random() * (2048 - 200) + 100;
+ self.y = -100;
+ self.lastY = self.y;
+ // Interactive for tapping
+ self.interactive = true;
};
- return self;
-});
-var Bomb = Container.expand(function () {
- var self = Container.call(this);
- var bombGraphics = self.attachAsset('bomb', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- self.fallSpeed = 6;
- self.isActive = true;
self.update = function () {
- if (self.isActive) {
- self.y += self.fallSpeed;
- if (self.rotation) {
- self.rotation += 0.02;
- }
- }
+ if (!self.active) return;
+ self.lastY = self.y;
+ self.y += self.speed;
};
self.down = function (x, y, obj) {
- if (self.isActive) {
+ if (!self.active) return;
+ if (self.type === "banana") {
+ // Scored a point by tapping banana
+ LK.setScore(LK.getScore() + 1);
+ LK.getSound('pop').play();
+ self.remove();
+ } else if (self.type === "bomb") {
+ // Lost a life by tapping bomb
LK.getSound('explosion').play();
- decreaseLives();
- self.isActive = false;
- // Flash the bomb and make it disappear
- tween(self, {
- alpha: 0,
- scaleX: 2,
- scaleY: 2
- }, {
- duration: 300,
- onFinish: function onFinish() {
- self.destroy();
- }
- });
- // Flash the screen red
- LK.effects.flashScreen(0xff0000, 300);
+ decreaseLife();
+ self.remove();
}
};
- return self;
-});
-var Heart = Container.expand(function () {
- var self = Container.call(this);
- var heartGraphics = self.attachAsset('heart', {
- anchorX: 5.0,
- anchorY: 5.0
- });
- self.setActive = function (active) {
- heartGraphics.alpha = active ? 1 : 0.3;
+ self.remove = function () {
+ self.active = false;
+ tween.to(self, 0.2, {
+ alpha: 0,
+ scaleX: 0.3,
+ scaleY: 0.3,
+ onComplete: function onComplete() {
+ self.destroy();
+ }
+ });
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
- backgroundColor: 0x87CEEB
+ backgroundColor: 0x000000
});
/****
* Game Code
****/
+;
+// Game constants
+var SCREEN_WIDTH = 2048;
+var SCREEN_HEIGHT = 2732;
+var MAX_LIVES = 3;
+var BOMB_THRESHOLD_SCORE = 15;
+var SPAWN_INTERVAL_INITIAL = 60; // frames
+var MIN_SPAWN_INTERVAL = 20; // frames
+var SPEED_INCREMENT = 0.1;
+var INTERVAL_DECREMENT = 1;
// Game variables
-var fallingObjects = [];
-var spawnTimer = null;
-var difficultyTimer = null;
-var spawnInterval = 1500;
-var minSpawnInterval = 500;
-var currentLevel = 1;
-var lives = 3;
-var hearts = [];
-var gameRunning = false;
-var bombThreshold = 15; // Score threshold for bombs to appear
-var bombProbability = 0.2; // Initial probability of spawning a bomb
-// Set up the game background
-var background = LK.getAsset('background', {
+var fallingItems = [];
+var lives = MAX_LIVES;
+var spawnCounter = 0;
+var currentSpawnInterval = SPAWN_INTERVAL_INITIAL;
+var currentSpeed = 2;
+var isGameOver = false;
+// Add background
+var background = game.addChild(LK.getAsset('background', {
anchorX: 0,
- anchorY: 0,
- x: 0,
- y: 0
-});
-game.addChild(background);
-// Set up the score display
-var scoreTxt = new Text2('0', {
- size: 100,
+ anchorY: 0
+}));
+// Initialize score text
+var scoreText = new Text2('Score: 0', {
+ size: 80,
fill: 0xFFFFFF
});
-scoreTxt.anchor.set(0.5, 0);
-scoreTxt.y = 20;
-LK.gui.top.addChild(scoreTxt);
-// Set up lives display
-function setupLives() {
- // Clear existing hearts if any
- for (var i = 0; i < hearts.length; i++) {
- if (hearts[i].parent) {
- hearts[i].parent.removeChild(hearts[i]);
- }
+scoreText.anchor.set(0.5, 0);
+scoreText.x = SCREEN_WIDTH / 2;
+scoreText.y = 50;
+game.addChild(scoreText);
+// Create hearts container
+var heartsContainer = new Container();
+heartsContainer.x = 50;
+heartsContainer.y = 50;
+game.addChild(heartsContainer);
+// Initialize hearts display
+function initLives() {
+ // Clear existing hearts
+ while (heartsContainer.children.length > 0) {
+ heartsContainer.removeChildAt(0);
}
- hearts = [];
- for (var i = 0; i < 3; i++) {
- var heart = new Heart();
- heart.x = 60 + i * 80;
- heart.y = 60;
- heart.setActive(i < lives);
- LK.gui.addChild(heart);
- hearts.push(heart);
+ // Add hearts based on current lives
+ for (var i = 0; i < lives; i++) {
+ var heart = LK.getAsset('heart', {
+ anchorX: 0,
+ anchorY: 0,
+ x: i * 100,
+ y: 0
+ });
+ heartsContainer.addChild(heart);
}
}
-// Start the game
-function startGame() {
- LK.setScore(0);
- lives = 3;
- currentLevel = 1;
- spawnInterval = 1500;
- bombProbability = 0.2;
- gameRunning = true;
- // Clear any existing objects
- for (var i = 0; i < fallingObjects.length; i++) {
- if (fallingObjects[i].parent) {
- fallingObjects[i].destroy();
- }
- }
- fallingObjects = [];
- // Clear any existing timers
- if (spawnTimer) {
- LK.clearInterval(spawnTimer);
- }
- if (difficultyTimer) {
- LK.clearInterval(difficultyTimer);
- }
- // Setup lives display
- setupLives();
- // Start spawning objects
- spawnTimer = LK.setInterval(spawnObject, spawnInterval);
- // Increase difficulty over time
- difficultyTimer = LK.setInterval(increaseDifficulty, 10000);
- // Play background music
- LK.playMusic('gameMusic', {
- fade: {
- start: 0,
- end: 0.4,
- duration: 1000
- }
- });
-}
-// Spawn a new falling object (banana or bomb)
-function spawnObject() {
- if (!gameRunning) {
- return;
- }
- var isBomb = LK.getScore() >= bombThreshold && Math.random() < bombProbability;
- var object = null;
- if (isBomb) {
- object = new Bomb();
- object.fallSpeed = Math.min(12, 6 + currentLevel * 0.5);
- object.rotation = Math.random() * Math.PI * 2;
- } else {
- object = new Banana();
- object.fallSpeed = Math.min(12, 5 + currentLevel * 0.5);
- object.rotation = Math.random() * Math.PI / 4;
- }
- // Position randomly across the width of the screen
- object.x = Math.random() * (2048 - 200) + 100;
- object.y = -100;
- game.addChild(object);
- fallingObjects.push(object);
-}
-// Increase game difficulty
-function increaseDifficulty() {
- if (!gameRunning) {
- return;
- }
- currentLevel++;
- // Increase spawn rate
- if (spawnInterval > minSpawnInterval) {
- spawnInterval = Math.max(minSpawnInterval, spawnInterval - 200);
- // Reset the spawn timer with new interval
- LK.clearInterval(spawnTimer);
- spawnTimer = LK.setInterval(spawnObject, spawnInterval);
- }
- // Increase bomb probability
- if (LK.getScore() >= bombThreshold) {
- bombProbability = Math.min(0.4, bombProbability + 0.05);
- }
-}
-// Decrease player lives
-function decreaseLives() {
+// Function to decrease life
+function decreaseLife() {
lives--;
- // Update hearts display
- for (var i = 0; i < hearts.length; i++) {
- hearts[i].setActive(i < lives);
- }
+ initLives();
+ // Shake the screen
+ LK.effects.flashScreen(0xff0000, 300);
+ // Check for game over
if (lives <= 0) {
gameOver();
}
}
-// Game over handling
+// Function to handle game over
function gameOver() {
- gameRunning = false;
+ if (isGameOver) return;
+ isGameOver = true;
LK.getSound('gameover').play();
- LK.clearInterval(spawnTimer);
- LK.clearInterval(difficultyTimer);
- // Fade out music
- LK.playMusic('gameMusic', {
- fade: {
- start: 0.4,
- end: 0,
- duration: 1000
- }
- });
- // Show game over screen after a short delay
+ LK.effects.flashScreen(0xff0000, 1000);
+ // Remove all falling items
+ for (var i = fallingItems.length - 1; i >= 0; i--) {
+ fallingItems[i].destroy();
+ }
+ fallingItems = [];
+ // Show game over screen
LK.setTimeout(function () {
LK.showGameOver();
}, 1000);
}
-// Handle objects that reach the bottom of the screen
-function handleOffscreenObjects() {
- for (var i = fallingObjects.length - 1; i >= 0; i--) {
- var obj = fallingObjects[i];
- if (obj.y > 2732 + 100) {
- // Object fell off the bottom of the screen
- if (obj.isActive && obj instanceof Banana) {
- // Player missed a banana
- decreaseLives();
+// Function to spawn a new falling item
+function spawnItem() {
+ var isBomb = LK.getScore() >= BOMB_THRESHOLD_SCORE && Math.random() < 0.3;
+ var itemType = isBomb ? "bomb" : "banana";
+ var item = new FallingItem();
+ item.init(itemType, currentSpeed);
+ fallingItems.push(item);
+ game.addChild(item);
+ return item;
+}
+// Update game state each frame
+game.update = function () {
+ if (isGameOver) return;
+ // Update all falling items
+ for (var i = fallingItems.length - 1; i >= 0; i--) {
+ var item = fallingItems[i];
+ // Check if item has fallen off screen
+ if (item.lastY < SCREEN_HEIGHT && item.y >= SCREEN_HEIGHT) {
+ if (item.type === "banana" && item.active) {
+ // Missed a banana - lose a life
+ decreaseLife();
+ item.remove();
+ } else if (item.type === "bomb" && item.active) {
+ // Bomb fell off screen - remove it with no penalty
+ item.destroy();
+ fallingItems.splice(i, 1);
}
- obj.destroy();
- fallingObjects.splice(i, 1);
}
+ // Remove destroyed items from array
+ if (!item.active || item.alpha <= 0) {
+ fallingItems.splice(i, 1);
+ }
}
-}
-// Update the game state every frame
-game.update = function () {
- if (!gameRunning && lives > 0) {
- startGame();
+ // Spawn new items at intervals
+ spawnCounter++;
+ if (spawnCounter >= currentSpawnInterval) {
+ spawnItem();
+ spawnCounter = 0;
+ // Increase difficulty based on score
+ var score = LK.getScore();
+ currentSpeed = 2 + score * SPEED_INCREMENT;
+ currentSpawnInterval = Math.max(MIN_SPAWN_INTERVAL, SPAWN_INTERVAL_INITIAL - score * INTERVAL_DECREMENT);
}
- if (gameRunning) {
- handleOffscreenObjects();
- updateScore();
- }
+ // Update score text
+ scoreText.setText('Score: ' + LK.getScore());
};
-// Update the score display
-function updateScore() {
- scoreTxt.setText(LK.getScore().toString());
+// Initialize the game
+function initGame() {
+ // Reset game variables
+ lives = MAX_LIVES;
+ LK.setScore(0);
+ spawnCounter = 0;
+ currentSpawnInterval = SPAWN_INTERVAL_INITIAL;
+ currentSpeed = 2;
+ isGameOver = false;
+ fallingItems = [];
+ // Initialize UI
+ initLives();
+ scoreText.setText('Score: 0');
+ // Play background music
+ LK.playMusic('gameMusic');
}
-// Start game when loaded
-LK.setTimeout(function () {
- startGame();
-}, 500);
\ No newline at end of file
+// Start the game
+initGame();
\ No newline at end of file
Pixel banana. In-Game asset. High contrast. No shadows
Pixel art Bomb.. In-Game asset. High contrast. No shadows
Pixel art Heart. In-Game asset. High contrast. No shadows
Pixel art Forest background. In-Game asset. High contrast. No shadows
Purple color "+1" in pixels art style . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Simple empty clean pixel art background in brown. In-Game asset. 2d. High contrast. No shadows. Game menu background.
Menu button. Pixel art dark brown.. In-Game asset. 2d. High contrast. No shadows No writing inside