var Player = Container.expand(function () {
	var self = Container.call(this);
	var playerGraphics = self.createAsset('player', 'Player Graphics', .5, .5);
	playerGraphics.scale.set(2);
	playerGraphics.scale.x *= -1;
	self.speed = 5;
	self.move = function (direction) {
		if (direction === 'left') {
			self.x -= self.speed;
		} else if (direction === 'right') {
			self.x += self.speed;
		}
	};
});
var CPU1 = Container.expand(function () {
	var self = Container.call(this);
	var cpuGraphics = self.createAsset('cpu1', 'CPU1 Graphics', .5, .5);
	cpuGraphics.scale.set(2);
	cpuGraphics.scale.x *= -1;
	self.speed = 3;
	self.move = function () {
		self.x += self.speed;
	};
});
var CPU2 = Container.expand(function () {
	var self = Container.call(this);
	var cpuGraphics = self.createAsset('cpu2', 'CPU2 Graphics', .5, .5);
	cpuGraphics.scale.set(2);
	cpuGraphics.scale.x *= -1;
	self.speed = 2;
	self.move = function () {
		self.x += self.speed;
	};
});
var CPU3 = Container.expand(function () {
	var self = Container.call(this);
	var cpuGraphics = self.createAsset('cpu3', 'CPU3 Graphics', .5, .5);
	cpuGraphics.scale.set(2);
	cpuGraphics.scale.x *= -1;
	self.speed = 3;
	self.move = function () {
		self.x += self.speed;
	};
});
var FinishLine = Container.expand(function () {
	var self = Container.call(this);
	var finishLineGraphics = self.createAsset('finishLine', 'Finish Line Graphics', .5, 1);
	finishLineGraphics.scale.set(5);
	finishLineGraphics.tint = 0xFFFFFF;
});
var Game = Container.expand(function () {
	var self = Container.call(this);
	LK.stageContainer.setBackgroundColor(0x00008B);
	var gameTitle = new Text2('Car Racing!', {
		size: 200,
		fill: '#ff4500',
		font: 'Arial',
		fontWeight: 'bold',
		stroke: '#ffffff',
		strokeThickness: 6,
		dropShadow: true,
		dropShadowColor: '#000000',
		dropShadowBlur: 4,
		dropShadowAngle: Math.PI / 6,
		dropShadowDistance: 6
	});
	gameTitle.anchor.set(0.5, 0);
	gameTitle.x = 2048 / 2;
	gameTitle.y = 200;
	self.addChild(gameTitle);
	var player = self.addChild(new Player());
	player.x = 200;
	player.y = 2732 / 2;
	var cpu1 = self.addChild(new CPU1());
	cpu1.x = 200;
	cpu1.y = 2732 / 2 - 100;
	var cpu2 = self.addChild(new CPU2());
	cpu2.x = 200;
	cpu2.y = 2732 / 2 - 200;
	var cpu3 = self.addChild(new CPU3());
	cpu3.x = 200;
	cpu3.y = 2732 / 2 - 300;
	var finishLine = self.addChild(new FinishLine());
	finishLine.x = 2048 - 200;
	finishLine.y = 2732 / 2;
	var countdown = 3;
	var countdownText = new Text2(countdown.toString(), {
		size: 150,
		fill: '#ffffff'
	});
	countdownText.x = 2048 / 2;
	countdownText.y = 2732 / 2;
	self.addChild(countdownText);
	var countdownInterval = LK.setInterval(function () {
		countdown--;
		countdownText.setText(countdown.toString());
		if (countdown === 0) {
			LK.clearInterval(countdownInterval);
			countdownText.destroy();
		}
	}, 1000);
	var leftArrow = self.createAsset('leftArrow', 'Left Arrow', .5, .5);
	leftArrow.scale.set(-2, 2);
	leftArrow.x = 100;
	leftArrow.y = 2732 - 100;
	var leftArrowPressed = false;
	leftArrow.on('down', function () {
		leftArrowPressed = true;
	});
	leftArrow.on('up', function () {
		leftArrowPressed = false;
	});
	var rightArrow = self.createAsset('rightArrow', 'Right Arrow', .5, .5);
	rightArrow.scale.set(2);
	rightArrow.x = 2048 - 100;
	rightArrow.y = 2732 - 100;
	var rightArrowPressed = false;
	rightArrow.on('down', function () {
		rightArrowPressed = true;
	});
	rightArrow.on('up', function () {
		rightArrowPressed = false;
	});
	var isGameOver = false;
	LK.on('tick', function () {
		if (countdown === 0) {
			cpu1.move();
			cpu2.move();
			cpu3.move();
			if (leftArrowPressed) {
				player.move('left');
			}
			if (rightArrowPressed) {
				player.move('right');
			}
		}
		if (player.intersects(finishLine)) {
			isGameOver = true;
			console.log("Player Wins!");
		}
		if (cpu1.intersects(finishLine) || cpu2.intersects(finishLine) || cpu3.intersects(finishLine)) {
			isGameOver = true;
			console.log("CPU Wins!");
		}
		if (isGameOver) {
			LK.effects.flashScreen(0xff0000, 1000);
			LK.showGameOver();
		}
	});
});
 var Player = Container.expand(function () {
	var self = Container.call(this);
	var playerGraphics = self.createAsset('player', 'Player Graphics', .5, .5);
	playerGraphics.scale.set(2);
	playerGraphics.scale.x *= -1;
	self.speed = 5;
	self.move = function (direction) {
		if (direction === 'left') {
			self.x -= self.speed;
		} else if (direction === 'right') {
			self.x += self.speed;
		}
	};
});
var CPU1 = Container.expand(function () {
	var self = Container.call(this);
	var cpuGraphics = self.createAsset('cpu1', 'CPU1 Graphics', .5, .5);
	cpuGraphics.scale.set(2);
	cpuGraphics.scale.x *= -1;
	self.speed = 3;
	self.move = function () {
		self.x += self.speed;
	};
});
var CPU2 = Container.expand(function () {
	var self = Container.call(this);
	var cpuGraphics = self.createAsset('cpu2', 'CPU2 Graphics', .5, .5);
	cpuGraphics.scale.set(2);
	cpuGraphics.scale.x *= -1;
	self.speed = 2;
	self.move = function () {
		self.x += self.speed;
	};
});
var CPU3 = Container.expand(function () {
	var self = Container.call(this);
	var cpuGraphics = self.createAsset('cpu3', 'CPU3 Graphics', .5, .5);
	cpuGraphics.scale.set(2);
	cpuGraphics.scale.x *= -1;
	self.speed = 3;
	self.move = function () {
		self.x += self.speed;
	};
});
var FinishLine = Container.expand(function () {
	var self = Container.call(this);
	var finishLineGraphics = self.createAsset('finishLine', 'Finish Line Graphics', .5, 1);
	finishLineGraphics.scale.set(5);
	finishLineGraphics.tint = 0xFFFFFF;
});
var Game = Container.expand(function () {
	var self = Container.call(this);
	LK.stageContainer.setBackgroundColor(0x00008B);
	var gameTitle = new Text2('Car Racing!', {
		size: 200,
		fill: '#ff4500',
		font: 'Arial',
		fontWeight: 'bold',
		stroke: '#ffffff',
		strokeThickness: 6,
		dropShadow: true,
		dropShadowColor: '#000000',
		dropShadowBlur: 4,
		dropShadowAngle: Math.PI / 6,
		dropShadowDistance: 6
	});
	gameTitle.anchor.set(0.5, 0);
	gameTitle.x = 2048 / 2;
	gameTitle.y = 200;
	self.addChild(gameTitle);
	var player = self.addChild(new Player());
	player.x = 200;
	player.y = 2732 / 2;
	var cpu1 = self.addChild(new CPU1());
	cpu1.x = 200;
	cpu1.y = 2732 / 2 - 100;
	var cpu2 = self.addChild(new CPU2());
	cpu2.x = 200;
	cpu2.y = 2732 / 2 - 200;
	var cpu3 = self.addChild(new CPU3());
	cpu3.x = 200;
	cpu3.y = 2732 / 2 - 300;
	var finishLine = self.addChild(new FinishLine());
	finishLine.x = 2048 - 200;
	finishLine.y = 2732 / 2;
	var countdown = 3;
	var countdownText = new Text2(countdown.toString(), {
		size: 150,
		fill: '#ffffff'
	});
	countdownText.x = 2048 / 2;
	countdownText.y = 2732 / 2;
	self.addChild(countdownText);
	var countdownInterval = LK.setInterval(function () {
		countdown--;
		countdownText.setText(countdown.toString());
		if (countdown === 0) {
			LK.clearInterval(countdownInterval);
			countdownText.destroy();
		}
	}, 1000);
	var leftArrow = self.createAsset('leftArrow', 'Left Arrow', .5, .5);
	leftArrow.scale.set(-2, 2);
	leftArrow.x = 100;
	leftArrow.y = 2732 - 100;
	var leftArrowPressed = false;
	leftArrow.on('down', function () {
		leftArrowPressed = true;
	});
	leftArrow.on('up', function () {
		leftArrowPressed = false;
	});
	var rightArrow = self.createAsset('rightArrow', 'Right Arrow', .5, .5);
	rightArrow.scale.set(2);
	rightArrow.x = 2048 - 100;
	rightArrow.y = 2732 - 100;
	var rightArrowPressed = false;
	rightArrow.on('down', function () {
		rightArrowPressed = true;
	});
	rightArrow.on('up', function () {
		rightArrowPressed = false;
	});
	var isGameOver = false;
	LK.on('tick', function () {
		if (countdown === 0) {
			cpu1.move();
			cpu2.move();
			cpu3.move();
			if (leftArrowPressed) {
				player.move('left');
			}
			if (rightArrowPressed) {
				player.move('right');
			}
		}
		if (player.intersects(finishLine)) {
			isGameOver = true;
			console.log("Player Wins!");
		}
		if (cpu1.intersects(finishLine) || cpu2.intersects(finishLine) || cpu3.intersects(finishLine)) {
			isGameOver = true;
			console.log("CPU Wins!");
		}
		if (isGameOver) {
			LK.effects.flashScreen(0xff0000, 1000);
			LK.showGameOver();
		}
	});
});