/**** 
* Classes
****/ 
//<Assets used in the game will automatically appear here>
// Shape class to represent the shapes in the game
var Shape = Container.expand(function () {
	var self = Container.call(this);
	self.shapeType = null;
	self.shapeGraphics = null;
	self.setShape = function (type) {
		self.shapeType = type;
		if (self.shapeGraphics) {
			self.removeChild(self.shapeGraphics);
		}
		self.shapeGraphics = self.attachAsset(type, {
			anchorX: 0.5,
			anchorY: 0.5
		});
	};
});
// Text class to represent the shape names in the game
var ShapeText = Container.expand(function () {
	var self = Container.call(this);
	self.text = new Text2('', {
		size: 100,
		fill: "#ffffff"
	});
	self.text.anchor.set(0.5, 0.5);
	self.addChild(self.text);
	self.setText = function (text) {
		self.text.setText(text.toUpperCase());
	};
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x000000 //Init game with black background 
});
/**** 
* Game Code
****/ 
// Function to handle game over
function gameOver() {
	LK.clearTimeout(timer);
	LK.showGameOver();
}
// Initialize variables
var shapes = ['circle', 'square', 'triangle', 'hexagon', 'octagon', 'oval', 'pentagon', 'rectangle', 'rhombus'];
var currentShape = null;
var currentShapeText = null;
var score = 0;
var timer = null;
var timeLeft = 3;
var lives = 3;
var livesDisplay = [];
var scoreTxt = new Text2('Score: 0', {
	size: 100,
	fill: "#ffffff"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var timerTxt = new Text2('Time: ' + timeLeft, {
	size: 100,
	fill: "#ffffff"
});
timerTxt.anchor.set(0.5, 0);
timerTxt.x = 2048 / 2;
timerTxt.y = 2732 * 3 / 4 - 200;
game.addChild(timerTxt);
// Create shape and text objects
var shape = new Shape();
shape.x = 2048 / 2;
shape.y = 2732 / 3;
game.addChild(shape);
var iamText = new Text2('I AM', {
	size: 100,
	fill: "#ffffff"
});
iamText.anchor.set(0.5, 0.5);
iamText.x = 2048 / 2;
iamText.y = 2732 / 3 - 400;
game.addChild(iamText);
var shapeText = new ShapeText();
shapeText.x = 2048 / 2;
shapeText.y = 2732 / 2;
game.addChild(shapeText);
// Function to update the shape and text
function updateShapeAndText() {
	var randomShape = shapes[Math.floor(Math.random() * shapes.length)];
	var randomText = shapes[Math.floor(Math.random() * shapes.length)];
	shape.setShape(randomShape);
	shapeText.setText(randomText);
	currentShape = randomShape;
	currentShapeText = randomText;
	if (timer) {
		LK.clearTimeout(timer);
	}
	timer = LK.setTimeout(gameOver, 3000);
	timerTxt.setText('Time: 3');
}
// Function to handle True button press
function handleTruePress() {
	if (currentShape === currentShapeText) {
		score++;
		scoreTxt.setText('Score: ' + score);
		LK.clearTimeout(timer);
		updateShapeAndText();
	} else {
		lives--;
		LK.effects.flashScreen(0xff0000, 1000);
		if (lives > 0) {
			var heart = livesDisplay.pop();
			LK.gui.topLeft.removeChild(heart);
		} else {
			gameOver();
		}
	}
}
// Function to handle False button press
function handleFalsePress() {
	if (currentShape !== currentShapeText) {
		score++;
		scoreTxt.setText('Score: ' + score);
		LK.clearTimeout(timer);
		updateShapeAndText();
	} else {
		lives--;
		LK.effects.flashScreen(0xff0000, 1000);
		LK.getSound('wrongAnswer').play();
		if (livesDisplay.length > 0) {
			var heart = livesDisplay.pop();
			LK.gui.topLeft.removeChild(heart);
		}
		LK.getSound('wrongAnswer').play();
		if (lives <= 0) {
			gameOver();
		}
	}
}
// Create heart image assets for the lives display
for (var i = 0; i < lives; i++) {
	var heart = LK.getAsset('heart', {
		anchorX: 0.0,
		anchorY: 0.0,
		scaleX: 0.5,
		scaleY: 0.5,
		x: 50 + i * 100,
		y: 50
	});
	livesDisplay.push(heart);
	LK.gui.topLeft.addChild(heart);
}
// Create True and False buttons
var trueButtonBackground = LK.getAsset('trueButtonBackground', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2,
	scaleY: 2
});
game.addChild(trueButtonBackground);
trueButtonBackground.x = 2048 / 4;
trueButtonBackground.y = 2732 * 3 / 4;
var trueButton = new Text2('True', {
	size: 200,
	fill: "#ffffff"
});
trueButtonBackground.addChild(trueButton);
trueButton.anchor.set(0.5, 0.5);
trueButton.x = 2048 / 4;
trueButton.y = 2732 * 3 / 4;
game.addChild(trueButton);
var falseButtonBackground = LK.getAsset('falseButtonBackground', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2,
	scaleY: 2
});
game.addChild(falseButtonBackground);
falseButtonBackground.x = 2048 * 3 / 4;
falseButtonBackground.y = 2732 * 3 / 4;
var falseButton = new Text2('False', {
	size: 200,
	fill: "#ffffff"
});
falseButtonBackground.addChild(falseButton);
falseButton.anchor.set(0.5, 0.5);
falseButton.x = 2048 * 3 / 4;
falseButton.y = 2732 * 3 / 4;
game.addChild(falseButton);
// Add event listeners for buttons
trueButton.down = function (x, y, obj) {
	handleTruePress();
	timeLeft = 3;
	timerTxt.setText('Time: ' + timeLeft);
	LK.clearTimeout(timer);
	timer = LK.setTimeout(gameOver, 3000);
	LK.getSound('buttonClick').play();
};
falseButton.down = function (x, y, obj) {
	handleFalsePress();
	timeLeft = 3;
	timerTxt.setText('Time: ' + timeLeft);
	LK.clearTimeout(timer);
	timer = LK.setTimeout(gameOver, 3000);
	LK.getSound('buttonClick').play();
};
// Initialize the game with the first shape and text
updateShapeAndText();
// Update the timer text every second
var timerInterval = LK.setInterval(function () {
	console.log("Time Left: ", timeLeft);
	if (timeLeft > 0) {
		timeLeft--;
		timerTxt.setText('Time: ' + timeLeft);
	} else {
		lives--;
		if (lives > 0) {
			var heart = livesDisplay.pop();
			LK.gui.topLeft.removeChild(heart);
		}
		if (lives <= 0) {
			// Do nothing
		}
	}
}, 1000);
// Clear the timer interval when game over /**** 
* Classes
****/ 
//<Assets used in the game will automatically appear here>
// Shape class to represent the shapes in the game
var Shape = Container.expand(function () {
	var self = Container.call(this);
	self.shapeType = null;
	self.shapeGraphics = null;
	self.setShape = function (type) {
		self.shapeType = type;
		if (self.shapeGraphics) {
			self.removeChild(self.shapeGraphics);
		}
		self.shapeGraphics = self.attachAsset(type, {
			anchorX: 0.5,
			anchorY: 0.5
		});
	};
});
// Text class to represent the shape names in the game
var ShapeText = Container.expand(function () {
	var self = Container.call(this);
	self.text = new Text2('', {
		size: 100,
		fill: "#ffffff"
	});
	self.text.anchor.set(0.5, 0.5);
	self.addChild(self.text);
	self.setText = function (text) {
		self.text.setText(text.toUpperCase());
	};
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x000000 //Init game with black background 
});
/**** 
* Game Code
****/ 
// Function to handle game over
function gameOver() {
	LK.clearTimeout(timer);
	LK.showGameOver();
}
// Initialize variables
var shapes = ['circle', 'square', 'triangle', 'hexagon', 'octagon', 'oval', 'pentagon', 'rectangle', 'rhombus'];
var currentShape = null;
var currentShapeText = null;
var score = 0;
var timer = null;
var timeLeft = 3;
var lives = 3;
var livesDisplay = [];
var scoreTxt = new Text2('Score: 0', {
	size: 100,
	fill: "#ffffff"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var timerTxt = new Text2('Time: ' + timeLeft, {
	size: 100,
	fill: "#ffffff"
});
timerTxt.anchor.set(0.5, 0);
timerTxt.x = 2048 / 2;
timerTxt.y = 2732 * 3 / 4 - 200;
game.addChild(timerTxt);
// Create shape and text objects
var shape = new Shape();
shape.x = 2048 / 2;
shape.y = 2732 / 3;
game.addChild(shape);
var iamText = new Text2('I AM', {
	size: 100,
	fill: "#ffffff"
});
iamText.anchor.set(0.5, 0.5);
iamText.x = 2048 / 2;
iamText.y = 2732 / 3 - 400;
game.addChild(iamText);
var shapeText = new ShapeText();
shapeText.x = 2048 / 2;
shapeText.y = 2732 / 2;
game.addChild(shapeText);
// Function to update the shape and text
function updateShapeAndText() {
	var randomShape = shapes[Math.floor(Math.random() * shapes.length)];
	var randomText = shapes[Math.floor(Math.random() * shapes.length)];
	shape.setShape(randomShape);
	shapeText.setText(randomText);
	currentShape = randomShape;
	currentShapeText = randomText;
	if (timer) {
		LK.clearTimeout(timer);
	}
	timer = LK.setTimeout(gameOver, 3000);
	timerTxt.setText('Time: 3');
}
// Function to handle True button press
function handleTruePress() {
	if (currentShape === currentShapeText) {
		score++;
		scoreTxt.setText('Score: ' + score);
		LK.clearTimeout(timer);
		updateShapeAndText();
	} else {
		lives--;
		LK.effects.flashScreen(0xff0000, 1000);
		if (lives > 0) {
			var heart = livesDisplay.pop();
			LK.gui.topLeft.removeChild(heart);
		} else {
			gameOver();
		}
	}
}
// Function to handle False button press
function handleFalsePress() {
	if (currentShape !== currentShapeText) {
		score++;
		scoreTxt.setText('Score: ' + score);
		LK.clearTimeout(timer);
		updateShapeAndText();
	} else {
		lives--;
		LK.effects.flashScreen(0xff0000, 1000);
		LK.getSound('wrongAnswer').play();
		if (livesDisplay.length > 0) {
			var heart = livesDisplay.pop();
			LK.gui.topLeft.removeChild(heart);
		}
		LK.getSound('wrongAnswer').play();
		if (lives <= 0) {
			gameOver();
		}
	}
}
// Create heart image assets for the lives display
for (var i = 0; i < lives; i++) {
	var heart = LK.getAsset('heart', {
		anchorX: 0.0,
		anchorY: 0.0,
		scaleX: 0.5,
		scaleY: 0.5,
		x: 50 + i * 100,
		y: 50
	});
	livesDisplay.push(heart);
	LK.gui.topLeft.addChild(heart);
}
// Create True and False buttons
var trueButtonBackground = LK.getAsset('trueButtonBackground', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2,
	scaleY: 2
});
game.addChild(trueButtonBackground);
trueButtonBackground.x = 2048 / 4;
trueButtonBackground.y = 2732 * 3 / 4;
var trueButton = new Text2('True', {
	size: 200,
	fill: "#ffffff"
});
trueButtonBackground.addChild(trueButton);
trueButton.anchor.set(0.5, 0.5);
trueButton.x = 2048 / 4;
trueButton.y = 2732 * 3 / 4;
game.addChild(trueButton);
var falseButtonBackground = LK.getAsset('falseButtonBackground', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2,
	scaleY: 2
});
game.addChild(falseButtonBackground);
falseButtonBackground.x = 2048 * 3 / 4;
falseButtonBackground.y = 2732 * 3 / 4;
var falseButton = new Text2('False', {
	size: 200,
	fill: "#ffffff"
});
falseButtonBackground.addChild(falseButton);
falseButton.anchor.set(0.5, 0.5);
falseButton.x = 2048 * 3 / 4;
falseButton.y = 2732 * 3 / 4;
game.addChild(falseButton);
// Add event listeners for buttons
trueButton.down = function (x, y, obj) {
	handleTruePress();
	timeLeft = 3;
	timerTxt.setText('Time: ' + timeLeft);
	LK.clearTimeout(timer);
	timer = LK.setTimeout(gameOver, 3000);
	LK.getSound('buttonClick').play();
};
falseButton.down = function (x, y, obj) {
	handleFalsePress();
	timeLeft = 3;
	timerTxt.setText('Time: ' + timeLeft);
	LK.clearTimeout(timer);
	timer = LK.setTimeout(gameOver, 3000);
	LK.getSound('buttonClick').play();
};
// Initialize the game with the first shape and text
updateShapeAndText();
// Update the timer text every second
var timerInterval = LK.setInterval(function () {
	console.log("Time Left: ", timeLeft);
	if (timeLeft > 0) {
		timeLeft--;
		timerTxt.setText('Time: ' + timeLeft);
	} else {
		lives--;
		if (lives > 0) {
			var heart = livesDisplay.pop();
			LK.gui.topLeft.removeChild(heart);
		}
		if (lives <= 0) {
			// Do nothing
		}
	}
}, 1000);
// Clear the timer interval when game over