User prompt
display 3 heart icon and make it functional 3 lives of player
User prompt
add 3 heart of health to the player meaning that player has 3 more lives
User prompt
make enemies bigger and a bit faster
User prompt
remove the double jump effect
User prompt
add dash sfx
User prompt
add sound effects and musics to the game
User prompt
player is not jumping please fix it
User prompt
make the enemies hitboxes small and fix double jump when on ground
Code edit (8 edits merged)
Please save this source code
User prompt
add jump and dash icons on buttons
User prompt
fix doublejump, when the player is on ground reset normal jump
User prompt
fix the double jump while on ground. it should not activated. and make the cooldownText updated with the dash cooldown
Code edit (1 edits merged)
Please save this source code
/**** * Classes ****/ // Define a class for big flying enemies var BigEnemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5, scaleX: 2, scaleY: 2 }); self.speed = Math.random() * 6 + 6; self.update = function () { self.x -= self.speed; if (self.x < -50) { self.destroy(); } }; }); // Define a class for enemies var Enemy = Container.expand(function () { var self = Container.call(this); // Increase enemy size var size = Math.random() * 0.5 + 0.5; var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5, scaleX: size, scaleY: size }); // Increase enemy speed self.speed = Math.random() * 4 + 4; self.update = function () { self.x -= self.speed; if (self.x < -50) { self.destroy(); } }; }); //<Assets used in the game will automatically appear here> // Define a class for the player character var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 3; self.jumpHeight = 30; self.isJumping = false; self.velocityY = 0; self.update = function () { if (self.isJumping) { self.y += self.velocityY; self.velocityY += 0.6; // Decreased gravity effect by 30% if (self.y >= 2732 / 2) { // Ground level self.y = 2732 / 2; self.isJumping = false; self.velocityY = 0; self.canDoubleJump = false; // Reset double jump when player lands self.canDoubleDash = true; // Reset double dash when player lands self.canDoubleJump = false; // Reset double jump self.canDoubleDash = true; // Reset double dash when player lands self.isJumping = false; // Reset normal jump when player lands } } }; self.dashBack = function () { if (!self.isDashing || self.canDoubleDash) { if (self.isDashing && self.canDoubleDash) { self.canDoubleDash = false; self.x -= 350; // Second dash back is shorter } if (self.canDoubleDash) { self.canDoubleDash = false; } else { self.isDashing = true; } self.dashTimer = 100; LK.getSound('dash_sfx').play(); // Play dash sound effect self.oldX = self.x; self.x -= 300; // Increase dash distance } }; self.jump = function () { if (!self.isJumping && self.y >= 2732 / 2) { self.isJumping = true; self.velocityY = -self.jumpHeight * 1.2; } }; self.update = function () { if (self.isJumping) { self.y += self.velocityY; self.velocityY += 0.7; // Decreased gravity effect by 30% if (self.y >= 2732 / 2) { // Ground level self.y = 2732 / 2; self.isJumping = false; self.velocityY = 0; } } if (self.isDashing) { self.dashTimer--; if (self.dashTimer == 0) { // Increase dash cooldown self.isDashing = false; self.x = self.oldX; } } }; }); // Define a class for managing player health var PlayerHealth = Container.expand(function () { var self = Container.call(this); self.lives = 3; self.hearts = []; // Create heart icons for (var i = 0; i < self.lives; i++) { var heart = self.attachAsset('heart', { anchorX: 0.5, anchorY: 0.5 }); heart.x = 50 + i * 110; // Position hearts with some spacing heart.y = 50; self.hearts.push(heart); } // Method to decrease lives self.decreaseLife = function () { if (self.lives > 0) { self.lives--; self.hearts[self.lives].visible = false; } }; // Method to check if player is out of lives self.isGameOver = function () { return self.lives <= 0; }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB // Sky blue background }); /**** * Game Code ****/ // Initialize player health and display heart icons var playerHealth = game.addChild(new PlayerHealth()); playerHealth.hearts.forEach(function (heart, index) { heart.x = 100 + index * 110; // Position hearts with some spacing heart.y = 100; game.addChild(heart); }); // Draw white rectangles on screen to indicate where to touch var background = game.addChild(LK.getAsset('background', { anchorX: 0, anchorY: 0 })); background.x = 0; background.y = 0; var leftTouchArea = game.addChild(LK.getAsset('leftTouchArea', { anchorX: 0, anchorY: 0 })); var rightTouchArea = game.addChild(LK.getAsset('rightTouchArea', { anchorX: 0, anchorY: 0 })); leftTouchArea.alpha = 0.7; leftTouchArea.y = 1474; leftTouchArea.x = 137; rightTouchArea.alpha = 0.7; rightTouchArea.x = 1161; rightTouchArea.y = 1474; // Add jump and dash icons to the buttons var jumpIcon = game.addChild(LK.getAsset('player', { anchorX: 0.5, anchorY: 0.5 })); jumpIcon.x = rightTouchArea.x + rightTouchArea.width / 2; jumpIcon.y = rightTouchArea.y + rightTouchArea.height / 2; jumpIcon.scaleX = 2; jumpIcon.scaleY = 2; var dashIcon = game.addChild(LK.getAsset('player', { anchorX: 0.5, anchorY: 0.5 })); dashIcon.x = leftTouchArea.x + leftTouchArea.width / 2; dashIcon.y = leftTouchArea.y + leftTouchArea.height / 2; dashIcon.scaleX = 3; dashIcon.scaleY = 3; dashIcon.alpha = 0.7; // Initialize player var player = game.addChild(new Player()); player.x = 2048 / 2; player.y = 2732 / 2; // Initialize enemies var enemies = []; var enemySpawnInterval = 100; var enemySpawnCounter = 0; // Create a new Text2 object to display the score var scoreText = new Text2('0', { size: 100, fill: 0x000000 }); // Add a new Text2 object to display the cooldown of Dash var cooldownText = new Text2('0', { anchorX: 0.5, anchorY: 0.5, size: 175, fill: 0x0000000 }); // Add the cooldown text to the game GUI at the middle of dash button game.addChild(cooldownText); cooldownText.x = leftTouchArea.x + leftTouchArea.width / 4; cooldownText.y = leftTouchArea.y + leftTouchArea.height / 2; // Add the score text to the game GUI at the top right of the screen game.addChild(scoreText); scoreText.x = 2048 / 2; scoreText.y = 100; // Add control instructions to the game screen var controlText = new Text2('Tap right to jump, tap left to dash back', { anchorX: 25, anchorY: 0.5, size: 100, fill: 0x000000 }); game.addChild(controlText); controlText.x = 2048 / 9; controlText.y = 2620; // Handle game updates game.update = function () { player.update(); // Update the cooldown text with the dash cooldown cooldownText.setText(player.isDashing ? player.dashTimer : 100); // Spawn enemies enemySpawnCounter++; if (enemySpawnCounter >= enemySpawnInterval) { var enemy; if (Math.random() < 0.2) { // 20% chance to spawn a big enemy enemy = new BigEnemy(); enemy.y = 2732 / 4; } else { enemy = new Enemy(); enemy.y = 2732 / 2; } enemy.x = 2096; enemies.push(enemy); game.addChild(enemy); // Randomize the spawn interval for the next enemy enemySpawnInterval = Math.floor(Math.random() * 100) + 50; enemySpawnCounter = 0; } // Update enemies for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].update(); if (player.intersects(enemies[j])) { LK.effects.flashScreen(0xff0000, 1000); playerHealth.decreaseLife(); if (playerHealth.isGameOver()) { LK.showGameOver(); } } else if (player.x > enemies[j].x && !enemies[j].passed) { enemies[j].passed = true; LK.setScore(LK.getScore() + (enemies[j] instanceof BigEnemy ? 2 : 1)); // Big enemies give 2 points scoreText.setText(LK.getScore()); } } }; // Play background music LK.playMusic('main_theme'); // Handle player jump game.down = function (x, y, obj) { if (x < 1024 && y > 1366) { player.dashBack(); } else { player.jump(); LK.getSound('jump_sfx').play(); // Play jump sound effect } };
===================================================================
--- original.js
+++ change.js
@@ -148,10 +148,15 @@
/****
* Game Code
****/
-// Initialize player health
+// Initialize player health and display heart icons
var playerHealth = game.addChild(new PlayerHealth());
+playerHealth.hearts.forEach(function (heart, index) {
+ heart.x = 100 + index * 110; // Position hearts with some spacing
+ heart.y = 100;
+ game.addChild(heart);
+});
// Draw white rectangles on screen to indicate where to touch
var background = game.addChild(LK.getAsset('background', {
anchorX: 0,
anchorY: 0