/**** 
* Classes
****/ 
var Bird = Container.expand(function () {
	var self = Container.call(this);
	var birdGraphics = self.attachAsset('bird', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.xSpeed = 10.9375;
	self.ySpeed = -20;
	self.gravity = 1;
	self.lift = -15;
	self.flap = function () {
		self.ySpeed = self.lift * 1.5;
		LK.getSound('flap').play();
	};
	self._update_migrated = function () {
		if (game.isMouseDown) {
			self.ySpeed += self.gravity / 3;
		} else {
			self.ySpeed += self.gravity;
		}
		self.y += self.ySpeed;
		self.x += self.xSpeed;
		if (self.y <= 0 || self.y >= 2732) {
			self.speed = -self.speed;
		}
		var targetRotation = Math.atan2(self.ySpeed, self.xSpeed * self.scale.x) / 2;
		birdGraphics.rotation += (targetRotation - birdGraphics.rotation) / 10;
	};
	self.flip = function () {
		self.scale.x *= -1;
	};
});
var Obstacle = Container.expand(function () {
	var self = Container.call(this);
	var obstacleShadow = self.attachAsset('obstacleShadow', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	obstacleShadow.rotation = Math.PI / 4;
	var obstacleShadow2 = self.attachAsset('obstacleShadow2', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	obstacleShadow2.rotation = Math.PI / 4;
	obstacleShadow2.y = -7;
	var obstacleGraphics = self.attachAsset('obstacle', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	obstacleGraphics.rotation = Math.PI / 4;
	self.speed = 5;
	self._move_migrated = function (speed) {
		self.y += speed;
	};
});
var Wall = Container.expand(function () {
	var self = Container.call(this);
	var wallGraphics = self.attachAsset('wall', {
		anchorX: 0.5,
		anchorY: 0.5
	});
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x000000
});
/**** 
* Game Code
****/ 
// Language and Start Screen UI
var languageOptions = [{
	code: 'en',
	label: 'English'
}, {
	code: 'tr',
	label: 'Türkçe'
}];
var selectedLanguage = null;
var gameStarted = false;
// UI containers
var startScreenContainer = new Container();
var langTitle = new Text2('Select Language / Dil Seçin', {
	size: 120,
	fill: '#3a84f7',
	font: 'Impact',
	align: 'center'
});
langTitle.anchor.set(0.5, 0.5);
langTitle.x = 1024;
langTitle.y = 900;
startScreenContainer.addChild(langTitle);
var langButtons = [];
for (var i = 0; i < languageOptions.length; i++) {
	var btn = new Text2(languageOptions[i].label, {
		size: 120,
		fill: '#ffffff',
		font: 'Impact',
		align: 'center',
		dropShadow: true,
		dropShadowColor: '#222a9a',
		dropShadowBlur: 5,
		dropShadowDistance: 7,
		dropShadowAngle: 0
	});
	btn.anchor.set(0.5, 0.5);
	btn.x = 1024 + (i === 0 ? -250 : 250);
	btn.y = 1100;
	btn.interactive = true;
	btn.buttonMode = true;
	// Closure for event
	(function (idx, btnObj) {
		btnObj.down = function (x, y, obj) {
			selectedLanguage = languageOptions[idx].code;
			// Highlight selected
			for (var j = 0; j < langButtons.length; j++) {
				langButtons[j].setStyle({
					fill: j === idx ? '#3a84f7' : '#ffffff'
				});
			}
			// Show start button if not already
			if (!startBtn.visible) startBtn.visible = true;
		};
	})(i, btn);
	langButtons.push(btn);
	startScreenContainer.addChild(btn);
}
// Start button
var startBtn = new Text2('Start / Başla', {
	size: 140,
	fill: '#3a84f7',
	font: 'Impact',
	align: 'center',
	dropShadow: true,
	dropShadowColor: '#222a9a',
	dropShadowBlur: 5,
	dropShadowDistance: 7,
	dropShadowAngle: 0
});
startBtn.anchor.set(0.5, 0.5);
startBtn.x = 1024;
startBtn.y = 1400;
startBtn.visible = false;
startBtn.interactive = true;
startBtn.buttonMode = true;
startBtn.down = function (x, y, obj) {
	if (selectedLanguage) {
		gameStarted = true;
		startScreenContainer.visible = false;
		// Optionally, set tutorial text based on language
		if (selectedLanguage === 'tr') {
			tutorialTextWhite.setText('Zıplamak için dokun\nSüzülmek için basılı tut');
			tutorialText.setText('Zıplamak için dokun\nSüzülmek için basılı tut');
		} else {
			tutorialTextWhite.setText('Tap to Flap\nHold to Float');
			tutorialText.setText('Tap to Flap\nHold to Float');
		}
		tutorialText.visible = true;
		tutorialTextWhite.visible = true;
	}
};
startScreenContainer.addChild(startBtn);
// Add to stage
game.addChild(startScreenContainer);
// Hide tutorial until game starts
var tutorialTextWhite = new Text2('Tap to Flap\nHold to Float', {
	size: 150,
	fill: '#ffffff',
	font: 'Impact',
	align: 'center'
});
tutorialTextWhite.anchor.set(.5, 1);
tutorialTextWhite.x = -4;
tutorialTextWhite.y = -62;
tutorialTextWhite.visible = false;
LK.gui.bottom.addChild(tutorialTextWhite);
var tutorialText = new Text2('Tap to Flap\nHold to Float', {
	size: 150,
	fill: '#3a84f7',
	font: 'Impact',
	dropShadow: true,
	dropShadowColor: '#222a9a',
	dropShadowBlur: 5,
	dropShadowDistance: 7,
	dropShadowAngle: 0,
	align: 'center'
});
tutorialText.anchor.set(.5, 1);
tutorialText.y = -50;
tutorialText.visible = false;
LK.gui.bottom.addChild(tutorialText);
// Level definitions
var levels = [{
	name: "Easy",
	obstacleSpeed: 5,
	obstacleSpeedIncrease: 0.005,
	obstacleSpawnRandomness: 120,
	obstacleSpawnRandomnessDecrease: 0.025 * (2 / 3),
	backgroundColor: 0xadd8e6,
	scoreToNext: 10
}, {
	name: "Medium",
	obstacleSpeed: 7,
	obstacleSpeedIncrease: 0.008,
	obstacleSpawnRandomness: 90,
	obstacleSpawnRandomnessDecrease: 0.035,
	backgroundColor: 0x87ceeb,
	scoreToNext: 20
}, {
	name: "Hard",
	obstacleSpeed: 10,
	obstacleSpeedIncrease: 0.012,
	obstacleSpawnRandomness: 60,
	obstacleSpawnRandomnessDecrease: 0.05,
	backgroundColor: 0x4682b4,
	scoreToNext: 9999 // Last level, no next
}];
var currentLevelIndex = 0;
var currentLevel = levels[currentLevelIndex];
function applyLevel(level) {
	game.obstacleSpeed = level.obstacleSpeed;
	game.obstacleSpeedIncrease = level.obstacleSpeedIncrease;
	obstacleSpawnRandomness = level.obstacleSpawnRandomness;
	obstacleSpawnRandomnessDecrease = level.obstacleSpawnRandomnessDecrease;
	game.setBackgroundColor(level.backgroundColor);
}
game.score = 0;
applyLevel(currentLevel);
game.checkObstacleCollision = function (obstacles) {
	for (var i = 0; i < obstacles.length; i++) {
		obstacles[i]._move_migrated();
		var dist = Math.sqrt(Math.pow(bird.x - obstacles[i].x, 2) + Math.pow(bird.y - obstacles[i].y, 2));
		if (dist < 280) {
			LK.setScore(game.score);
			LK.getSound('gameOverJingle').play();
			LK.showGameOver();
		}
	}
};
game.setBackgroundColor(currentLevel.backgroundColor);
var scoreText = new Text2('0', {
	size: 150,
	fill: '#3a84f7',
	font: 'Impact',
	dropShadow: true,
	dropShadowColor: '#222a9a',
	dropShadowBlur: 5,
	dropShadowDistance: 7,
	dropShadowAngle: 0
});
scoreText.anchor.set(.5, 0);
LK.gui.top.addChild(scoreText);
var scoreText2 = new Text2('0', {
	size: 150,
	fill: '#ffffff',
	font: 'Impact'
});
scoreText2.anchor.set(.5, 0);
scoreText2.x = -4;
scoreText2.y = -5;
LK.gui.top.addChild(scoreText2);
LK.gui.top.addChild(scoreText);
var bird = game.addChild(new Bird());
var leftWall = game.addChild(new Wall());
leftWall.x = 0;
leftWall.y = 1366;
var rightWall = game.addChild(new Wall());
rightWall.x = 2048;
rightWall.y = 1366;
var leftObstacles = [],
	rightObstacles = [];
var obstacleSpawnRandomness = 120;
var obstacleSpawnRandomnessDecrease = 0.025 * (2 / 3);
var obstacleSpawnY = -500;
var leftObstacleSpawnTime = Math.floor(Math.random() * obstacleSpawnRandomness) + obstacleSpawnRandomness;
var rightObstacleSpawnTime = Math.floor(Math.random() * obstacleSpawnRandomness) + obstacleSpawnRandomness;
bird.x = 1024;
bird.y = 1366;
game.isMouseDown = false;
game.down = function (x, y, obj) {
	if (!gameStarted) return;
	bird.flap();
	game.isMouseDown = true;
};
game.up = function (x, y, obj) {
	if (!gameStarted) return;
	game.isMouseDown = false;
};
game.update = function () {
	if (!gameStarted) {
		// Optionally animate start screen, e.g. blink start button if language selected
		if (startBtn.visible && LK.ticks % 60 < 30) {
			startBtn.setStyle({
				fill: '#ffffff'
			});
		} else if (startBtn.visible) {
			startBtn.setStyle({
				fill: '#3a84f7'
			});
		}
		return;
	}
	bird._update_migrated();
	if (game.score > 2) {
		tutorialText.y += 5;
		tutorialTextWhite.y += 5;
	}
	scoreText.setText(game.score);
	scoreText2.setText(game.score);
	// Level progression
	if (game.score >= currentLevel.scoreToNext && currentLevelIndex < levels.length - 1) {
		currentLevelIndex++;
		currentLevel = levels[currentLevelIndex];
		applyLevel(currentLevel);
		// Optional: show a quick level up text
		var levelUpText = new Text2('Level ' + (currentLevelIndex + 1) + ': ' + currentLevel.name, {
			size: 120,
			fill: '#ffffff',
			font: 'Impact',
			dropShadow: true,
			dropShadowColor: '#222a9a',
			dropShadowBlur: 5,
			dropShadowDistance: 7,
			dropShadowAngle: 0,
			align: 'center'
		});
		levelUpText.anchor.set(.5, .5);
		levelUpText.x = 1024;
		levelUpText.y = 1366;
		game.addChild(levelUpText);
		LK.setTimeout(function () {
			levelUpText.destroy();
		}, 1200);
	}
	game.obstacleSpeed += game.obstacleSpeedIncrease;
	obstacleSpawnRandomness -= obstacleSpawnRandomnessDecrease;
	if (obstacleSpawnRandomness < 20) {
		obstacleSpawnRandomness = 20;
	}
	if (LK.ticks >= leftObstacleSpawnTime) {
		var newObstacle = game.addChildAt(new Obstacle(), 0);
		newObstacle.x = 0;
		newObstacle.y = obstacleSpawnY;
		leftObstacles.push(newObstacle);
		leftObstacleSpawnTime += Math.floor(Math.random() * obstacleSpawnRandomness) + obstacleSpawnRandomness;
	}
	if (LK.ticks >= rightObstacleSpawnTime) {
		var newObstacle = game.addChildAt(new Obstacle(), 0);
		newObstacle.x = 2048;
		newObstacle.y = -newObstacle.height;
		rightObstacles.push(newObstacle);
		rightObstacleSpawnTime += Math.floor(Math.random() * obstacleSpawnRandomness) + obstacleSpawnRandomness;
	}
	if (bird.intersects(leftWall) && bird.xSpeed < 0 || bird.intersects(rightWall) && bird.xSpeed > 0) {
		bird.xSpeed = -bird.xSpeed;
		bird.flip();
		game.score++;
		LK.setScore(game.score);
		LK.getSound('bounce').play();
	}
	for (var i = leftObstacles.length - 1; i >= 0; i--) {
		leftObstacles[i]._move_migrated(game.obstacleSpeed);
		if (leftObstacles[i].y > 3232) {
			leftObstacles[i].destroy();
			leftObstacles.splice(i, 1);
		}
	}
	for (var i = rightObstacles.length - 1; i >= 0; i--) {
		rightObstacles[i]._move_migrated(game.obstacleSpeed);
		if (rightObstacles[i].y > 3232) {
			rightObstacles[i].destroy();
			rightObstacles.splice(i, 1);
		}
	}
	game.checkObstacleCollision(leftObstacles);
	game.checkObstacleCollision(rightObstacles);
	if (bird.y < 0 || bird.y > 2732) {
		LK.setScore(game.score);
		LK.getSound('gameOverJingle').play();
		LK.showGameOver();
	}
}; /**** 
* Classes
****/ 
var Bird = Container.expand(function () {
	var self = Container.call(this);
	var birdGraphics = self.attachAsset('bird', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.xSpeed = 10.9375;
	self.ySpeed = -20;
	self.gravity = 1;
	self.lift = -15;
	self.flap = function () {
		self.ySpeed = self.lift * 1.5;
		LK.getSound('flap').play();
	};
	self._update_migrated = function () {
		if (game.isMouseDown) {
			self.ySpeed += self.gravity / 3;
		} else {
			self.ySpeed += self.gravity;
		}
		self.y += self.ySpeed;
		self.x += self.xSpeed;
		if (self.y <= 0 || self.y >= 2732) {
			self.speed = -self.speed;
		}
		var targetRotation = Math.atan2(self.ySpeed, self.xSpeed * self.scale.x) / 2;
		birdGraphics.rotation += (targetRotation - birdGraphics.rotation) / 10;
	};
	self.flip = function () {
		self.scale.x *= -1;
	};
});
var Obstacle = Container.expand(function () {
	var self = Container.call(this);
	var obstacleShadow = self.attachAsset('obstacleShadow', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	obstacleShadow.rotation = Math.PI / 4;
	var obstacleShadow2 = self.attachAsset('obstacleShadow2', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	obstacleShadow2.rotation = Math.PI / 4;
	obstacleShadow2.y = -7;
	var obstacleGraphics = self.attachAsset('obstacle', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	obstacleGraphics.rotation = Math.PI / 4;
	self.speed = 5;
	self._move_migrated = function (speed) {
		self.y += speed;
	};
});
var Wall = Container.expand(function () {
	var self = Container.call(this);
	var wallGraphics = self.attachAsset('wall', {
		anchorX: 0.5,
		anchorY: 0.5
	});
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x000000
});
/**** 
* Game Code
****/ 
// Language and Start Screen UI
var languageOptions = [{
	code: 'en',
	label: 'English'
}, {
	code: 'tr',
	label: 'Türkçe'
}];
var selectedLanguage = null;
var gameStarted = false;
// UI containers
var startScreenContainer = new Container();
var langTitle = new Text2('Select Language / Dil Seçin', {
	size: 120,
	fill: '#3a84f7',
	font: 'Impact',
	align: 'center'
});
langTitle.anchor.set(0.5, 0.5);
langTitle.x = 1024;
langTitle.y = 900;
startScreenContainer.addChild(langTitle);
var langButtons = [];
for (var i = 0; i < languageOptions.length; i++) {
	var btn = new Text2(languageOptions[i].label, {
		size: 120,
		fill: '#ffffff',
		font: 'Impact',
		align: 'center',
		dropShadow: true,
		dropShadowColor: '#222a9a',
		dropShadowBlur: 5,
		dropShadowDistance: 7,
		dropShadowAngle: 0
	});
	btn.anchor.set(0.5, 0.5);
	btn.x = 1024 + (i === 0 ? -250 : 250);
	btn.y = 1100;
	btn.interactive = true;
	btn.buttonMode = true;
	// Closure for event
	(function (idx, btnObj) {
		btnObj.down = function (x, y, obj) {
			selectedLanguage = languageOptions[idx].code;
			// Highlight selected
			for (var j = 0; j < langButtons.length; j++) {
				langButtons[j].setStyle({
					fill: j === idx ? '#3a84f7' : '#ffffff'
				});
			}
			// Show start button if not already
			if (!startBtn.visible) startBtn.visible = true;
		};
	})(i, btn);
	langButtons.push(btn);
	startScreenContainer.addChild(btn);
}
// Start button
var startBtn = new Text2('Start / Başla', {
	size: 140,
	fill: '#3a84f7',
	font: 'Impact',
	align: 'center',
	dropShadow: true,
	dropShadowColor: '#222a9a',
	dropShadowBlur: 5,
	dropShadowDistance: 7,
	dropShadowAngle: 0
});
startBtn.anchor.set(0.5, 0.5);
startBtn.x = 1024;
startBtn.y = 1400;
startBtn.visible = false;
startBtn.interactive = true;
startBtn.buttonMode = true;
startBtn.down = function (x, y, obj) {
	if (selectedLanguage) {
		gameStarted = true;
		startScreenContainer.visible = false;
		// Optionally, set tutorial text based on language
		if (selectedLanguage === 'tr') {
			tutorialTextWhite.setText('Zıplamak için dokun\nSüzülmek için basılı tut');
			tutorialText.setText('Zıplamak için dokun\nSüzülmek için basılı tut');
		} else {
			tutorialTextWhite.setText('Tap to Flap\nHold to Float');
			tutorialText.setText('Tap to Flap\nHold to Float');
		}
		tutorialText.visible = true;
		tutorialTextWhite.visible = true;
	}
};
startScreenContainer.addChild(startBtn);
// Add to stage
game.addChild(startScreenContainer);
// Hide tutorial until game starts
var tutorialTextWhite = new Text2('Tap to Flap\nHold to Float', {
	size: 150,
	fill: '#ffffff',
	font: 'Impact',
	align: 'center'
});
tutorialTextWhite.anchor.set(.5, 1);
tutorialTextWhite.x = -4;
tutorialTextWhite.y = -62;
tutorialTextWhite.visible = false;
LK.gui.bottom.addChild(tutorialTextWhite);
var tutorialText = new Text2('Tap to Flap\nHold to Float', {
	size: 150,
	fill: '#3a84f7',
	font: 'Impact',
	dropShadow: true,
	dropShadowColor: '#222a9a',
	dropShadowBlur: 5,
	dropShadowDistance: 7,
	dropShadowAngle: 0,
	align: 'center'
});
tutorialText.anchor.set(.5, 1);
tutorialText.y = -50;
tutorialText.visible = false;
LK.gui.bottom.addChild(tutorialText);
// Level definitions
var levels = [{
	name: "Easy",
	obstacleSpeed: 5,
	obstacleSpeedIncrease: 0.005,
	obstacleSpawnRandomness: 120,
	obstacleSpawnRandomnessDecrease: 0.025 * (2 / 3),
	backgroundColor: 0xadd8e6,
	scoreToNext: 10
}, {
	name: "Medium",
	obstacleSpeed: 7,
	obstacleSpeedIncrease: 0.008,
	obstacleSpawnRandomness: 90,
	obstacleSpawnRandomnessDecrease: 0.035,
	backgroundColor: 0x87ceeb,
	scoreToNext: 20
}, {
	name: "Hard",
	obstacleSpeed: 10,
	obstacleSpeedIncrease: 0.012,
	obstacleSpawnRandomness: 60,
	obstacleSpawnRandomnessDecrease: 0.05,
	backgroundColor: 0x4682b4,
	scoreToNext: 9999 // Last level, no next
}];
var currentLevelIndex = 0;
var currentLevel = levels[currentLevelIndex];
function applyLevel(level) {
	game.obstacleSpeed = level.obstacleSpeed;
	game.obstacleSpeedIncrease = level.obstacleSpeedIncrease;
	obstacleSpawnRandomness = level.obstacleSpawnRandomness;
	obstacleSpawnRandomnessDecrease = level.obstacleSpawnRandomnessDecrease;
	game.setBackgroundColor(level.backgroundColor);
}
game.score = 0;
applyLevel(currentLevel);
game.checkObstacleCollision = function (obstacles) {
	for (var i = 0; i < obstacles.length; i++) {
		obstacles[i]._move_migrated();
		var dist = Math.sqrt(Math.pow(bird.x - obstacles[i].x, 2) + Math.pow(bird.y - obstacles[i].y, 2));
		if (dist < 280) {
			LK.setScore(game.score);
			LK.getSound('gameOverJingle').play();
			LK.showGameOver();
		}
	}
};
game.setBackgroundColor(currentLevel.backgroundColor);
var scoreText = new Text2('0', {
	size: 150,
	fill: '#3a84f7',
	font: 'Impact',
	dropShadow: true,
	dropShadowColor: '#222a9a',
	dropShadowBlur: 5,
	dropShadowDistance: 7,
	dropShadowAngle: 0
});
scoreText.anchor.set(.5, 0);
LK.gui.top.addChild(scoreText);
var scoreText2 = new Text2('0', {
	size: 150,
	fill: '#ffffff',
	font: 'Impact'
});
scoreText2.anchor.set(.5, 0);
scoreText2.x = -4;
scoreText2.y = -5;
LK.gui.top.addChild(scoreText2);
LK.gui.top.addChild(scoreText);
var bird = game.addChild(new Bird());
var leftWall = game.addChild(new Wall());
leftWall.x = 0;
leftWall.y = 1366;
var rightWall = game.addChild(new Wall());
rightWall.x = 2048;
rightWall.y = 1366;
var leftObstacles = [],
	rightObstacles = [];
var obstacleSpawnRandomness = 120;
var obstacleSpawnRandomnessDecrease = 0.025 * (2 / 3);
var obstacleSpawnY = -500;
var leftObstacleSpawnTime = Math.floor(Math.random() * obstacleSpawnRandomness) + obstacleSpawnRandomness;
var rightObstacleSpawnTime = Math.floor(Math.random() * obstacleSpawnRandomness) + obstacleSpawnRandomness;
bird.x = 1024;
bird.y = 1366;
game.isMouseDown = false;
game.down = function (x, y, obj) {
	if (!gameStarted) return;
	bird.flap();
	game.isMouseDown = true;
};
game.up = function (x, y, obj) {
	if (!gameStarted) return;
	game.isMouseDown = false;
};
game.update = function () {
	if (!gameStarted) {
		// Optionally animate start screen, e.g. blink start button if language selected
		if (startBtn.visible && LK.ticks % 60 < 30) {
			startBtn.setStyle({
				fill: '#ffffff'
			});
		} else if (startBtn.visible) {
			startBtn.setStyle({
				fill: '#3a84f7'
			});
		}
		return;
	}
	bird._update_migrated();
	if (game.score > 2) {
		tutorialText.y += 5;
		tutorialTextWhite.y += 5;
	}
	scoreText.setText(game.score);
	scoreText2.setText(game.score);
	// Level progression
	if (game.score >= currentLevel.scoreToNext && currentLevelIndex < levels.length - 1) {
		currentLevelIndex++;
		currentLevel = levels[currentLevelIndex];
		applyLevel(currentLevel);
		// Optional: show a quick level up text
		var levelUpText = new Text2('Level ' + (currentLevelIndex + 1) + ': ' + currentLevel.name, {
			size: 120,
			fill: '#ffffff',
			font: 'Impact',
			dropShadow: true,
			dropShadowColor: '#222a9a',
			dropShadowBlur: 5,
			dropShadowDistance: 7,
			dropShadowAngle: 0,
			align: 'center'
		});
		levelUpText.anchor.set(.5, .5);
		levelUpText.x = 1024;
		levelUpText.y = 1366;
		game.addChild(levelUpText);
		LK.setTimeout(function () {
			levelUpText.destroy();
		}, 1200);
	}
	game.obstacleSpeed += game.obstacleSpeedIncrease;
	obstacleSpawnRandomness -= obstacleSpawnRandomnessDecrease;
	if (obstacleSpawnRandomness < 20) {
		obstacleSpawnRandomness = 20;
	}
	if (LK.ticks >= leftObstacleSpawnTime) {
		var newObstacle = game.addChildAt(new Obstacle(), 0);
		newObstacle.x = 0;
		newObstacle.y = obstacleSpawnY;
		leftObstacles.push(newObstacle);
		leftObstacleSpawnTime += Math.floor(Math.random() * obstacleSpawnRandomness) + obstacleSpawnRandomness;
	}
	if (LK.ticks >= rightObstacleSpawnTime) {
		var newObstacle = game.addChildAt(new Obstacle(), 0);
		newObstacle.x = 2048;
		newObstacle.y = -newObstacle.height;
		rightObstacles.push(newObstacle);
		rightObstacleSpawnTime += Math.floor(Math.random() * obstacleSpawnRandomness) + obstacleSpawnRandomness;
	}
	if (bird.intersects(leftWall) && bird.xSpeed < 0 || bird.intersects(rightWall) && bird.xSpeed > 0) {
		bird.xSpeed = -bird.xSpeed;
		bird.flip();
		game.score++;
		LK.setScore(game.score);
		LK.getSound('bounce').play();
	}
	for (var i = leftObstacles.length - 1; i >= 0; i--) {
		leftObstacles[i]._move_migrated(game.obstacleSpeed);
		if (leftObstacles[i].y > 3232) {
			leftObstacles[i].destroy();
			leftObstacles.splice(i, 1);
		}
	}
	for (var i = rightObstacles.length - 1; i >= 0; i--) {
		rightObstacles[i]._move_migrated(game.obstacleSpeed);
		if (rightObstacles[i].y > 3232) {
			rightObstacles[i].destroy();
			rightObstacles.splice(i, 1);
		}
	}
	game.checkObstacleCollision(leftObstacles);
	game.checkObstacleCollision(rightObstacles);
	if (bird.y < 0 || bird.y > 2732) {
		LK.setScore(game.score);
		LK.getSound('gameOverJingle').play();
		LK.showGameOver();
	}
};