/**** 
* Classes
****/ 
// Add a floor asset
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Class for the main character, Farid
var Farid = Container.expand(function () {
	var self = Container.call(this);
	var faridGraphics = self.attachAsset('farid', {
		anchorX: 0.5,
		anchorY: 0.5,
		scaleX: 1,
		scaleY: 1
	});
	self.speedY = 0;
	self.gravity = 0.7;
	self.jumpStrength = -30;
	// Update function for Farid
	self.update = function () {
		self.speedY += self.gravity;
		self.y += self.speedY;
		// Prevent Farid from falling below the ground
		if (self.y > 2732 - faridGraphics.height / 2 - 100) {
			// Adjust the ground level
			self.y = 2732 - faridGraphics.height / 2 - 100; // Adjust the ground level
			self.speedY = 0;
		}
	};
	// Function to make Farid jump
	self.jump = function () {
		if (self.y >= 2732 - faridGraphics.height / 2 - 100) {
			// Adjust the ground level
			self.speedY = self.jumpStrength;
			// Play jump sound
			LK.getSound('Fx').play();
		}
	};
});
// Class for obstacles
var Obstacle = Container.expand(function () {
	var self = Container.call(this);
	var obstacleGraphics = self.attachAsset('obstacle', {
		anchorX: 0.5,
		anchorY: 0.5,
		scaleX: 0.5,
		scaleY: 0.5
	});
	self.speedX = -5;
	// Update function for obstacles
	self.update = function () {
		self.x += self.speedX;
		self.y = 2732 - obstacleGraphics.height / 2 - 50;
		// Remove obstacle if it goes off screen
		if (self.x < -obstacleGraphics.width / 2) {
			self.destroy();
		}
	};
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x87CEEB // Init game with sky blue background
});
/**** 
* Game Code
****/ 
var background = game.attachAsset('background', {
	anchorX: 0.5,
	anchorY: 0.5,
	x: 2048 / 2,
	y: 2732 / 2
});
// Initialize Farid
var farid = game.addChild(new Farid());
farid.x = 2048 / 2;
farid.y = 2732 - 100;
// Add the floor to the game
var floor = game.attachAsset('floor', {
	anchorX: 0.5,
	anchorY: 0.5,
	x: 2048 / 2,
	y: 2732 - 50
});
// Array to keep track of obstacles
var obstacles = [];
// Function to spawn a new obstacle
function spawnObstacle() {
	var obstacle = new Obstacle();
	obstacle.x = 2048 + obstacle.width / 2;
	obstacle.y = 2732 - obstacle.height / 2;
	obstacles.push(obstacle);
	game.addChild(obstacle);
}
// Set interval to spawn obstacles
var obstacleInterval = LK.setInterval(spawnObstacle, 1500);
// Handle touch down event to make Farid jump
game.down = function (x, y, obj) {
	farid.jump();
};
// Initialize score
var score = 0;
var scoreBg = LK.getAsset('box', {
	width: 300,
	height: 200,
	color: 0x000000
});
scoreBg.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreBg);
var scoreTxt = new Text2(score.toString(), {
	size: 150,
	fill: 0xFFFFFF,
	font: "'GillSans-Bold',Impact,'Arial Black',Tahoma"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Update function for the game
game.update = function () {
	farid.update();
	// Update all obstacles
	for (var i = obstacles.length - 1; i >= 0; i--) {
		obstacles[i].update();
		// Check for collision with Farid
		if (farid.intersects(obstacles[i])) {
			LK.effects.flashScreen(0xff0000, 1000);
			LK.showGameOver();
		}
		// Increase score when Farid jumps over an obstacle
		if (farid.x > obstacles[i].x + obstacles[i].width / 2 && !obstacles[i].scored) {
			score++;
			scoreTxt.setText(score.toString());
			obstacles[i].scored = true;
		}
		// Increase the speed of obstacles over time
		obstacles[i].speedX -= 0.1;
	}
}; /**** 
* Classes
****/ 
// Add a floor asset
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Class for the main character, Farid
var Farid = Container.expand(function () {
	var self = Container.call(this);
	var faridGraphics = self.attachAsset('farid', {
		anchorX: 0.5,
		anchorY: 0.5,
		scaleX: 1,
		scaleY: 1
	});
	self.speedY = 0;
	self.gravity = 0.7;
	self.jumpStrength = -30;
	// Update function for Farid
	self.update = function () {
		self.speedY += self.gravity;
		self.y += self.speedY;
		// Prevent Farid from falling below the ground
		if (self.y > 2732 - faridGraphics.height / 2 - 100) {
			// Adjust the ground level
			self.y = 2732 - faridGraphics.height / 2 - 100; // Adjust the ground level
			self.speedY = 0;
		}
	};
	// Function to make Farid jump
	self.jump = function () {
		if (self.y >= 2732 - faridGraphics.height / 2 - 100) {
			// Adjust the ground level
			self.speedY = self.jumpStrength;
			// Play jump sound
			LK.getSound('Fx').play();
		}
	};
});
// Class for obstacles
var Obstacle = Container.expand(function () {
	var self = Container.call(this);
	var obstacleGraphics = self.attachAsset('obstacle', {
		anchorX: 0.5,
		anchorY: 0.5,
		scaleX: 0.5,
		scaleY: 0.5
	});
	self.speedX = -5;
	// Update function for obstacles
	self.update = function () {
		self.x += self.speedX;
		self.y = 2732 - obstacleGraphics.height / 2 - 50;
		// Remove obstacle if it goes off screen
		if (self.x < -obstacleGraphics.width / 2) {
			self.destroy();
		}
	};
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x87CEEB // Init game with sky blue background
});
/**** 
* Game Code
****/ 
var background = game.attachAsset('background', {
	anchorX: 0.5,
	anchorY: 0.5,
	x: 2048 / 2,
	y: 2732 / 2
});
// Initialize Farid
var farid = game.addChild(new Farid());
farid.x = 2048 / 2;
farid.y = 2732 - 100;
// Add the floor to the game
var floor = game.attachAsset('floor', {
	anchorX: 0.5,
	anchorY: 0.5,
	x: 2048 / 2,
	y: 2732 - 50
});
// Array to keep track of obstacles
var obstacles = [];
// Function to spawn a new obstacle
function spawnObstacle() {
	var obstacle = new Obstacle();
	obstacle.x = 2048 + obstacle.width / 2;
	obstacle.y = 2732 - obstacle.height / 2;
	obstacles.push(obstacle);
	game.addChild(obstacle);
}
// Set interval to spawn obstacles
var obstacleInterval = LK.setInterval(spawnObstacle, 1500);
// Handle touch down event to make Farid jump
game.down = function (x, y, obj) {
	farid.jump();
};
// Initialize score
var score = 0;
var scoreBg = LK.getAsset('box', {
	width: 300,
	height: 200,
	color: 0x000000
});
scoreBg.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreBg);
var scoreTxt = new Text2(score.toString(), {
	size: 150,
	fill: 0xFFFFFF,
	font: "'GillSans-Bold',Impact,'Arial Black',Tahoma"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Update function for the game
game.update = function () {
	farid.update();
	// Update all obstacles
	for (var i = obstacles.length - 1; i >= 0; i--) {
		obstacles[i].update();
		// Check for collision with Farid
		if (farid.intersects(obstacles[i])) {
			LK.effects.flashScreen(0xff0000, 1000);
			LK.showGameOver();
		}
		// Increase score when Farid jumps over an obstacle
		if (farid.x > obstacles[i].x + obstacles[i].width / 2 && !obstacles[i].scored) {
			score++;
			scoreTxt.setText(score.toString());
			obstacles[i].scored = true;
		}
		// Increase the speed of obstacles over time
		obstacles[i].speedX -= 0.1;
	}
};