User prompt
Haz que cada 20 puntos no aparezca la pantalla verde
User prompt
Fruta da diez puntos cada 20 puntos nivel aunmenta
User prompt
Botón desactivar y activar musica ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Música fondo
User prompt
Haz que las nubes vallan reapareciendo ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Haz que allá nubes en toda la pantalla
User prompt
Haz que el fondo tenga nubes y arriba un sol
User prompt
Haz que el fondo sea bonito
User prompt
Haz que las balas salgan de la parte que dispara de la pistola
User prompt
Haz el score y las vidas mas pequeñas y haz que en vez de vidas haya corazones
User prompt
Haz todo mucho más grande
Code edit (1 edits merged)
Please save this source code
User prompt
Fruit Shooter
Initial prompt
Un juego que con una pistola tengas que disparar a frutas que van apareciendo de arriba de la pantalla y que la pistola se vea
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -12; self.update = function () { self.y += self.speed; }; return self; }); var Cloud = Container.expand(function () { var self = Container.call(this); var cloudGraphics = self.attachAsset('cloud', { anchorX: 0.5, anchorY: 0.5 }); cloudGraphics.alpha = 0.7; self.speed = Math.random() * 0.5 + 0.2; self.update = function () { self.x += self.speed; if (self.x > 2048 + 100) { self.x = -100; self.y = Math.random() * 2732; } }; return self; }); var Fruit = Container.expand(function (fruitType) { var self = Container.call(this); self.fruitType = fruitType || 'apple'; self.points = 10; if (self.fruitType === 'orange') { self.points = 15; } else if (self.fruitType === 'banana') { self.points = 20; } else if (self.fruitType === 'grape') { self.points = 25; } var fruitGraphics = self.attachAsset(self.fruitType, { anchorX: 0.5, anchorY: 0.5 }); self.speed = Math.random() * 3 + 2; self.update = function () { self.y += self.speed; }; return self; }); var Gun = Container.expand(function () { var self = Container.call(this); var gunGraphics = self.attachAsset('gun', { anchorX: 0.5, anchorY: 0.5 }); return self; }); var Sun = Container.expand(function () { var self = Container.call(this); var sunGraphics = self.attachAsset('sun', { anchorX: 0.5, anchorY: 0.5 }); sunGraphics.alpha = 0.8; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87ceeb }); /**** * Game Code ****/ // Add sun to the background var sun = game.addChild(new Sun()); sun.x = 1800; sun.y = 300; // Add clouds to the background var clouds = []; for (var c = 0; c < 15; c++) { var cloud = new Cloud(); cloud.x = Math.random() * 2048; cloud.y = Math.random() * 2732; clouds.push(cloud); game.addChild(cloud); } var gun = game.addChild(new Gun()); gun.x = 2048 / 2; gun.y = 2732 - 200; var bullets = []; var fruits = []; var lives = 3; var gameSpeed = 1; var level = 1; var lastLevelScore = 0; var scoreTxt = new Text2('Score: 0', { size: 80, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); var livesTxt = new Text2('❤️❤️❤️', { size: 60, fill: 0xFFFFFF }); livesTxt.anchor.set(1, 0); LK.gui.topRight.addChild(livesTxt); var levelTxt = new Text2('Level: 1', { size: 60, fill: 0xFFFFFF }); levelTxt.anchor.set(0, 0); LK.gui.topLeft.addChild(levelTxt); levelTxt.x = 120; // Offset from left edge to avoid menu icon var fruitTypes = ['apple', 'orange', 'banana', 'grape']; var fruitSpawnTimer = 0; var fruitSpawnRate = 120; function spawnFruit() { var randomType = fruitTypes[Math.floor(Math.random() * fruitTypes.length)]; var newFruit = new Fruit(randomType); newFruit.x = Math.random() * (2048 - 300) + 150; newFruit.y = -100; newFruit.speed *= gameSpeed; fruits.push(newFruit); game.addChild(newFruit); } function shootBullet() { var newBullet = new Bullet(); newBullet.x = gun.x; newBullet.y = gun.y - 50; bullets.push(newBullet); game.addChild(newBullet); LK.getSound('shoot').play(); } game.down = function (x, y, obj) { shootBullet(); }; game.move = function (x, y, obj) { gun.x = Math.max(150, Math.min(2048 - 150, x)); }; // Start background music LK.playMusic('background'); game.update = function () { fruitSpawnTimer++; if (fruitSpawnTimer >= fruitSpawnRate / gameSpeed) { spawnFruit(); fruitSpawnTimer = 0; } // Update bullets for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; if (bullet.y < -100) { bullet.destroy(); bullets.splice(i, 1); continue; } // Check bullet-fruit collisions for (var j = fruits.length - 1; j >= 0; j--) { var fruit = fruits[j]; if (bullet.intersects(fruit)) { var oldScore = LK.getScore(); LK.setScore(LK.getScore() + fruit.points); var newScore = LK.getScore(); scoreTxt.setText('Score: ' + newScore); // Check for level up every 20 points var pointsGained = newScore - lastLevelScore; if (pointsGained >= 20) { level++; lastLevelScore = newScore; levelTxt.setText('Level: ' + level); } LK.effects.flashObject(fruit, 0xffffff, 200); LK.getSound('hit').play(); bullet.destroy(); bullets.splice(i, 1); fruit.destroy(); fruits.splice(j, 1); break; } } } // Update fruits for (var k = fruits.length - 1; k >= 0; k--) { var fruit = fruits[k]; if (fruit.y > 2732 + 100) { lives--; var hearts = ''; for (var h = 0; h < lives; h++) { hearts += '❤️'; } livesTxt.setText(hearts); if (lives <= 0) { LK.showGameOver(); return; } fruit.destroy(); fruits.splice(k, 1); } } // Increase game speed over time if (LK.ticks % 1800 === 0) { gameSpeed += 0.2; fruitSpawnRate = Math.max(30, fruitSpawnRate - 5); } };
===================================================================
--- original.js
+++ change.js
@@ -180,9 +180,8 @@
if (pointsGained >= 20) {
level++;
lastLevelScore = newScore;
levelTxt.setText('Level: ' + level);
- LK.effects.flashScreen(0x00ff00, 500); // Green flash for level up
}
LK.effects.flashObject(fruit, 0xffffff, 200);
LK.getSound('hit').play();
bullet.destroy();