/**** 
* Classes
****/ 
//<Assets used in the game will automatically appear here>
// Car class
var Car = Container.expand(function () {
	var self = Container.call(this);
	var carGraphics = self.attachAsset('car', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.speed = 5;
	self.direction = 0; // 0: straight, 1: left, 2: right
	self.update = function () {
		if (self.direction === 1) {
			self.rotation -= 0.05;
		} else if (self.direction === 2) {
			self.rotation += 0.05;
		}
		var newX = self.x + self.speed * Math.cos(self.rotation);
		var newY = self.y + self.speed * Math.sin(self.rotation);
		// Check if the new position is within the game area
		if (newX >= 0 && newX <= 2048 && newY >= 0 && newY <= 2732) {
			self.x = newX;
			self.y = newY;
		}
	};
	self.turnLeft = function () {
		self.direction = 1;
	};
	self.turnRight = function () {
		self.direction = 2;
	};
	self.straighten = function () {
		self.direction = 0;
	};
});
// Enemy class
var Enemy = Container.expand(function () {
	var self = Container.call(this);
	var enemyGraphics = self.attachAsset('enemy', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.speed = 2;
	self.update = function () {
		// Randomly change direction
		if (Math.random() < 0.01) {
			self.speedX = (Math.random() - 0.5) * 10;
			self.speedY = (Math.random() - 0.5) * 10;
		}
		// Move in a random direction
		self.x += self.speedX;
		self.y += self.speedY;
		// Keep within game area and bounce off the walls
		if (self.x < 0) {
			self.x = 0;
			self.speedX = -self.speedX;
		}
		if (self.x > 2048) {
			self.x = 2048;
			self.speedX = -self.speedX;
		}
		if (self.y < 0) {
			self.y = 0;
			self.speedY = -self.speedY;
		}
		if (self.y > 2732) {
			self.y = 2732;
			self.speedY = -self.speedY;
		}
		// Check if the enemy intersects with any poop
		for (var i = 0; i < spirals.length; i++) {
			if (spirals[i] instanceof Poop && self.intersects(spirals[i])) {
				// Remove the poop from the game
				spirals[i].destroy();
				spirals.splice(i, 1);
				// Decrease player lives by 1
				playerLives -= 1;
				livesTxt.setText('Lives: ' + playerLives); // Update the displayed lives
				// Increase the speed of the enemy
				self.speed += 0.1;
				// End the game if the player's lives reach zero
				if (playerLives <= 0) {
					LK.effects.flashScreen(0xff0000, 1000);
					LK.showGameOver();
				}
			}
		}
	};
});
// Life class
var Life = Container.expand(function () {
	var self = Container.call(this);
	var lifeGraphics = self.attachAsset('life', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.reposition = function () {
		self.x = Math.random() * 2048;
		self.y = Math.random() * 2732;
	};
});
// Poop class
var Poop = Container.expand(function () {
	var self = Container.call(this);
	var poopGraphics = self.attachAsset('poop', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.reposition = function () {
		self.x = Math.random();
		self.y = Math.random();
	};
});
// Spiral class
var Spiral = Container.expand(function () {
	var self = Container.call(this);
	self.radius = 100;
	self.angle = 0;
	self.speed = 0.01;
	self.update = function () {
		self.angle += self.speed;
		self.x = 2048 / 2 + self.radius * Math.cos(self.angle);
		self.y = 2732 / 2 + self.radius * Math.sin(self.angle);
		if (self.y > 2732) {
			self.destroy();
		}
	};
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x000000 //Init game with black background
});
/**** 
* Game Code
****/ 
var road = game.addChild(LK.getAsset('road', {
	anchorX: 0.5,
	anchorY: 0.5,
	x: 2048 / 2,
	y: 2732 / 2
}));
// Initialize score and lives variables
var playerScore = 100;
var playerLives = 10;
var scoreTxt = new Text2('0', {
	size: 150,
	fill: "#0000FF" // Blue color
});
scoreTxt.anchor.set(0, 0); // Sets anchor to the left of the top edge of the text.
LK.gui.topLeft.addChild(scoreTxt); // Add the score text to the GUI overlay at the top left of the screen.
// Initialize and display player lives
var livesTxt = new Text2('10', {
	size: 150,
	fill: "#FF0000" // Red color
});
livesTxt.anchor.set(1, 0); // Sets anchor to the right of the top edge of the text.
LK.gui.topRight.addChild(livesTxt); // Add the lives text to the GUI overlay at the top right of the screen.
var enemyScore = 0;
// Initialize variables
var car = new Car();
car.x = 2048 / 2;
car.y = 2732 / 2;
game.addChild(car);
var spirals = [];
var enemies = [];
for (var i = 0; i < 3; i++) {
	var enemy = new Enemy();
	enemy.x = Math.random() * 2048;
	enemy.y = 2732 / 2 + 100;
	enemies.push(enemy);
	game.addChild(enemy);
}
// Handle touch events
game.down = function (x, y, obj) {
	if (x < 2048 / 2) {
		car.turnLeft();
	} else {
		car.turnRight();
	}
};
game.up = function (x, y, obj) {
	car.straighten();
};
// Update game state
game.update = function () {
	car.update();
	// Create spirals and poops
	if (LK.ticks % 60 === 0) {
		var spiral = new Spiral();
		spiral.x = 2048 / 2;
		spiral.y = -100;
		spirals.push(spiral);
		game.addChild(spiral);
		var poopCount = spirals.filter(function (spiral) {
			return spiral instanceof Poop;
		}).length;
		if (poopCount < 3) {
			var poop = new Poop();
			poop.x = 2048;
			poop.y = 2732 / 2;
			spirals.push(poop);
			game.addChild(poop);
		}
	}
	// Add life instances to the game
	if (LK.ticks % 600 === 0) {
		// every 10 seconds
		var life = new Life();
		life.reposition();
		spirals.push(life);
		game.addChild(life);
		// Make life instances blink before disappearing
		LK.setTimeout(function () {
			var blinkInterval = LK.setInterval(function () {
				life.visible = !life.visible;
			}, 200);
			LK.setTimeout(function () {
				LK.clearInterval(blinkInterval);
				var index = spirals.indexOf(life);
				if (index !== -1) {
					spirals.splice(index, 1);
					life.destroy();
				}
			}, 1000);
		}, 2000);
	}
	// Update spirals, poops, lives and enemies
	for (var i = spirals.length - 1; i >= 0; i--) {
		if (spirals[i] instanceof Spiral || spirals[i] instanceof Life) {
			if (typeof spirals[i].update === 'function') {
				spirals[i].update();
			}
		}
		if (car.intersects(spirals[i])) {
			if (spirals[i] instanceof Poop) {
				if (car.intersects(spirals[i])) {
					spirals[i].reposition();
					spirals[i].x = Math.random() * 2048;
					spirals[i].y = Math.random() * 2732;
					playerScore += 100; // Increase player score by 100 when poop is collected
					LK.setScore(playerScore); // Update the displayed score
					scoreTxt.setText(LK.getScore()); // Update the score text
				} else if (enemies.some(function (enemy) {
					return enemy.intersects(spirals[i]);
				})) {
					spirals[i].reposition();
					spirals[i].x = Math.random() * 2048;
					spirals[i].y = Math.random() * 2732;
					playerLives -= 1; // Decrease player lives by 1 when enemy collects poop
					livesTxt.setText('Lives: ' + playerLives); // Update the displayed lives
					// Make the player's car blink red when it takes damage
					LK.effects.flashObject(car, 0xff0000, 1000);
				}
			} else if (spirals[i] instanceof Life) {
				if (car.intersects(spirals[i])) {
					spirals[i].destroy();
					spirals.splice(i, 1);
					playerLives += 1; // Increase player lives by 1 when life is collected
					livesTxt.setText('Lives: ' + playerLives); // Update the displayed lives
				}
			} else {
				LK.effects.flashScreen(0xff0000, 1000);
				LK.showGameOver();
			}
		}
	}
	// Update enemies
	for (var i = 0; i < enemies.length; i++) {
		enemies[i].update();
	}
	// Make the player's car blink red when player lives are less than 3
	if (playerLives < 3) {
		LK.effects.flashObject(car, 0xff0000, 1000);
	}
	// End the game if the player's lives reach zero
	if (playerLives <= 0) {
		LK.effects.flashScreen(0xff0000, 1000);
		LK.showGameOver();
	}
}; /**** 
* Classes
****/ 
//<Assets used in the game will automatically appear here>
// Car class
var Car = Container.expand(function () {
	var self = Container.call(this);
	var carGraphics = self.attachAsset('car', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.speed = 5;
	self.direction = 0; // 0: straight, 1: left, 2: right
	self.update = function () {
		if (self.direction === 1) {
			self.rotation -= 0.05;
		} else if (self.direction === 2) {
			self.rotation += 0.05;
		}
		var newX = self.x + self.speed * Math.cos(self.rotation);
		var newY = self.y + self.speed * Math.sin(self.rotation);
		// Check if the new position is within the game area
		if (newX >= 0 && newX <= 2048 && newY >= 0 && newY <= 2732) {
			self.x = newX;
			self.y = newY;
		}
	};
	self.turnLeft = function () {
		self.direction = 1;
	};
	self.turnRight = function () {
		self.direction = 2;
	};
	self.straighten = function () {
		self.direction = 0;
	};
});
// Enemy class
var Enemy = Container.expand(function () {
	var self = Container.call(this);
	var enemyGraphics = self.attachAsset('enemy', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.speed = 2;
	self.update = function () {
		// Randomly change direction
		if (Math.random() < 0.01) {
			self.speedX = (Math.random() - 0.5) * 10;
			self.speedY = (Math.random() - 0.5) * 10;
		}
		// Move in a random direction
		self.x += self.speedX;
		self.y += self.speedY;
		// Keep within game area and bounce off the walls
		if (self.x < 0) {
			self.x = 0;
			self.speedX = -self.speedX;
		}
		if (self.x > 2048) {
			self.x = 2048;
			self.speedX = -self.speedX;
		}
		if (self.y < 0) {
			self.y = 0;
			self.speedY = -self.speedY;
		}
		if (self.y > 2732) {
			self.y = 2732;
			self.speedY = -self.speedY;
		}
		// Check if the enemy intersects with any poop
		for (var i = 0; i < spirals.length; i++) {
			if (spirals[i] instanceof Poop && self.intersects(spirals[i])) {
				// Remove the poop from the game
				spirals[i].destroy();
				spirals.splice(i, 1);
				// Decrease player lives by 1
				playerLives -= 1;
				livesTxt.setText('Lives: ' + playerLives); // Update the displayed lives
				// Increase the speed of the enemy
				self.speed += 0.1;
				// End the game if the player's lives reach zero
				if (playerLives <= 0) {
					LK.effects.flashScreen(0xff0000, 1000);
					LK.showGameOver();
				}
			}
		}
	};
});
// Life class
var Life = Container.expand(function () {
	var self = Container.call(this);
	var lifeGraphics = self.attachAsset('life', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.reposition = function () {
		self.x = Math.random() * 2048;
		self.y = Math.random() * 2732;
	};
});
// Poop class
var Poop = Container.expand(function () {
	var self = Container.call(this);
	var poopGraphics = self.attachAsset('poop', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.reposition = function () {
		self.x = Math.random();
		self.y = Math.random();
	};
});
// Spiral class
var Spiral = Container.expand(function () {
	var self = Container.call(this);
	self.radius = 100;
	self.angle = 0;
	self.speed = 0.01;
	self.update = function () {
		self.angle += self.speed;
		self.x = 2048 / 2 + self.radius * Math.cos(self.angle);
		self.y = 2732 / 2 + self.radius * Math.sin(self.angle);
		if (self.y > 2732) {
			self.destroy();
		}
	};
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x000000 //Init game with black background
});
/**** 
* Game Code
****/ 
var road = game.addChild(LK.getAsset('road', {
	anchorX: 0.5,
	anchorY: 0.5,
	x: 2048 / 2,
	y: 2732 / 2
}));
// Initialize score and lives variables
var playerScore = 100;
var playerLives = 10;
var scoreTxt = new Text2('0', {
	size: 150,
	fill: "#0000FF" // Blue color
});
scoreTxt.anchor.set(0, 0); // Sets anchor to the left of the top edge of the text.
LK.gui.topLeft.addChild(scoreTxt); // Add the score text to the GUI overlay at the top left of the screen.
// Initialize and display player lives
var livesTxt = new Text2('10', {
	size: 150,
	fill: "#FF0000" // Red color
});
livesTxt.anchor.set(1, 0); // Sets anchor to the right of the top edge of the text.
LK.gui.topRight.addChild(livesTxt); // Add the lives text to the GUI overlay at the top right of the screen.
var enemyScore = 0;
// Initialize variables
var car = new Car();
car.x = 2048 / 2;
car.y = 2732 / 2;
game.addChild(car);
var spirals = [];
var enemies = [];
for (var i = 0; i < 3; i++) {
	var enemy = new Enemy();
	enemy.x = Math.random() * 2048;
	enemy.y = 2732 / 2 + 100;
	enemies.push(enemy);
	game.addChild(enemy);
}
// Handle touch events
game.down = function (x, y, obj) {
	if (x < 2048 / 2) {
		car.turnLeft();
	} else {
		car.turnRight();
	}
};
game.up = function (x, y, obj) {
	car.straighten();
};
// Update game state
game.update = function () {
	car.update();
	// Create spirals and poops
	if (LK.ticks % 60 === 0) {
		var spiral = new Spiral();
		spiral.x = 2048 / 2;
		spiral.y = -100;
		spirals.push(spiral);
		game.addChild(spiral);
		var poopCount = spirals.filter(function (spiral) {
			return spiral instanceof Poop;
		}).length;
		if (poopCount < 3) {
			var poop = new Poop();
			poop.x = 2048;
			poop.y = 2732 / 2;
			spirals.push(poop);
			game.addChild(poop);
		}
	}
	// Add life instances to the game
	if (LK.ticks % 600 === 0) {
		// every 10 seconds
		var life = new Life();
		life.reposition();
		spirals.push(life);
		game.addChild(life);
		// Make life instances blink before disappearing
		LK.setTimeout(function () {
			var blinkInterval = LK.setInterval(function () {
				life.visible = !life.visible;
			}, 200);
			LK.setTimeout(function () {
				LK.clearInterval(blinkInterval);
				var index = spirals.indexOf(life);
				if (index !== -1) {
					spirals.splice(index, 1);
					life.destroy();
				}
			}, 1000);
		}, 2000);
	}
	// Update spirals, poops, lives and enemies
	for (var i = spirals.length - 1; i >= 0; i--) {
		if (spirals[i] instanceof Spiral || spirals[i] instanceof Life) {
			if (typeof spirals[i].update === 'function') {
				spirals[i].update();
			}
		}
		if (car.intersects(spirals[i])) {
			if (spirals[i] instanceof Poop) {
				if (car.intersects(spirals[i])) {
					spirals[i].reposition();
					spirals[i].x = Math.random() * 2048;
					spirals[i].y = Math.random() * 2732;
					playerScore += 100; // Increase player score by 100 when poop is collected
					LK.setScore(playerScore); // Update the displayed score
					scoreTxt.setText(LK.getScore()); // Update the score text
				} else if (enemies.some(function (enemy) {
					return enemy.intersects(spirals[i]);
				})) {
					spirals[i].reposition();
					spirals[i].x = Math.random() * 2048;
					spirals[i].y = Math.random() * 2732;
					playerLives -= 1; // Decrease player lives by 1 when enemy collects poop
					livesTxt.setText('Lives: ' + playerLives); // Update the displayed lives
					// Make the player's car blink red when it takes damage
					LK.effects.flashObject(car, 0xff0000, 1000);
				}
			} else if (spirals[i] instanceof Life) {
				if (car.intersects(spirals[i])) {
					spirals[i].destroy();
					spirals.splice(i, 1);
					playerLives += 1; // Increase player lives by 1 when life is collected
					livesTxt.setText('Lives: ' + playerLives); // Update the displayed lives
				}
			} else {
				LK.effects.flashScreen(0xff0000, 1000);
				LK.showGameOver();
			}
		}
	}
	// Update enemies
	for (var i = 0; i < enemies.length; i++) {
		enemies[i].update();
	}
	// Make the player's car blink red when player lives are less than 3
	if (playerLives < 3) {
		LK.effects.flashObject(car, 0xff0000, 1000);
	}
	// End the game if the player's lives reach zero
	if (playerLives <= 0) {
		LK.effects.flashScreen(0xff0000, 1000);
		LK.showGameOver();
	}
};
 toilet room background. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 fly
 poop. 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.