Code edit (1 edits merged)
Please save this source code
User prompt
'flowers' ismini 'money' olarak değiş
User prompt
Killing the monster bees(+2) Collecting the coins(+1) Getting caught by the turtle(-1 life) Touching the wires on the left(game over) kuralları bunlarla değiş yeni oyun kuralları
Code edit (1 edits merged)
Please save this source code
User prompt
Menü yazısını kaldır
User prompt
Menü yazısını küçült
User prompt
Best score yazısını siyah yap
User prompt
Move Best Score text 30 units higher
User prompt
Best score yazısını 30 birim yukarı çıkart
User prompt
Menü buton boyutunı 3 kat arttır
User prompt
Menü button boyutunu 10 kat küçült
User prompt
Menü button boyutunu kalıcı şekilde büyült
User prompt
Menü button boyutunu 10 katına çıkart
User prompt
Menü button boyutunu büyült
User prompt
Menü button boyutunu 4 katına çıkart
User prompt
Best score yazsını 60 birim yukarı kaydır
User prompt
Bestscore yazısını 60 birim yukarı çıkart
User prompt
Menü butonunu 300 birim yukarı çıkart
User prompt
Menü butonunu 1300 birim aşağıya indir
User prompt
Menübuttonu 1000 birim yukarı çıkart
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'visible')' in or related to this line: 'menuLabel.visible = true; // Ensure menu label is visible when game starts' Line Number: 846
User prompt
Hayır gözükmüyor düzelt
User prompt
Menübuttonshape sahnenin ortasına görünür şekilde koy
User prompt
Menübuttonu sahnenin ortasına koy
User prompt
Menü butonu görseli oluştur ve oyun başladığında sahnenin ortasına spwan et
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var BigBoss = Container.expand(function () { var self = Container.call(this); var bossGraphics = self.attachAsset('bigBoss', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 1; // Slow speed for the boss self.health = 100; // High health for the boss self.update = function () { self.x -= self.speed; // Move from right to left self.y += Math.sin(self.x / 200) * 10; // Slight vertical oscillation if (self.x < -bossGraphics.width / 2) { self.destroy(); // Destroy when off-screen } }; self.takeDamage = function (damage) { self.health -= damage; if (self.health <= 0) { self.destroy(); LK.setScore(LK.getScore() + 50); // Increase score significantly for defeating the boss } }; }); // Define a class for the down button var DownButton = Container.expand(function () { var self = Container.call(this); var buttonGraphics = self.attachAsset('downButton', { anchorX: 0.5, anchorY: 0.5 }); self.down = function (x, y, obj) { LK.getSound('Kok').play(); // Play 'Kok' sound when button is pressed if (player.y + 100 <= 2732) { player.y += 100; // Check if player is intersecting with NewEnemy for (var i = 0; i < enemies.length; i++) { if (enemies[i] instanceof NewEnemy && player.intersects(enemies[i])) { LK.setScore(LK.getScore() + 10); // Increase score by 10 scoreTxt.setText(LK.getScore()); // Update the score text display break; // Exit loop after finding the first intersecting NewEnemy } } } }; }); // Define a class for enemies var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = Math.random() * 2 + 1; // Random speed between 1 and 3 self.update = function () { self.x -= self.speed; // Move from right to left self.y += Math.sin(self.x / 150) * 15; // Further reduce vertical oscillation amplitude for (var k = walls.length - 1; k >= 0; k--) { if (self.intersects(walls[k])) { // If enemy intersects with a wall, adjust its position to prevent passing through if (self.x > walls[k].x) { self.x = walls[k].x + walls[k].width / 2 + enemyGraphics.width / 2; } else { self.x = walls[k].x - walls[k].width / 2 - enemyGraphics.width / 2; } } } if (self.y < 0) { self.y = 0; // Prevent moving above the top of the scene } if (self.x < -50) { self.destroy(); } }; }); var Kaplu = Container.expand(function () { var self = Container.call(this); var kapluGraphics = self.attachAsset('kaplu', { anchorX: 0.5, anchorY: 0.5 }); self.update = function () { self.x -= 5; // Move 'kaplu' from right to left faster for (var k = walls.length - 1; k >= 0; k--) { if (self.intersects(walls[k])) { // If 'kaplu' intersects with a wall, adjust its position to prevent passing through if (self.x > walls[k].x) { self.x = walls[k].x + walls[k].width / 2 + kapluGraphics.width / 2; } else { self.x = walls[k].x - walls[k].width / 2 - kapluGraphics.width / 2; } } } if (self.x < -kapluGraphics.width / 2) { self.destroy(); // Remove 'kaplu' when it goes off-screen } }; }); // Define a class for the left button var LeftButton = Container.expand(function () { var self = Container.call(this); var buttonGraphics = self.attachAsset('leftButton', { anchorX: 0.5, anchorY: 0.5 }); self.down = function (x, y, obj) { LK.getSound('Kok').play(); // Play 'Kok' sound when button is pressed character.speedX = -moveSpeed; character.removeChild(character.children[0]); // Remove current player image character.attachAsset('leftImage', { // Change character image to 'leftImage' anchorX: 0.5, anchorY: 0.5 }); }; self.up = function (x, y, obj) { character.speedX = 0; character.removeChild(character.children[0]); // Remove current leftImage character.attachAsset('player', { // Revert character image to original anchorX: 0.5, anchorY: 0.5 }); }; }); var LifeIcon = Container.expand(function () { var self = Container.call(this); var lifeIconGraphics = self.attachAsset('lifeIcon', { anchorX: 0.5, anchorY: 0.5 }); self.updatePosition = function (index) { self.x = 50 + index * 60; // Position each icon with a gap self.y = 50; // Position at the top-left corner }; }); var MenuSystem = Container.expand(function () { var self = Container.call(this); // Background overlay for menu var menuBg = LK.getAsset('dusman', { anchorX: 0.5, anchorY: 0.5, width: 2048, height: 2732 }); menuBg.alpha = 0.8; menuBg.tint = 0x000000; self.addChild(menuBg); // Create menu title var menuTitle = new Text2('Game Menu', { size: 100, fill: 0xFFFFFF }); menuTitle.anchor.set(0.5, 0); menuTitle.x = 2048 / 2; menuTitle.y = 400; self.addChild(menuTitle); // Sound button var soundBtn = new Text2('Sound: ON', { size: 50, fill: 0xFFFFFF }); soundBtn.anchor.set(0.5, 0.5); soundBtn.x = 2048 / 2; soundBtn.y = 800; self.addChild(soundBtn); // Button for game rules var rulesBtn = new Text2('Game Rules', { size: 50, fill: 0xFFFFFF }); rulesBtn.anchor.set(0.5, 0.5); rulesBtn.x = 2048 / 2; rulesBtn.y = 1050; self.addChild(rulesBtn); // Back to game button var backBtn = new Text2('Back to Game', { size: 50, fill: 0xFFFFFF }); backBtn.anchor.set(0.5, 0.5); backBtn.x = 2048 / 2; backBtn.y = 1300; self.addChild(backBtn); // Rules modal var rulesModal = new Container(); this.children.forEach(function (child) { if (child === rulesModal) { child.visible = false; } }); self.addChild(rulesModal); // Rules modal background var modalBg = LK.getAsset('dusman', { anchorX: 0.5, anchorY: 0.5, width: 1600, height: 1800 }); modalBg.tint = 0x333333; modalBg.x = 2048 / 2; modalBg.y = 2732 / 2; rulesModal.addChild(modalBg); // Rules title var rulesTitle = new Text2('Game Rules', { size: 180, fill: 0xFFFFFF }); rulesTitle.anchor.set(0.5, 0); rulesTitle.x = 2048 / 2; rulesTitle.y = 500; rulesModal.addChild(rulesTitle); // Rules content var rulesContent = new Text2('- Collect money to increase your score\n' + '- Avoid enemies and obstacles\n' + '- Move using the control buttons\n' + '- Jump over walls to progress\n' + '- Collect power-ups for special abilities\n' + '- Reach high scores to unlock achievements', { size: 60, fill: 0xFFFFFF }); rulesContent.anchor.set(0.5, 0); rulesContent.x = 2048 / 2; rulesContent.y = 750; rulesModal.addChild(rulesContent); // Close button for rules modal var closeBtn = new Text2('Close', { size: 150, fill: 0xFFFFFF }); closeBtn.anchor.set(0.5, 0.5); closeBtn.x = 2048 / 2; closeBtn.y = 1800; rulesModal.addChild(closeBtn); // State tracking self.isOpen = false; self.isSoundOn = true; // Button handlers soundBtn.interactive = true; soundBtn.buttonMode = true; soundBtn.down = function () { self.isSoundOn = !self.isSoundOn; soundBtn.setText(self.isSoundOn ? 'Sound: ON' : 'Sound: OFF'); // Toggle game music if (self.isSoundOn) { LK.playMusic('gameMusic', { volume: 0.4 }); } else { LK.stopMusic(); } }; rulesBtn.interactive = true; rulesBtn.buttonMode = true; rulesBtn.down = function () { rulesModal.visible = true; }; closeBtn.interactive = true; closeBtn.buttonMode = true; closeBtn.down = function () { rulesModal.visible = false; }; backBtn.interactive = true; backBtn.buttonMode = true; backBtn.down = function () { self.toggle(); }; // Toggle menu visibility self.toggle = function () { self.isOpen = !self.isOpen; self.visible = self.isOpen; // Pause/unpause game functionality if (self.isOpen) { // Pause game when menu is open if (typeof pauseGame === 'function') { pauseGame(); } } else { // Resume game when menu is closed if (typeof resumeGame === 'function') { resumeGame(); } // Hide rules modal if it exists if (rulesModal) { rulesModal.visible = false; } } }; // Initialize as hidden self.visible = false; return self; }); var Money = Container.expand(function () { var self = Container.call(this); var moneyGraphics = self.attachAsset('money', { anchorX: 0.5, anchorY: 0.5 }); self.speed = Math.random() * 3 + 2; // Random speed between 2 and 5 self.update = function () { self.y += self.speed; self.x += Math.sin(self.y / 100) * 20; // Increased sine wave amplitude moneyGraphics.rotation += 0.05; // Rotate the money if (self.y > 2732) { self.destroy(); } }; }); var NewEnemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = Math.random() * 2 + 1; // Random speed between 1 and 3 self.update = function () { self.x -= self.speed; // Move from right to left self.y += Math.sin(self.x / 150) * 15; // Vertical oscillation for (var k = walls.length - 1; k >= 0; k--) { if (self.intersects(walls[k])) { // If NewEnemy intersects with a wall, adjust its position to prevent passing through if (self.x > walls[k].x) { self.x = walls[k].x + walls[k].width / 2 + enemyGraphics.width / 2; } else { self.x = walls[k].x - walls[k].width / 2 - enemyGraphics.width / 2; } } } if (self.y < 0) { self.y = 0; // Prevent moving above the top of the scene } 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 = 5; self.jumpHeight = 15; self.isJumping = false; self.velocityY = 0; self.update = function () { // Check if the player is outside the scene boundaries if (self.isJumping) { if (self.lastY > self.y) { LK.getSound('Fly').play(); // Play 'Fly' sound when moving upwards } self.lastY = self.y; // Update lastY to current y position self.y -= self.velocityY; self.velocityY -= gravity; if (self.velocityY <= 0 && self.y < 1366) { self.x += 7; // Move right by 7 units at peak } if (self.y >= 1366) { self.y = 1366; self.isJumping = false; self.velocityY = 0; } // Prevent player from being pushed when touching the top of a wall for (var k = walls.length - 1; k >= 0; k--) { if (self.intersects(walls[k])) { if (self.y < walls[k].y - walls[k].height / 2) { self.y = walls[k].y - walls[k].height / 2; self.velocityY = 0; self.isJumping = false; } } } } // Check if the player touches the left edge of the screen if (self.x <= 0) { LK.effects.flashScreen(0xff0000, 1000); // Flash red light across the entire scene LK.showGameOver(); // End the game if the player touches the wires on the left } self.x += self.speedX; if (self.x > 2048 - playerGraphics.width / 2) { self.x = 2048 - playerGraphics.width / 2; // Prevent moving outside the right edge } // Removed vertical oscillation when the player is not jumping and not moving horizontally if (self.isJumping) { self.y -= self.velocityY; self.velocityY -= gravity; if (self.y >= 1366) { self.y = 1366; self.isJumping = false; self.velocityY = 0; } // Check if the player touches the top edge of the screen if (self.y <= 0) { LK.effects.flashScreen(0xff0000, 1000); // Flash red light across the entire scene LK.showGameOver(); // End the game if the player touches the top edge } } }; self.jump = function () { if (!self.isJumping && self.y > 0) { self.isJumping = true; self.velocityY = 20; // Set initial jump velocity self.speedX = 0; // Reset horizontal speed } }; }); var PlayerHealth = Container.expand(function () { var self = Container.call(this); self.lives = 5; // Default initial lives self.initialize = function (initialLives) { self.lives = initialLives || 5; }; self.decreaseLife = function () { self.lives--; if (self.lives <= 0) { LK.showGameOver(); // End the game if no lives are left } }; self.getLives = function () { return self.lives; }; return self; }); // Define a class for the right button var RightButton = Container.expand(function () { var self = Container.call(this); var buttonGraphics = self.attachAsset('rightButton', { anchorX: 0.5, anchorY: 0.5 }); self.down = function (x, y, obj) { LK.getSound('Kok').play(); // Play 'Kok' sound when button is pressed character.speedX = moveSpeed; character.removeChild(character.children[0]); // Remove current player image character.attachAsset('rightImage', { anchorX: 0.5, anchorY: 0.5 }); // Change character image to 'rightImage' character.y += 100; // Move character down by 100px }; self.up = function (x, y, obj) { character.speedX = 0; character.removeChild(character.children[0]); // Remove current rightImage character.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); // Revert character image to original }; }); var ScrollingBackground = Container.expand(function () { var self = Container.call(this); var bg1 = self.attachAsset('arkaplan', { anchorX: 0.5, anchorY: 0.5 }); var bg2 = self.attachAsset('arkaplan', { anchorX: 0.5, anchorY: 0.5 }); bg1.x = 2048 / 2; bg1.y = 2732 / 2; bg2.x = 2048 / 2 + 2048; bg2.y = 2732 / 2; self.update = function () { bg1.x -= 2; bg2.x -= 2; if (bg1.x < -2048 / 2) { bg1.x = bg2.x + 2048; } if (bg2.x < -2048 / 2) { bg2.x = bg1.x + 2048; } }; }); // Define a class for the sine wave enemy var SineWaveEnemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 3; // Constant speed self.amplitude = 50; // Amplitude of the sine wave self.frequency = 100; // Frequency of the sine wave self.update = function () { self.x -= self.speed; self.y += Math.sin(self.x / self.frequency) * self.amplitude; for (var k = walls.length - 1; k >= 0; k--) { if (self.intersects(walls[k])) { // If SineWaveEnemy intersects with a wall, adjust its position to prevent passing through if (self.x > walls[k].x) { self.x = walls[k].x + walls[k].width / 2 + enemyGraphics.width / 2; } else { self.x = walls[k].x - walls[k].width / 2 - enemyGraphics.width / 2; } } } if (self.x < -50) { self.destroy(); } }; }); // Define a class for the up button var UpButton = Container.expand(function () { var self = Container.call(this); var buttonGraphics = self.attachAsset('upButton', { anchorX: 0.5, anchorY: 0.5 }); self.down = function (x, y, obj) { LK.getSound('Kok').play(); // Play 'Kok' sound when button is pressed player.jump(); }; }); var Wall = Container.expand(function () { var self = Container.call(this); var wallGraphics = self.attachAsset('wall', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; // Speed at which the wall moves from right to left self.update = function () { self.x -= self.speed; if (self.x < -wallGraphics.width) { self.destroy(); } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ // No title, no description // Always backgroundColor is black backgroundColor: 0x000000 }); /**** * Game Code ****/ // Define a class for managing player health // Initialize player health with 5 lives //Minimalistic tween library which should be used for animations over time, including tinting / colouring an object, scaling, rotating, or changing any game object property. //Storage library which should be used for persistent game data function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _classCallCheck(a, n) { if (!(a instanceof n)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) { return t; } var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) { return i; } throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var playerHealth = new PlayerHealth(); playerHealth.initialize(5); // Create and display life icons var lifeIcons = []; for (var i = 0; i < playerHealth.getLives(); i++) { var lifeIcon = new LifeIcon(); lifeIcon.updatePosition(i); LK.gui.topLeft.addChild(lifeIcon); lifeIcons.push(lifeIcon); } // Store original decrease life function var originalDecreaseLife = playerHealth.decreaseLife; // Override the decrease life function playerHealth.decreaseLife = function () { // Call the original function originalDecreaseLife.call(playerHealth); // Remove a life icon if (lifeIcons.length > 0) { var iconToRemove = lifeIcons.pop(); iconToRemove.destroy(); } }; LK.setInterval(createKaplu, 5000); // Spawn 'kaplu' every 5 seconds var walls = []; function spawnWall() { if (!powerUpActive) { var wall = new Wall(); wall.x = 2048 + wall.width / 2; // Start from the right edge of the screen wall.y = Math.random() * (2732 / 2 - wall.height) + wall.height / 2; // Random vertical position above the center game.addChild(wall); walls.push(wall); } } LK.setInterval(spawnWall, 10000); // Set interval to spawn walls every 10 seconds // Function to create sine wave enemies function createSineWaveEnemy() { var enemy = new SineWaveEnemy(); enemy.x = 2048; // Start from the right edge of the screen enemy.y = Math.random() * 2732; // Random vertical position game.addChild(enemy); enemies.push(enemy); } // Set interval to spawn sine wave enemies LK.setInterval(createSineWaveEnemy, 5000); // Spawn every 5 seconds // Function to create enemies with different types and behaviors function createEnemy() { var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "enemy"; var enemy; enemy = new Enemy(); enemy.x = 2048; // Start from the right edge of the screen enemy.y = Math.random() * (2732 - enemy.height) + enemy.height / 2; // Random vertical position within screen bounds game.addChild(enemy); enemies.push(enemy); } // Set intervals to spawn enemies LK.setInterval(function () { createEnemy("enemy"); // Normal enemy every 4 seconds }, 4000); // Function to spawn money on the screen function spawnMoney() { // Number of money to spawn var moneyCount = LK.getScore() > 200 ? Math.floor(Math.random() * 1) + 1 : Math.floor(Math.random() * 3) + 2; for (var i = 0; i < moneyCount; i++) { // Create a new money object var money = new Money(); // Set random initial position money.x = Math.random() * 2048; // Random horizontal position money.y = -50; // Start above the screen // Add money to the game scene game.addChild(money); } } // Call spawnMoney at intervals LK.setInterval(spawnMoney, 5000); // Spawn money every 5 seconds var scrollingBackground = game.addChild(new ScrollingBackground()); // Variable to track game over state var gameOver = false; // Play background music when the game starts LK.playMusic('gameMusic', { volume: 0.8, loop: true }); // Variable to track power-up states var powerUpActive = false; var powerUpCooldown = false; // Function to spawn a super power-up function spawnSuperPowerUp() { if (powerUpActive || powerUpCooldown) { return; } // Create a new power-up asset var powerUp = LK.getAsset('powerUp', { anchorX: 0.5, anchorY: 0.5 }); // Random x position within the scene width var x = Math.random() * (2048 - 50); powerUp.x = x; powerUp.y = -60; // Start above the screen // Add power-up to the game scene game.addChild(powerUp); // Move the power-up downwards var fall = LK.setInterval(function () { powerUp.y += 4; powerUp.x += Math.sin(powerUp.y / 100) * 10; // Sine wave pattern // Remove power-up if it goes off-screen if (powerUp.y > 2732) { LK.clearInterval(fall); powerUp.destroy(); } // Check for collision with player if (player.intersects(powerUp)) { LK.clearInterval(fall); powerUp.destroy(); activateSuperPower(); } }, 16); } // Function to activate the super power function activateSuperPower() { if (powerUpActive) { return; } powerUpActive = true; // Temporarily increase flower spawn rate var originalFlowerInterval = 5000; var increasedFlowerInterval = originalFlowerInterval / 4; // 4x increase var flowerIntervalId = LK.setInterval(spawnFlowers, increasedFlowerInterval); // Revert flower spawn rate after 30 seconds LK.setTimeout(function () { LK.clearInterval(flowerIntervalId); LK.setInterval(spawnFlowers, originalFlowerInterval); }, 30000); powerUpCooldown = true; // Scale up the player player.scale.set(4); // Revert player scale after 30 seconds LK.setTimeout(function () { player.scale.set(1); powerUpActive = false; // Cooldown before another power-up can spawn LK.setTimeout(function () { powerUpCooldown = false; }, 60000); // Set to 1 minute if player collects the power-up }, 30000); } // Attempt to spawn a power-up every 40 seconds, ensuring only one is active at a time if (!powerUpActive && !powerUpCooldown) { LK.setTimeout(spawnSuperPowerUp, 40000); } // Array to hold spikes var spikes = []; // Function to create spikes function createSpikes() { var spikeHeight = 100; // Height of each spike var spikeWidth = 30; // Width of each spike var gap = 50; // Gap between spikes // Create fixed spikes on the left edge of the scene for (var y = 0; y < 2732; y += spikeHeight + gap) { var spike = LK.getAsset('spike', { anchorX: 0.5, anchorY: 0.5 }); // Spike starting position (fixed to the left edge) var startX = -spikeWidth; // Left edge var startY = y; // Arranged with gap between them spike.x = startX; spike.y = startY; // Add spikes to the game scene game.addChild(spike); // Add spike object to the array spikes.push(spike); } } // Create spikes (only run once) createSpikes(); // Create and initialize the score text display var scoreTxt = new Text2('0', { size: 150, // Reduced size by 25% from 200 fill: 0x000000 // Black color for the score text }); // Set the initial score text to zero scoreTxt.setText(LK.getScore()); // Center the score text horizontally at the top of the screen scoreTxt.anchor.set(0.5, 0); // Anchor at the center of the top edge // Add the score text to the GUI overlay at a slightly left position from the top-right var newVisual = LK.getAsset('newVisual', { anchorX: 0.5, anchorY: 0.5 }); newVisual.x -= 100; // Move the new visual 100 pixels to the left newVisual.y += 100; // Move the new visual 100 pixels downwards scoreTxt.x = newVisual.x - 180; // Position score text 180 pixels to the left of the new visual scoreTxt.y = newVisual.y + 90 - 170; LK.gui.topRight.addChild(scoreTxt); LK.gui.topRight.addChild(newVisual); // Display Best Score in the center of the scene // Always show the highest score achieved, update if current score is higher // Create a menu button in the center of the screen when game starts var menuButton = LK.getAsset('menuButtonShape', { anchorX: 0.5, anchorY: 0.5, width: 200, height: 200 }); menuButton.scale.set(3); // Set scale to 3 for 3x size menuButton.tint = 0x3f51b5; // Nice blue color menuButton.x = 2048 / 2; // Center horizontally menuButton.y = 2732 / 2 + 1300; // Move 1300 units down from center menuButton.visible = true; // Ensure menu button is visible when game starts menuButton.alpha = 1; // Make sure button is fully opaque menuButton.interactive = true; menuButton.buttonMode = true; // Removed menu label from menu button // Create the menu system and add it to the GUI layer var menuSystem = new MenuSystem(); LK.gui.addChild(menuSystem); // Don't show menu automatically when game starts menuSystem.isOpen = false; menuSystem.visible = false; // Game is not paused initially isGamePaused = false; // Add the menu button directly to the main game scene for full visibility game.addChild(menuButton); // Add animation effects for menu button menuButton.down = function () { // Scale down button when clicked tween(menuButton.scale, { x: 2.7, y: 2.7 }, { duration: 100, easing: tween.easeOut }); // Toggle menu system menuSystem.toggle(); // Update button appearance based on menu state menuButton.tint = menuSystem.isOpen ? 0x888888 : 0x444444; }; menuButton.up = function () { // Scale back to normal when released tween(menuButton.scale, { x: 3, y: 3 }, { duration: 100, easing: tween.easeOut }); }; // Add enhanced pulse animation to menu button to make it more visible function pulseMenuButton() { // Make sure menuButton is visible before animating menuButton.visible = true; // Ensure menu button is centered 1300 units below center menuButton.x = 2048 / 2; menuButton.y = 2732 / 2 + 1300; tween(menuButton.scale, { x: 3.6, y: 3.6 }, { duration: 800, easing: tween.easeInOut, onFinish: function onFinish() { tween(menuButton.scale, { x: 3, y: 3 }, { duration: 800, easing: tween.easeInOut, onFinish: pulseMenuButton }); } }); // Also animate the button's alpha for a flashy effect tween(menuButton, { alpha: 0.8 }, { duration: 800, easing: tween.easeInOut, onFinish: function onFinish() { tween(menuButton, { alpha: 1 }, { duration: 800, easing: tween.easeInOut }); } }); } // Start pulse animation immediately pulseMenuButton(); // Ensure menu button is on top of all other elements if (game.children.indexOf(menuButton) !== -1) { game.removeChild(menuButton); game.addChild(menuButton); } // Set initial button state with a nice blue color menuButton.tint = 0x3f51b5; // Blue color for visibility // Get best score from storage with proper default var bestScore = storage.bestScore !== undefined ? storage.bestScore : 0; var bestScoreTxt = new Text2('Best Score: ' + bestScore, { size: 121.5, // 135'in %10 küçüğü fill: 0x000000 }); bestScoreTxt.anchor.set(0.5, 0.5); bestScoreTxt.x = 2048 / 2; bestScoreTxt.y = 2732 / 2 + 920; // 30 units higher game.addChild(bestScoreTxt); // Update best score if current score exceeds it, and always show the highest function updateBestScoreDisplay() { var currentScore = LK.getScore(); var storedBest = storage.bestScore !== undefined ? storage.bestScore : 0; if (currentScore > storedBest) { storage.bestScore = currentScore; bestScoreTxt.setText('Best Score: ' + currentScore); } else { bestScoreTxt.setText('Best Score: ' + storedBest); } } var moveSpeed = 5; // Speed for character movement var gravity = 0.8; // Decrease gravity for a lighter effect var windSpeed = 2; // Reduce wind speed for horizontal movement // Initialize player at the center of the screen var player = game.addChild(new Player()); var character = player; // Define character as a reference to player player.x = 1024; player.y = 1366; player.speedX = 0; // Prevent movement on spawn player.speedY = 0; // Prevent movement on spawn player.isJumping = false; player.velocityY = 0; // Initialize up button var upButton = game.addChild(new UpButton()); upButton.x = 2048 / 2 - 500; // Middle point's x coordinate minus button width upButton.y = 2732 / 2 + 600; // Middle point's y coordinate plus button height plus additional 100 pixels // Add scaling effect to the up button when pressed and released upButton.down = function () { upButton.scale.set(0.9); // Scale down by 10% }; upButton.up = function () { upButton.scale.set(1); // Reset to original size }; upButton.move = function () { upButton.scale.set(1); // Reset to original size if mouse leaves }; // Initialize left button var leftButton = game.addChild(new LeftButton()); leftButton.x = 300; // Move slightly more to the right leftButton.y = 2732 - 250; // Move slightly more upwards // Initialize right button var rightButton = game.addChild(new RightButton()); rightButton.x = 2048 - 300; // Move slightly more to the left rightButton.y = 2732 - 250; // Move slightly more upwards // Initialize down button var downButton = game.addChild(new DownButton()); downButton.x = 2048 - 500 - 50; // Right edge minus button width and margin downButton.y = 2732 - 500 - 250; // Move the down button slightly more upwards // Initialize enemies var enemies = []; var enemySpawnInterval = 160; // Initial slower spawn rate for the first 30 seconds var enemySpawnIncreaseInterval = 40000; // Increase spawn rate every 40 seconds var enemySpawnCounter = 0; // Variables to track button presses var isPressingUp = false; var isPressingDown = false; // Event listeners for button presses upButton.down = function () { isPressingUp = true; character.removeChild(character.children[0]); // Remove current player image character.attachAsset('playerup', { anchorX: 0.5, anchorY: 0.5 }); // Change character image to 'up' }; upButton.up = function () { isPressingUp = false; character.removeChild(character.children[0]); // Remove current playerup image character.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); // Revert character image to original }; downButton.down = function () { isPressingDown = true; character.removeChild(character.children[0]); // Remove current player image character.attachAsset('player_down', { anchorX: 0.5, anchorY: 0.5 }); // Change character image to 'dow' character.y += 50; // Move character down by 50px character.x += 160; // Move character right by 160px }; downButton.up = function () { isPressingDown = false; character.removeChild(character.children[0]); // Remove current player_down image character.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); // Revert character image to original character.y -= 50; // Move character back to original position }; // Update player movement based on button presses function updatePlayerMovement() { if (isPressingUp) { player.velocityY = -20; // Increase upward speed player.x += 8; // Move right by 8 units } // Removed upward movement when the down button is pressed player.y += player.velocityY; if (!isPressingUp && !isPressingDown) { player.velocityY += gravity; } if (player.y > 1366) { player.y = 1366; player.velocityY = 0; } if (player.y < 0) { player.y = 0; player.velocityY = 0; } } // Set interval for updating player movement LK.setInterval(updatePlayerMovement, 16); // Set interval to increase enemy spawn rate LK.setInterval(function () { if (enemySpawnInterval > 20) { // Ensure a minimum spawn interval enemySpawnInterval -= 10; // Decrease interval to increase spawn rate } }, enemySpawnIncreaseInterval); // Function to spawn BigBoss function spawnBigBoss() { var bigBoss = new BigBoss(); bigBoss.x = 2048; // Start from the right edge of the screen bigBoss.y = 1366; // Center vertically game.addChild(bigBoss); enemies.push(bigBoss); } // Function to spawn BigBoss // Set interval to spawn BigBoss every 60 seconds LK.setInterval(spawnBigBoss, 60000); // Set interval for updating player movement LK.setInterval(function () { player.update(); }, 16); // Game state tracking var isGamePaused = false; // Function to pause the game function pauseGame() { isGamePaused = true; // Optional: Stop or pause background music // LK.stopMusic(); } // Function to resume the game function resumeGame() { isGamePaused = false; // Optional: Resume background music if it was playing if (menuSystem.isSoundOn) { LK.playMusic('gameMusic', { volume: 0.4 }); } } // Update menu system toggle to pause/resume game menuSystem.toggle = function () { this.isOpen = !this.isOpen; this.visible = this.isOpen; // Ensure menu button is always visible menuButton.visible = true; if (this.isOpen) { // When menu opens, move the menu button to top right tween(menuButton, { x: 2048 - 150, y: 150, scaleX: 3, scaleY: 3 }, { duration: 300, easing: tween.easeOut }); pauseGame(); } else { // Always keep button centered 1300 units below center when menu is closed tween(menuButton, { x: 2048 / 2, y: 2732 / 2 + 1300, scaleX: 3, scaleY: 3 }, { duration: 300, easing: tween.easeOut }); resumeGame(); // Find rulesModal in children and hide it this.children.forEach(function (child) { if (child.children && child.children[0] && child.children[0].tint === 0x333333) { child.visible = false; } }); } }; // Handle game updates game.update = function () { // Skip updates if game is paused if (isGamePaused) { return; } player.update(); scrollingBackground.update(); for (var k = walls.length - 1; k >= 0; k--) { walls[k].update(); if (player.intersects(walls[k])) { // Allow player to approach walls without collision if (player.x > walls[k].x) { if (player.x < walls[k].x + walls[k].width / 2 + player.width / 2 - 10) { player.x = walls[k].x + walls[k].width / 2 + player.width / 2 - 10; } } else { if (player.x > walls[k].x - walls[k].width / 2 - player.width / 2 + 10) { player.x = walls[k].x - walls[k].width / 2 - player.width / 2 + 10; } } // Do not trigger game over when intersecting with walls } } for (var i = game.children.length - 1; i >= 0; i--) { if (game.children[i] instanceof Money) { var money = game.children[i]; money.update(); if (player.intersects(money)) { money.destroy(); // Remove money from the scene LK.setScore(LK.getScore() + 1); // Increase score by 1 for collecting money scoreTxt.setText(LK.getScore()); // Update the score text display updateBestScoreDisplay(); // Update best score if needed LK.getSound('Moneyses').play(); // Play 'Moneyses' sound when player intersects with money } } } // Check if the player is completely out of the scene if (player.x < -player.width || player.x > 2048 + player.width || player.y < -player.height || player.y > 2732 + player.height) { LK.showGameOver(); // End the game if the player is completely out of bounds } player.x -= windSpeed; // Apply wind effect to move player left // Spawn enemies enemySpawnCounter++; if (enemySpawnCounter >= enemySpawnInterval * 6 && !powerUpActive) { if (LK.ticks >= 1800) { // 30 seconds * 60 FPS enemySpawnInterval = 80; // Increase spawn rate after 30 seconds } if (enemySpawnCounter % 2 === 0) { // Introduce a delay between spawns return; } // Increase interval to reduce new enemy spawn rate var enemy = new Enemy(); enemy.x = 2048; // Spawn from the right edge of the screen enemy.y = Math.random() * (2732 / 2) + 100; // Random y position slightly lower from the top half of the screen enemies.push(enemy); game.addChild(enemy); enemySpawnCounter = 0; } // Update enemies for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].update(); if (player.intersects(enemies[j])) { LK.getSound('Kick').play(); // Play 'Kick' sound when player intersects with an enemy // Show 'kan' image at the collision point for 1 second var kanVisual = LK.getAsset('kan', { anchorX: 0.5, anchorY: 0.5 }); kanVisual.x = enemies[j].x; kanVisual.y = enemies[j].y; game.addChild(kanVisual); // Remove enemy from scene and array enemies[j].destroy(); enemies.splice(j, 1); // Ensure player is above kan visual game.addChild(player); // Remove 'kan' visual after 1 second LK.setTimeout(function () { kanVisual.destroy(); }, 1000); if (enemies[j] instanceof NewEnemy) { LK.effects.flashScreen(0xff0000, 1000); // Flash red light across the entire scene if (LK.ticks >= 3600) { // 60 seconds * 60 FPS LK.setScore(LK.getScore() - 10); // Decrease score by 10 after 60 seconds } else { LK.setScore(LK.getScore() - 3); // Decrease score by 3 for newEnemy } if (LK.getScore() < 0) { LK.getSound('End').play(); // Play 'End' sound LK.showGameOver(); // End the game if the score goes below zero } } else { LK.setScore(LK.getScore() + 2); // Increase score by 2 for killing monster bees } scoreTxt.setText(LK.getScore()); // Update the score text display updateBestScoreDisplay(); // Update best score if needed if (LK.getScore() % 20 === 0) { enemySpawnInterval = Math.max(20, enemySpawnInterval - 10); // Increase spawn rate by decreasing interval } if (LK.getScore() % 100 === 0 && LK.getScore() !== 0) { LK.effects.flashScreen(0x00ff00, 1000); // Flash green light across the entire scene } if (LK.getScore() >= 40) { enemySpawnInterval = Math.max(10, enemySpawnInterval - 5); // Further increase spawn rate when score is 40 or more } } } for (var i = game.children.length - 1; i >= 0; i--) { if (game.children[i] instanceof Kaplu) { var kaplu = game.children[i]; kaplu.update(); if (player.intersects(kaplu)) { LK.effects.flashScreen(0xff0000, 1000); // Flash red light across the entire scene LK.setScore(LK.getScore() - 5); // Decrease score by 5 scoreTxt.setText(LK.getScore()); // Update the score text display updateBestScoreDisplay(); // Update best score if needed playerHealth.decreaseLife(); // Decrease player health by 1 for getting caught by the turtle LK.getSound('Damage').play(); // Play 'Damage' sound when player intersects with 'kaplu' kaplu.destroy(); // Remove 'kaplu' from the scene } } } }; // Handle player movement with touch game.down = function (x, y, obj) { if (y < 1366) { // Check if the touch is in the upper half player.x = x; player.y = y; } }; game.move = function (x, y, obj) { if (y < 1366) { // Check if the touch is in the upper half player.x = x; player.y = y; } }; function createKaplu() { if (!powerUpActive) { var kaplu = new Kaplu(); kaplu.x = 2048 + kaplu.width / 2; // Start from the right edge of the screen kaplu.y = Math.random() * (2732 / 2 - kaplu.height) + kaplu.height / 2; // Random vertical position above the center game.addChild(kaplu); } }
===================================================================
--- original.js
+++ change.js
@@ -219,9 +219,9 @@
rulesTitle.y = 500;
rulesModal.addChild(rulesTitle);
// Rules content
var rulesContent = new Text2('- Collect money to increase your score\n' + '- Avoid enemies and obstacles\n' + '- Move using the control buttons\n' + '- Jump over walls to progress\n' + '- Collect power-ups for special abilities\n' + '- Reach high scores to unlock achievements', {
- size: 120,
+ size: 60,
fill: 0xFFFFFF
});
rulesContent.anchor.set(0.5, 0);
rulesContent.x = 2048 / 2;
@@ -545,12 +545,12 @@
/****
* Game Code
****/
-//Storage library which should be used for persistent game data
-//Minimalistic tween library which should be used for animations over time, including tinting / colouring an object, scaling, rotating, or changing any game object property.
-// Initialize player health with 5 lives
// Define a class for managing player health
+// Initialize player health with 5 lives
+//Minimalistic tween library which should be used for animations over time, including tinting / colouring an object, scaling, rotating, or changing any game object property.
+//Storage library which should be used for persistent game data
function _typeof(o) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;