Code edit (3 edits merged)
Please save this source code
User prompt
первый obstacle создается с делеем 3 секунды
Code edit (2 edits merged)
Please save this source code
User prompt
(LK.ticks % 300 === 0) уменьшается на 50 каждые 10 секунд
Code edit (9 edits merged)
Please save this source code
User prompt
obstacle создаются рандомно раз в 200
Code edit (1 edits merged)
Please save this source code
User prompt
Создавать один рандомный obstacle каждые 300
User prompt
Из массива obstacle сделать рандомное создание одного из obstacle, но оставить всем obstacle свое положение (не объединять в одно место)
User prompt
Создавать каждые 300 одного из obstacle
User prompt
Из массива obstacle сделать рандомное создание одного из obstacle
User prompt
Please fix the bug: 'ReferenceError: Can't find variable: obstacle1' in or related to this line: 'if (child === obstacle1 && player.intersects(obstacle1) || child === obstacle2 && player.intersects(obstacle2) || child === obstacle3 && player.intersects(obstacle3) || child === obstacle4 && player.intersects(obstacle4) || child === obstacle5 && player.intersects(obstacle5) || child === obstacle6 && player.intersects(obstacle6) || child === obstacle7 && player.intersects(obstacle7) || child === obstacle8 && player.intersects(obstacle8) || child === obstacle9 && player.intersects(obstacle9)) {' Line Number: 599
User prompt
добавить все obstacle в один массив
User prompt
не работают столкновения с obstacle, исправь
User prompt
Please fix the bug: 'ReferenceError: Can't find variable: obstacle1' in or related to this line: 'if (child === obstacle1 && player.intersects(obstacle1) || child === obstacle2 && player.intersects(obstacle2) || child === obstacle3 && player.intersects(obstacle3) || child === obstacle4 && player.intersects(obstacle4) || child === obstacle5 && player.intersects(obstacle5) || child === obstacle6 && player.intersects(obstacle6) || child === obstacle7 && player.intersects(obstacle7) || child === obstacle8 && player.intersects(obstacle8) || child === obstacle9 && player.intersects(obstacle9)) {' Line Number: 630
User prompt
каждый obstacle создается поочереди в рандомном порядке, начальное положение каждого obstacle не изменяется
User prompt
можешь исправить?
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'ReferenceError: obstacle9 is not defined' in or related to this line: 'if (child === obstacle1 && player.intersects(obstacle1) || child === obstacle2 && player.intersects(obstacle2) || child === obstacle3 && player.intersects(obstacle3) || child === obstacle4 && player.intersects(obstacle4) || child === obstacle5 && player.intersects(obstacle5) || child === obstacle6 && player.intersects(obstacle6) || child === obstacle7 && player.intersects(obstacle7) || child === obstacle8 && player.intersects(obstacle8) || child === obstacle9 && player.intersects(obstacle9)) {' Line Number: 741
User prompt
obstacle9 создается каждые 9000 дистанции
User prompt
Please fix the bug: 'ReferenceError: obstacle1 is not defined' in or related to this line: 'if (child === obstacle1 && player.intersects(obstacle1) || child === obstacle2 && player.intersects(obstacle2) || child === obstacle3 && player.intersects(obstacle3) || child === obstacle4 && player.intersects(obstacle4) || child === obstacle5 && player.intersects(obstacle5) || child === obstacle6 && player.intersects(obstacle6) || child === obstacle7 && player.intersects(obstacle7) || child === obstacle8 && player.intersects(obstacle8) || child === obstacle9 && player.intersects(obstacle9)) {' Line Number: 592
User prompt
obstacle1,obstacle2,obstacle3,obstacle4,obstacle5,obstacle6,obstacle7,obstacle8,obstacle9 создаются в случайной очередности с дистанцией между ними 3000
Code edit (2 edits merged)
Please save this source code
User prompt
добавить obstacle9 аналогично obstacle8
User prompt
Добавить obstacle8 аналогично obstacle7
/**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
/**** 
* Classes
****/ 
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
		}, 20); // 20ms 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) {
			tween(player, {
				y: 2732 / 2 - 250
			}, {
				duration: 100,
				onFinish: function onFinish() {
					player.inAir = false;
					player.doubleJump = false;
					player.y = 2732 / 2 - 250;
				}
			});
		}
		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
			}
			tween(player, {
				y: 2732 / 2 - 250
			}, {
				duration: 100,
				onFinish: function onFinish() {
					player.inAir = false;
					player.doubleJump = false;
					player.y = 2732 / 2 - 250;
					player.hasRotated = false; // Reset rotation flag
				}
			});
		} 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;
				tween(player, {
					y: player.y - 400,
					rotation: player.rotation - Math.PI * 2
				}, {
					duration: 230,
					easing: tween.easeInOut,
					onFinish: function onFinish() {
						player.inAir = true; // Allow another jump
						tween(player, {
							y: 2732 / 2 - 250
						}, {
							duration: 800,
							onFinish: function onFinish() {
								player.inAir = false;
								player.doubleJump = false;
								player.y = 2732 / 2 - 250;
							}
						});
					}
				});
				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
			tween(player, {
				y: player.y - 400
			}, {
				duration: 100,
				// Reduced duration to allow quicker second jump
				onFinish: function onFinish() {
					player.inAir = true; // Allow another jump
					tween(player, {
						y: 2732 / 2 - 250
					}, {
						duration: 800,
						onFinish: function onFinish() {
							player.inAir = false;
						}
					});
				}
			});
		}
	};
	// 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;
});
/**** 
* Initialize Game
****/ 
// Add player to the game
var game = new LK.Game({
	backgroundColor: 0x12243b
});
/**** 
* Game Code
****/ 
var obstacles = [];
var obstacleInterval = 300; // Initial interval for obstacle creation
var intervalDecreaseTimer = LK.setInterval(function () {
	if (obstacleInterval > 50) {
		obstacleInterval -= 50; // Decrease interval by 50 every 10 seconds
	}
}, 10000);
function createObstacle(assetId, x, y, rotation) {
	var obstacle = game.addChild(LK.getAsset(assetId, {
		anchorX: 0.5,
		anchorY: 0.5
	}));
	obstacle.x = x;
	obstacle.y = y;
	obstacle.rotation = rotation;
	obstacles.push(obstacle);
}
var obstaclePositions = [{
	assetId: 'obstacle1',
	x: 2140,
	y: 2732 / 2 + 430,
	rotation: Math.PI / 9
}, {
	assetId: 'obstacle2',
	x: 2140,
	y: 2732 / 2 + 450,
	rotation: Math.PI / 9
}, {
	assetId: 'obstacle3',
	x: 2140,
	y: 2732 / 2 + 420,
	rotation: Math.PI / 9
}, {
	assetId: 'obstacle4',
	x: 2140,
	y: 2732 / 2 + 430,
	rotation: Math.PI / 9
}, {
	assetId: 'obstacle5',
	x: 2140,
	y: 2732 / 2 + 440,
	rotation: Math.PI / 9
}, {
	assetId: 'obstacle6',
	x: 2140,
	y: 2732 / 2 + 450,
	rotation: Math.PI / 9
}, {
	assetId: 'obstacle7',
	x: 2140,
	y: 2732 / 2 + 100,
	rotation: Math.PI / 9
}, {
	assetId: 'obstacle8',
	x: 2140,
	y: 2732 / 2,
	rotation: Math.PI / 9
}, {
	assetId: 'obstacle9',
	x: 2140,
	y: 2732 / 2 + 100,
	rotation: Math.PI / 9
}];
function createRandomObstacle() {
	var randomIndex = Math.floor(Math.random() * obstaclePositions.length);
	var selectedObstacle = obstaclePositions[randomIndex];
	createObstacle(selectedObstacle.assetId, selectedObstacle.x, selectedObstacle.y, selectedObstacle.rotation);
}
LK.setTimeout(createRandomObstacle, 2100); // Delay first obstacle creation by 3 seconds
var monetka; // Declare monetka variable
// Function to create Monetka image at a random height
function createMonetka() {
	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
// 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
tween(domImage, {
	alpha: 0.2
}, {
	duration: 1000,
	yoyo: true,
	repeat: Infinity
});
// 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);
var ball = game.addChild(LK.getAsset('Ball', {
	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 () {
	tween(ball, {
		x: ball.x + 400
	}, {
		duration: 360,
		// Reduced duration to double the speed 
		easing: tween.linear,
		onFinish: function onFinish() {
			ball.destroy(); // Remove the ball after it moves 200 pixels 
		}
	});
}, 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
		}, 2000);
	} 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
		}, 1800);
	}
}, 400);
var gameStarted = false;
// Removed score increment from timer
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;
	// Create a random obstacle every 200 ticks
	if (LK.ticks % obstacleInterval === 0) {
		createRandomObstacle();
	}
	game.children.forEach(function (child) {
		if (child !== player && child !== buttonTop && child !== buttonBot) {
			if (child === monetka && player.intersects(monetka)) {
				monetka.destroy();
				LK.setScore(LK.getScore() + 1); // Increase score by 1
				scoreText.setText(LK.getScore().toString()); // Update score display
				return;
			}
			if (obstacles.includes(child) && player.intersects(child)) {
				LK.showGameOver(); // Trigger game over when player collides with any obstacle
				return;
			}
			if (child.lastWasIntersecting === undefined) {
				child.lastWasIntersecting = false;
			}
			if (child.lastX === undefined) {
				child.lastX = child.x;
			}
			if (child.lastY === undefined) {
				child.lastY = child.y;
			}
			if (child === domImage) {
				if (child.lastX === undefined) {
					child.lastX = child.x;
				}
				if (child.lastY === undefined) {
					child.lastY = child.y;
				}
				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
@@ -234,9 +234,9 @@
 	var randomIndex = Math.floor(Math.random() * obstaclePositions.length);
 	var selectedObstacle = obstaclePositions[randomIndex];
 	createObstacle(selectedObstacle.assetId, selectedObstacle.x, selectedObstacle.y, selectedObstacle.rotation);
 }
-LK.setTimeout(createRandomObstacle, 3000); // Delay first obstacle creation by 3 seconds
+LK.setTimeout(createRandomObstacle, 2100); // Delay first obstacle creation by 3 seconds
 var monetka; // Declare monetka variable
 // Function to create Monetka image at a random height
 function createMonetka() {
 	monetka = game.addChild(LK.getAsset('Monetka', {
:quality(85)/https://cdn.frvr.ai/679ba4d2bb1b8a48e8900218.png%3F3) 
 создать мультяшного сидячего персонажа. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/679fb071175b7057c0789edd.png%3F3) 
 snowball. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/679fb1dc175b7057c0789f25.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/67a5116bb59368cad63aa1a7.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/67ba498838fe57e0d4bf9418.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/67bac1fd38fe57e0d4bf958b.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/67bb79bc3eba89a2e6e98a78.png%3F3) 
 белая стрелочка вниз. Ровная. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/67bb7bbe3eba89a2e6e98a9b.png%3F3) 
 Алмаз, мультяшный. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/67bb8b864f87c1b12f5b5d72.png%3F3) 
 Скелет дракона. Мультяшный. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/67bb8dc44f87c1b12f5b5dc6.png%3F3) 
 Ufo (летающая тарелка). Мультяшная. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/67bc07872bf96c1368e47508.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/67bc7f35efe262753dfd6939.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/67bcb446efe262753dfd6af8.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/67bcba45efe262753dfd6b5e.png%3F3) 
 Пингвин в снегу. Мультяшный. Головой в снегу. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/67bcbc5fefe262753dfd6b84.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/67bcbef7efe262753dfd6bc6.png%3F3) 
 Мультяшный рыбак зимой сидит рыбачит. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/67bcbfd1efe262753dfd6bd8.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/67bcc53cefe262753dfd6c15.png%3F3) 
 Человек летит на параплане. Мультяшный. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/67bd76a3b3c92d3f541dbf2b.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/67bd7fefb3c92d3f541dbf91.png%3F3) 
 Куст в снегу мультяшный. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/67bdbdd4be14ef11dba0e921.png%3F3) 
 Дирижабль, мультяшный. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/67be05da30bad129e238ae45.png%3F3) 
 Рука белая. Иконка. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/67be24bb30bad129e238afa5.png%3F3) 
 Монетка золотая мультяшная. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/67c32772e3ef98e836e20741.png%3F3) 
 снежинка. мультяшная. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/67c33423d2a8b83fd2aa1635.png%3F3) 
 text: New Record! Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows