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
Botoฬn desactivar y activar musica โช๐ก Consider importing and using the following plugins: @upit/storage.v1
User prompt
Muฬsica fondo
User prompt
Haz que las nubes vallan reapareciendo โช๐ก Consider importing and using the following plugins: @upit/tween.v1
User prompt
Haz que allaฬ 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 pequenฬas y haz que en vez de vidas haya corazones
User prompt
Haz todo mucho maฬ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.flashScreen(0x00ff00, 500); // Green flash for level up } 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
@@ -1,11 +1,8 @@
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
-var storage = LK.import("@upit/storage.v1", {
- musicEnabled: true
-});
/****
* Classes
****/
@@ -106,8 +103,10 @@
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
});
@@ -118,28 +117,15 @@
fill: 0xFFFFFF
});
livesTxt.anchor.set(1, 0);
LK.gui.topRight.addChild(livesTxt);
-var musicBtn = new Text2(storage.musicEnabled ? '๐' : '๐', {
+var levelTxt = new Text2('Level: 1', {
size: 60,
fill: 0xFFFFFF
});
-musicBtn.anchor.set(0, 0);
-musicBtn.x = 120;
-musicBtn.y = 20;
-LK.gui.topLeft.addChild(musicBtn);
-function toggleMusic() {
- storage.musicEnabled = !storage.musicEnabled;
- musicBtn.setText(storage.musicEnabled ? '๐' : '๐');
- if (storage.musicEnabled) {
- LK.playMusic('background');
- } else {
- LK.stopMusic();
- }
-}
-musicBtn.down = function (x, y, obj) {
- toggleMusic();
-};
+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() {
@@ -164,12 +150,10 @@
};
game.move = function (x, y, obj) {
gun.x = Math.max(150, Math.min(2048 - 150, x));
};
-// Start background music based on stored setting
-if (storage.musicEnabled) {
- LK.playMusic('background');
-}
+// Start background music
+LK.playMusic('background');
game.update = function () {
fruitSpawnTimer++;
if (fruitSpawnTimer >= fruitSpawnRate / gameSpeed) {
spawnFruit();
@@ -186,10 +170,20 @@
// 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);
- scoreTxt.setText('Score: ' + LK.getScore());
+ 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.flashScreen(0x00ff00, 500); // Green flash for level up
+ }
LK.effects.flashObject(fruit, 0xffffff, 200);
LK.getSound('hit').play();
bullet.destroy();
bullets.splice(i, 1);