User prompt
Если игрок пересек объект prep или pref, то game over
User prompt
Если игрок пересек объекты prep и prepf, то game over
Code edit (1 edits merged)
Please save this source code
User prompt
Если игрок пересекается с prep1 gameover
User prompt
как изменить высоту прыжка, сейчас по X улетает высоко, нужно ниже
User prompt
как изменить высоту прыжка, сейчас по X улетает высоко, нужно ниже
User prompt
исправь это
User prompt
уменьшить высоту прыжка
User prompt
Уменьшить высоту прыжка
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'tween(player, {' Line Number: 78 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Please fix the bug: 'Timeout.tick error: Can't find variable: tween' in or related to this line: 'tween(ball, {' Line Number: 564 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Сделай свои рекомендации
User prompt
Проверять пересечения child и prep
User prompt
Проверять столкновения в радиусе объекта character и prep
User prompt
При столкновении characterи prep game over
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'if (!player.inAir && !player.doubleJump) {' Line Number: 98
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'if (!player.inAir && !player.doubleJump) {' Line Number: 60
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'if (!player.doubleJump || player.inAir && !player.doubleJump) {' Line Number: 122
User prompt
Please fix the bug: 'Timeout.tick error: Can't find variable: player' in or related to this line: 'game.setChildIndex(player, game.children.length - 1); // Move player to the top' Line Number: 376
User prompt
Please fix the bug: 'Timeout.tick error: Can't find variable: player' in or related to this line: 'game.setChildIndex(player, game.children.length - 1); // Move player to the top' Line Number: 376
User prompt
Сделать объект character основным игроком, с которым в будущем будем сравнивать столкновения с другими объектами
User prompt
Усложни игру еще
User prompt
Усложни игру
User prompt
Сделать проверку на столкновения объекта character и prep
User prompt
Сделать проверку на столкновения объекта character и prep
/**** * Classes ****/ // test var ButtonBot = Container.expand(function () { var self = Container.call(this); var buttonBotGraphics = self.attachAsset('BUTTON_BOT', { anchorX: 0.5, anchorY: 0.5 }); // Add down event to set landing duration to 100 during jump or double jump self.down = function (x, y, obj) { if (self.isPressed) { return; } // Debounce: Ignore if already pressed self.isPressed = true; // Set pressed state LK.setTimeout(function () { self.isPressed = false; // Reset pressed state after a short delay }, 200); // 200ms debounce delay self.scale.set(0.9); // Add press effect by scaling down if (!player.inAir && !player.doubleJump) { player.rotation -= Math.PI / 2.25; // Rotate 80 degrees counter-clockwise } else if (player.inAir || player.doubleJump) { var jumpDuration = 100; var jumpStartTime = Date.now(); var jumpInterval = LK.setInterval(function () { var elapsed = Date.now() - jumpStartTime; var progress = elapsed / jumpDuration; if (progress >= 1) { player.y = 2732 / 2 - 250; player.inAir = false; player.doubleJump = false; LK.clearInterval(jumpInterval); } else { player.y = player.y - 200 * progress; } }, 16); } if (player.inAir || player.doubleJump) { if (!player.hasRotated) { player.rotation -= Math.PI / 2.25; // Rotate 80 degrees counter-clockwise player.hasRotated = true; // Ensure rotation only occurs once } var moveDuration = 100; var moveStartTime = Date.now(); var moveInterval = LK.setInterval(function () { var elapsed = Date.now() - moveStartTime; var progress = elapsed / moveDuration; if (progress >= 1) { player.y = 2732 / 2 - 250; player.inAir = false; player.doubleJump = false; player.hasRotated = false; // Reset rotation flag LK.clearInterval(moveInterval); } else { player.y = player.y - (player.y - (2732 / 2 - 250)) * progress; } }, 16); } else { player.hasRotated = false; // Reset rotation flag if not in air or double jump } }; // Add up event to reset rotation self.up = function (x, y, obj) { self.isPressed = false; // Reset pressed state self.scale.set(1); // Reset scale to original size if (!player.inAir && !player.doubleJump) { player.rotation += Math.PI / 2.25; // Rotate back 80 degrees clockwise } else if (player.inAir || player.doubleJump) { player.rotation += Math.PI / 2.25; // Rotate back 80 degrees clockwise } }; }); // Create a button top class var ButtonTop = Container.expand(function () { var self = Container.call(this); var buttonTopGraphics = self.attachAsset('BUTTON_TOP', { anchorX: 0.5, anchorY: 0.5 }); // Add down event to trigger jump self.down = function (x, y, obj) { if (self.isPressed) { return; } // Debounce: Ignore if already pressed self.isPressed = true; // Set pressed state LK.setTimeout(function () { self.isPressed = false; // Reset pressed state after a short delay }, 200); // 200ms debounce delay self.scale.set(0.9); // Add press effect by scaling down if (!player.doubleJump || player.inAir && !player.doubleJump) { if (player.inAir) { player.doubleJump = true; var doubleJumpDuration = 230; var doubleJumpStartTime = Date.now(); var doubleJumpInterval = LK.setInterval(function () { var elapsed = Date.now() - doubleJumpStartTime; var progress = elapsed / doubleJumpDuration; if (progress >= 1) { player.y = player.y - 300; player.rotation -= Math.PI * 2; player.inAir = true; LK.clearInterval(doubleJumpInterval); var fallDuration = 800; var fallStartTime = Date.now(); var fallInterval = LK.setInterval(function () { var fallElapsed = Date.now() - fallStartTime; var fallProgress = fallElapsed / fallDuration; if (fallProgress >= 1) { player.y = 2732 / 2 - 250; player.inAir = false; player.doubleJump = false; LK.clearInterval(fallInterval); } else { player.y = player.y - 200 * (1 - fallProgress); } }, 16); } else { player.y = player.y - 300 * progress; } }, 16); return; } player.inAir = true; player.doubleJump = false; player.lastY = player.y; // Update lastY immediately after jump initiation player.lastX = player.x; // Update lastX immediately after jump initiation player.lastY = player.y; // Update lastY immediately after jump initiation player.lastX = player.x; // Update lastX immediately after jump initiation var initialJumpDuration = 100; var initialJumpStartTime = Date.now(); var initialJumpInterval = LK.setInterval(function () { var elapsed = Date.now() - initialJumpStartTime; var progress = elapsed / initialJumpDuration; if (progress >= 1) { player.y = player.y - 300; player.inAir = true; LK.clearInterval(initialJumpInterval); var fallDuration = 800; var fallStartTime = Date.now(); var fallInterval = LK.setInterval(function () { var fallElapsed = Date.now() - fallStartTime; var fallProgress = fallElapsed / fallDuration; if (fallProgress >= 1) { player.y = 2732 / 2 - 250; player.inAir = false; LK.clearInterval(fallInterval); } else { player.y = player.y - 200 * (1 - fallProgress); } }, 16); } else { player.y = player.y - 300 * progress; } }, 16); } }; // Add up event to reset scale self.up = function (x, y, obj) { self.isPressed = false; // Reset pressed state self.scale.set(1); // Reset scale to original size }; }); // Create a player class var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('character', { anchorX: 0.5, anchorY: 0.5 }); // Initialize the inAir flag self.inAir = false; self.doubleJump = false; self.hasRotated = false; // Initialize rotation flag // Initialize lastY and lastX for tracking changes self.lastY = self.y; self.lastX = self.x; // Add boundary check to prevent player from moving off the top of the screen self.update = function () { if (self.y < 0) { self.y = 0; // Prevent moving off the top } }; }); /**** * Initialize Game ****/ // Add player to the game var game = new LK.Game({ backgroundColor: 0x12243b }); /**** * Game Code ****/ // Function to create Monetka image at a random height function createMonetka() { var monetka = game.addChild(LK.getAsset('Monetka', { anchorX: 0.5, anchorY: 0.5 })); monetka.x = 2057; // Center image horizontally monetka.y = Math.floor(Math.random() * (1650 - 1300 + 1)) + 1300; // Random height between 300 and 1000 monetka.rotation = Math.PI / 9; // Rotate image by 20 degrees clockwise var scaleDirection = 1; // 1 for increasing, -1 for decreasing var scaleSpeed = 0.01; // Speed of scaling monetka.update = function () { // Update the scale monetka.scale.x += scaleSpeed * scaleDirection; monetka.scale.y += scaleSpeed * scaleDirection; // Check if we need to change direction if (monetka.scale.x >= 1.2) { scaleDirection = -1; // Start decreasing } else if (monetka.scale.x <= 1) { scaleDirection = 1; // Start increasing } }; } // Create Monetka every 3 seconds var monetkaTimer = LK.setInterval(createMonetka, 3000); // Add ikonka button to the GUI overlay layer to make it static var ikonkaButton = LK.gui.topRight.addChild(LK.getAsset('ikonka', { anchorX: 0.5, anchorY: 0.5, x: -100, // Move 100 pixels to the left y: 120 // Move 100 pixels down })); // Create and display score text at the top center of the screen var scoreText = new Text2(LK.getScore().toString(), { size: 130, fill: 0xFFFFFF, fontWeight: 'bold', font: 'Arial' // Specify the desired font here }); scoreText.anchor.set(0.5, 0); // Center horizontally, top edge scoreText.y = 30; // Move score 50 pixels down LK.gui.top.addChild(scoreText); ikonkaButton.interactive = true; // Make ikonka interactive ikonkaButton.down = function (x, y, obj) { if (ikonkaButton.isPressed) { return; // Debounce: Ignore if already pressed } ikonkaButton.isPressed = true; // Set pressed state LK.setTimeout(function () { ikonkaButton.isPressed = false; // Reset pressed state after a short delay }, 200); // 200ms debounce delay // Toggle transparency on button press if (ikonkaButton.alpha === 1) { ikonkaButton.alpha = 0.5; // Set transparency to 50% buttonTop.x -= 1700; // Move buttonTop 100 pixels to the left buttonBot.x -= 1700; // Move buttonBot 100 pixels to the left } else { ikonkaButton.alpha = 1; // Reset transparency buttonTop.x += 1700; // Move buttonTop back to original position buttonBot.x += 1700; // Move buttonBot back to original position } ikonkaButton.isPressed = false; // Reset pressed state }; var oblako = game.addChild(LK.getAsset('Oblako', { anchorX: 0.5, anchorY: 0.5 })); oblako.x = 2248; // Position 'Oblako' in the middle of the right side of the screen oblako.y = Math.floor(Math.random() * (901 - 400)) + 400; // Random height between 200 and 700 oblako.rotation = Math.PI / 9; // Rotate 'Oblako' by 20 degrees clockwise oblako.alpha = 0.3; // Set transparency to 50% var otherImageSpeed = 20; // Initial speed for other images var speedIncreaseTimer = LK.setInterval(function () { otherImageSpeed += 0.2; // Increase speed by 1 every 5 seconds }, 7000); var oblakoInstances = []; // Array to track oblako instances var oblakoTimer = LK.setInterval(function () { var newOblako = game.addChild(LK.getAsset('Oblako', { anchorX: 0.5, anchorY: 0.5 })); var scaleFactor = Math.random() * (1 - 0.33) + 0.33; // Random scale factor between 0.33 and 1 newOblako.scale.set(scaleFactor); // Apply random scale newOblako.x = 2248; // Position 'Oblako' in the middle of the right side of the screen newOblako.y = Math.floor(Math.random() * (901 - 400)) + 400; // Random height between 200 and 700 newOblako.rotation = Math.PI / 9; // Rotate 'Oblako' by 20 degrees clockwise newOblako.alpha = 0.3; // Set transparency to 50% oblakoInstances.push(newOblako); // Add new oblako to the array }, 18000); // Create an array to store 'Dom' images // Define BLEND_MODES to fix the undefined variable error var BLEND_MODES = { NORMAL: 0 }; var domImages = []; // Create the first 'Dom' image after 2 seconds LK.setTimeout(function () { var newDom = game.addChild(LK.getAsset('Dom', { anchorX: 0.5, anchorY: 0.5 })); newDom.x = 2048 / 2 + 2170; // Center image horizontally newDom.y = 2732 / 2 + 450; // Center image vertically newDom.rotation = Math.PI / 9; // Rotate image by 20 degrees clockwise newDom.alpha = 0.2; // Set transparency to 20% newDom.blendMode = BLEND_MODES.NORMAL; // Ensure transparency does not sum up domImages.push(newDom); // Create subsequent 'Dom' images every 3 seconds var domTimer = LK.setInterval(function () { var newDom = game.addChild(LK.getAsset('Dom', { anchorX: 0.5, anchorY: 0.5 })); newDom.x = 2048 / 2 + 2170; // Center image horizontally newDom.y = 2732 / 2 + 450; // Center image vertically newDom.rotation = Math.PI / 9; // Rotate image by 20 degrees clockwise newDom.alpha = 0.2; // Set transparency to 20% newDom.blendMode = BLEND_MODES.NORMAL; // Ensure transparency does not sum up domImages.push(newDom); }, 12500); }, 2220); // Set a random interval between 4 to 8 seconds to create SUNDUK function randomSundukCreation() { var randomTime = Math.floor(Math.random() * (10000 - 4000 + 1)) + 4000; LK.setTimeout(function () { createSunduk(); randomSundukCreation(); // Call again for continuous random creation }, randomTime); } // Start the random SUNDUK creation randomSundukCreation(); // Function to create SUNDUK image function createSunduk() { var sunduk = game.addChild(LK.getAsset('Sunduk', { anchorX: 0.5, anchorY: 0.5 })); sunduk.x = 2090; // Center image horizontally sunduk.y = Math.floor(Math.random() * (2732 - 2332 + 1)) + 2332; // Random height between 2332 and 2732 sunduk.rotation = Math.PI / 9; // Rotate image by 20 degrees clockwise sunduk.alpha = 0.5; // Set transparency to 50% } // Function to create UFO image function createUfo() { var ufo = game.addChild(LK.getAsset('Ufo', { anchorX: 0.5, anchorY: 0.5 })); ufo.x = 2090; // Center image horizontally ufo.y = Math.floor(Math.random() * (2732 - 2332 + 1)) + 2332; // Random height between 2332 and 2732 ufo.rotation = Math.PI / 9; // Rotate image by 20 degrees clockwise ufo.alpha = 0.5; // Set transparency to 50% } // Create a new image 123 every 3 seconds on the right side of the screen var image123Timer = LK.setInterval(function () { var newImage123 = game.addChild(LK.getAsset('123', { anchorX: 0.5, anchorY: 0.5 })); newImage123.x = 2048 + newImage123.width / 2; // Position on the right side of the screen newImage123.y = 2732 / 2 + 1290; // Move image down by 600 pixels newImage123.rotation = Math.PI / 9; // Rotate image by 20 degrees clockwise }, 1400); LK.setTimeout(function () { vzriv = game.addChild(LK.getAsset('Vzriv', { anchorX: 0.5, anchorY: 0.5 })); vzriv.x = vzriv.width / 2 + 90; // Position Vzriv at the left center of the screen vzriv.y = 2732 / 2 - 280; // Center Vzriv vertically game.setChildIndex(player, game.children.length - 1); // Move player to the top game.setChildIndex(buttonBot, game.children.length - 1); // Ensure buttonBot is on top game.setChildIndex(buttonTop, game.children.length - 1); // Ensure buttonTop is on top // Remove Vzriv 2.1 seconds after the game starts LK.setTimeout(function () { vzriv.destroy(); }, 2100); }, 1860); // Add image 123 to the center of the screen var image123 = game.addChild(LK.getAsset('123', { anchorX: 0.5, anchorY: 0.5 })); image123.x = 2048 / 2; // Center image horizontally image123.y = 2732 / 2 + 280; // Move image 123 down by 280 pixels image123.rotation = Math.PI / 9; // Rotate image 123 by 20 degrees clockwise // Function to randomly display one of the Prep images, PrepF1, or PrepF2 every 5 seconds var prepImages = ['Prep1', 'Prep2', 'Prep3', 'Prep4', 'Prep5', 'Prep6']; var prepFImages = ['PrepF1', 'PrepF2', 'Prepf3']; var prepInterval = 2500; var prepCounter = 0; // Counter to track the number of images displayed var prepRandomTimer = LK.setInterval(function () { var allImages; if (prepCounter < 5) { allImages = prepImages; // First 5 images are always from prepImages } else { allImages = Math.random() < 0.5 ? prepImages : prepFImages; } var randomIndex = Math.floor(Math.random() * allImages.length); var prep = game.addChild(LK.getAsset(allImages[randomIndex], { anchorX: 0.5, anchorY: 0.5 })); if (prepFImages.includes(allImages[randomIndex])) { // Set specific positions for PrepF1 and PrepF2 prep.x = 2048 + 100; // Original position for PrepF images prep.y = 2732 / 2 + 105; // Original position for PrepF images } else { // Set positions for other Prep images prep.x = 2048 + 100; // Center image horizontally prep.y = 2732 / 2 + 430; // Center image vertically } prep.rotation = Math.PI / 9; prepCounter++; // Increment the counter after each image is displayed }, prepInterval); var prepIntervalDecreaseTimer = LK.setInterval(function () { prepInterval = Math.max(800, prepInterval - 200); LK.clearInterval(prepRandomTimer); prepRandomTimer = LK.setInterval(function () { var allImages = Math.random() < 0.5 ? prepImages : prepFImages; var randomIndex = Math.floor(Math.random() * allImages.length); var prep = game.addChild(LK.getAsset(allImages[randomIndex], { anchorX: 0.5, anchorY: 0.5 })); if (prepFImages.includes(allImages[randomIndex])) { prep.x = 2048 + 100; prep.y = 2732 / 2 + 105; } else { prep.x = 2048 + 100; prep.y = 2732 / 2 + 430; } prep.rotation = Math.PI / 9; }, prepInterval); }, 5000); // Add 'Dom' image to the center of the screen var domImage = game.addChild(LK.getAsset('Dom', { anchorX: 0.5, anchorY: 0.5 })); domImage.x = 2048 / 2 + 70; // Center image horizontally domImage.y = 2732 / 2 - 305; // Center image vertically domImage.rotation = Math.PI / 9; // Rotate image by 20 degrees clockwise domImage.alpha = 0.2; // Set transparency to 50% domImage.blendMode = BLEND_MODES.NORMAL; // Ensure transparency does not sum up // Add a glow effect to the 'Dom' image var glowDuration = 1000; var glowDirection = 1; var glowStartTime = Date.now(); var glowInterval = LK.setInterval(function () { var elapsed = Date.now() - glowStartTime; var progress = elapsed % glowDuration / glowDuration; if (progress >= 1) { glowDirection *= -1; } domImage.alpha = 0.2 + 0.8 * progress * glowDirection; }, 16); // Add image 'niz' to the bottom of the screen var niz = game.addChild(LK.getAsset('NIZ', { anchorX: 0.5, // Center horizontally anchorY: 0.5 // Align to the bottom })); niz.x = 2048 / 2 - 150; // Center image horizontally niz.y = 2732 - 200; // Position image at the bottom of the screen niz.rotation = Math.PI / 9; game.setChildIndex(niz, 0); // Move 'niz' to the back layer // Function to create ALMAZ image function createAlmaz() { var almaz = game.addChild(LK.getAsset('almaz', { anchorX: 0.5, anchorY: 0.5 })); almaz.x = 2090; // Center image horizontally almaz.y = Math.floor(Math.random() * (2732 - 2332 + 1)) + 2332; // Random height between 2332 and 2732 almaz.rotation = Math.PI / 9; // Rotate image by 20 degrees clockwise almaz.alpha = 0.7; // Set transparency to 70% } // Function to create SKELET image function createSkelet() { var skelet = game.addChild(LK.getAsset('Skelet', { anchorX: 0.5, anchorY: 0.5 })); skelet.x = 2090; // Center image horizontally skelet.y = Math.floor(Math.random() * (2732 - 2332 + 1)) + 2332; // Random height between 2332 and 2732 skelet.rotation = Math.PI / 9; // Rotate image by 20 degrees clockwise skelet.alpha = 0.5; // Set transparency to 50% } // Set a random interval between 4 to 8 seconds to create ALMAZ function randomAlmazCreation() { var randomTime = Math.floor(Math.random() * (10000 - 4000 + 1)) + 4000; LK.setTimeout(function () { createAlmaz(); randomAlmazCreation(); // Call again for continuous random creation }, randomTime); } // Start the random ALMAZ creation randomAlmazCreation(); // Set a random interval between 4 to 8 seconds to create SKELET function randomSkeletCreation() { var randomTime = Math.floor(Math.random() * (10000 - 4000 + 1)) + 4000; LK.setTimeout(function () { createSkelet(); randomSkeletCreation(); // Call again for continuous random creation }, randomTime); } // Start the random SKELET creation randomSkeletCreation(); // Set a random interval between 4 to 8 seconds to create UFO function randomUfoCreation() { var randomTime = Math.floor(Math.random() * (10000 - 4000 + 1)) + 4000; LK.setTimeout(function () { createUfo(); randomUfoCreation(); // Call again for continuous random creation }, randomTime); } // Start the random UFO creation randomUfoCreation(); // Create 'niz' every 2 seconds, except for the first instance var nizTimer = LK.setInterval(function () { var newNiz = game.addChild(LK.getAsset('NIZ', { anchorX: 0.5, anchorY: 0.5 })); newNiz.x = 2048 / 2 + 2000; newNiz.y = 2732 + 580; newNiz.rotation = Math.PI / 9; game.setChildIndex(newNiz, 0); }, 1400); // Add player to the game var ball = game.addChild(LK.getAsset('Ball', { anchorX: 0.5, anchorY: 0.5 })); var uskorenie = game.addChild(LK.getAsset('Uskorenie', { anchorX: 0.5, anchorY: 0.5 })); ball.x = ball.width / 2 - 100; // Shift ball 100 pixels to the left ball.y = 2732 / 2 - 300; // Center ball vertically LK.setTimeout(function () { var moveDuration = 360; var moveStartTime = Date.now(); var moveInterval = LK.setInterval(function () { var elapsed = Date.now() - moveStartTime; var progress = elapsed / moveDuration; if (progress >= 1) { ball.x += 400; ball.destroy(); // Remove the ball after it moves 400 pixels LK.clearInterval(moveInterval); } else { ball.x += 400 * progress; } }, 16); }, 1500); game.down = function (x, y, obj) {}; var player = game.addChild(new Player()); player.x = player.width / 2 + 200; // Position player 200 units to the right of the center left of the screen player.y = 2732 / 2 - 250; // Move player 150 units down player.rotation = Math.PI / 12; // Set initial rotation to 15 degrees clockwise // Add background to the game var background = game.addChild(LK.getAsset('background_1', { anchorX: 0.5, anchorY: 0.5 })); game.setChildIndex(background, 0); // Move background to the bottom background.x = 2048 / 2; // Center background horizontally background.y = 2732 / 2 + 150; // Move background down by 550 pixels background.rotation = Math.PI / 9; // Rotate background by 20 degrees clockwise // Move background_1 towards its left side var backgroundCounter = 0; var backgroundTimer = LK.setInterval(function () { var newBackground = game.addChild(LK.getAsset('background_1', { anchorX: 0.5, anchorY: 0.5 })); newBackground.x = 2048 / 2 + 2500; // Move background 2048 pixels to the right newBackground.y = 2732 / 2 + 1060; // Move background down by 1100 pixels newBackground.rotation = Math.PI / 9; // Rotate background by 20 degrees clockwise backgroundCounter++; if (backgroundCounter === 1) { LK.clearInterval(backgroundTimer); backgroundTimer = LK.setInterval(function () { var newBackground = game.addChild(LK.getAsset('background_1', { anchorX: 0.5, anchorY: 0.5 })); newBackground.x = 2048 / 2 + 2500; // Move background 2048 pixels to the right newBackground.y = 2732 / 2 + 1060; // Move background down by 1100 pixels newBackground.rotation = Math.PI / 9; // Rotate background by 20 degrees clockwise }, 1400); } else if (backgroundCounter === 2) { LK.clearInterval(backgroundTimer); backgroundTimer = LK.setInterval(function () { var newBackground = game.addChild(LK.getAsset('background_1', { anchorX: 0.5, anchorY: 0.5 })); newBackground.x = 2048 / 2 + 2500; // Move background 2048 pixels to the right newBackground.y = 2732 / 2 + 1060; // Move background down by 1100 pixels newBackground.rotation = Math.PI / 9; // Rotate background by 20 degrees clockwise }, 800); } }, 400); var gameStarted = false; var scoreIncrementTimer = LK.setInterval(function () { if (gameStarted) { LK.setScore(LK.getScore() + 1); scoreText.setText(LK.getScore().toString()); } }, 1500); var gameStartTimer = LK.setTimeout(function () { gameStarted = true; }, 2000); // Add BUTTON_TOP to the game var buttonTop = game.addChild(new ButtonTop()); buttonTop.x = 2048 - buttonTop.width / 2 - 50; // Position buttonTop 50 units to the left of the right edge of the screen buttonTop.y = 2732 - buttonTop.height / 2 - 350; // Position buttonTop 370 units above the bottom edge of the screen // Add BUTTON_BOT to the game var buttonBot = game.addChild(new ButtonBot()); buttonBot.x = 2048 - buttonBot.width / 2 - 50; // Position buttonBot 50 units to the left of the right edge of the screen buttonBot.y = 2732 - buttonBot.height / 2 - 20; // Position buttonBot 20 units above the bottom edge of the screen game.update = function () { if (!gameStarted) { buttonTop.interactive = false; buttonBot.interactive = false; return; } buttonTop.interactive = true; buttonBot.interactive = true; // Update lastY and lastX for player player.lastY = player.y; player.lastX = player.x; game.children.forEach(function (child) { if (child !== player && child !== buttonTop && child !== buttonBot && child !== uskorenie) { // Check for intersection with prep or prepf objects if ((prepImages.includes(child.assetId) || prepFImages.includes(child.assetId)) && player.intersects(child)) { LK.setScore(LK.getScore() + 1); // Increment score scoreText.setText(LK.getScore().toString()); // Update score display } if (child === domImage) { if (child.lastX === undefined) { child.lastX = child.x; } if (child.lastY === undefined) { child.lastY = child.y; } child.x -= 3 * Math.cos(child.rotation); // Set speed for domImage child.y -= 3 * Math.sin(child.rotation); // Set speed for domImage child.lastX = child.x; child.lastY = child.y; } else if (domImages.includes(child)) { child.x -= 3 * Math.cos(child.rotation); // Set speed for newDom images child.y -= 3 * Math.sin(child.rotation); // Set speed for newDom images } else { if (child === oblako || oblakoInstances.includes(child)) { child.x -= 1 * Math.cos(child.rotation); // Set speed for 'Oblako' child.y -= 1 * Math.sin(child.rotation); // Set speed for 'Oblako' } else { child.x -= otherImageSpeed * Math.cos(child.rotation); // Apply increased speed for other images child.y -= otherImageSpeed * Math.sin(child.rotation); // Apply increased speed for other images } } if (child.y + child.height / 2 < 0 || child.x - child.width / 2 > 2048 || child.y - child.height / 2 > 2732) { // If the image is completely off the screen child.destroy(); // Remove the image } } game.setChildIndex(player, game.children.length - 1); // Move player to the top game.setChildIndex(buttonBot, game.children.length - 1); // Ensure buttonBot is on top game.setChildIndex(buttonTop, game.children.length - 1); // Ensure buttonTop is on top }); // Add shaking effect to the player if (gameStarted) { if (LK.ticks < 130) { // Strong shake for the first second (assuming 60 FPS) player.x = player.lastX + Math.sin(LK.ticks / 0.5) * 10; player.y = player.lastY + Math.cos(LK.ticks / 0.5) * 10; } else { player.x = player.lastX + Math.sin(LK.ticks / 0.5) * 3; player.y = player.lastY + Math.cos(LK.ticks / 0.5) * 3; } if (vzriv && vzriv.parent) { vzriv.destroy(); } } };
===================================================================
--- original.js
+++ change.js
@@ -174,8 +174,14 @@
self.hasRotated = false; // Initialize rotation flag
// Initialize lastY and lastX for tracking changes
self.lastY = self.y;
self.lastX = self.x;
+ // Add boundary check to prevent player from moving off the top of the screen
+ self.update = function () {
+ if (self.y < 0) {
+ self.y = 0; // Prevent moving off the top
+ }
+ };
});
/****
* Initialize Game
создать мультяшного сидячего персонажа. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
snowball. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
белая стрелочка вниз. Ровная. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Алмаз, мультяшный. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Скелет дракона. Мультяшный. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Ufo (летающая тарелка). Мультяшная. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Пингвин в снегу. Мультяшный. Головой в снегу. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Мультяшный рыбак зимой сидит рыбачит. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Человек летит на параплане. Мультяшный. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Куст в снегу мультяшный. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Дирижабль, мультяшный. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Рука белая. Иконка. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Монетка золотая мультяшная. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
снежинка. мультяшная. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
text: New Record! Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows