/**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
/**** 
* Classes
****/ 
// Player class
var Player = Container.expand(function () {
	var self = Container.call(this);
	var playerAsset = self.attachAsset('player', {
		anchorX: 0.5,
		anchorY: 1
	});
	// For jump animation
	self.isJumping = false;
	return self;
});
// Tree class
var Tree = Container.expand(function () {
	var self = Container.call(this);
	var treeAsset = self.attachAsset('tree', {
		anchorX: 0.5,
		anchorY: 1
	});
	// Add a money icon on the tree
	var moneyAsset = self.attachAsset('money', {
		anchorX: 0.5,
		anchorY: 0.5,
		y: -treeAsset.height * 0.7
	});
	// Used to know if this tree has been collected
	self.collected = false;
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x1e5631 // deep forest green
});
/**** 
* Game Code
****/ 
// Ajoute l'asset image de fond personnalisé (remplace l'id par celui de ton image)
// Ajoute l'image de fond personnalisé derrière tout le reste
var backgroundImg = LK.getAsset('background', {
	anchorX: 0,
	anchorY: 0,
	x: 0,
	y: 0,
	width: BOARD_WIDTH,
	height: BOARD_HEIGHT
});
game.addChildAt(backgroundImg, 0); // Ajoute au fond (index 0)
// Les bonnes réponses sont définies par l'index 'c' pour chaque question
// Game constants
// Tree asset: green ellipse
// Money asset: yellow box
// Player asset: blue box
/**** 
* Game Code
/**** 
* Questions
****/ 
var QUESTIONS = [{
	q: "Combien de bananes faut-il pour faire un vélo ?",
	a: ["Aucune, c'est absurde !", "42", "3, si elles sont très grandes"],
	c: 0
}, {
	q: "Quel animal est le plus susceptible de devenir président ?",
	a: ["Le lama", "Le poisson rouge", "Le pigeon voyageur"],
	c: 2
}, {
	q: "Si un arbre tombe dans une forêt et que personne ne l’entend, fait-il du bruit ?",
	a: ["Oui, mais il chuchote", "Non, il chante", "Seulement les jours pairs"],
	c: 0
}, {
	q: "Quelle est la couleur du cheval vert d’Henri IV ?",
	a: ["Vert", "Bleu", "Invisible"],
	c: 0
}, {
	q: "Combien de lunes autour de la Terre un mardi ?",
	a: ["Une", "Trois", "Aucune, elles sont en vacances"],
	c: 0
}, {
	q: "Quel est le cri du billet de banque ?",
	a: ["Chling !", "Miaou", "Bip bip"],
	c: 0
}, {
	q: "Si tu plantes une pièce de 1€, que poussera-t-il ?",
	a: ["Un arbre à billets", "Un distributeur", "Un cactus doré"],
	c: 0
}, {
	q: "Quel est le sport préféré des arbres ?",
	a: ["Le tronc-volant", "Le basket-feuille", "Le branché-ball"],
	c: 1
}, {
	q: "Combien de temps met un escargot pour faire le tour d’un arbre ?",
	a: ["Le temps qu’il veut", "Jamais, il s’arrête pour dormir", "42 jours"],
	c: 0
}, {
	q: "Quel est le prénom du plus riche des arbres ?",
	a: ["Billet", "Feuille", "Racine"],
	c: 1
},
// 40 nouvelles questions débiles
{
	q: "Pourquoi les poissons ne volent-ils pas en avion ?",
	a: ["Ils préfèrent nager", "Ils n'ont pas de passeport", "Ils ont peur du vide"],
	c: 0
}, {
	q: "Combien de chaussettes faut-il pour habiller une pieuvre ?",
	a: ["Huit", "Seize", "Aucune, elle préfère être pieds nus"],
	c: 0
}, {
	q: "Quel est le fruit préféré des ordinateurs ?",
	a: ["La pomme", "La banane USB", "La fraise pixelisée"],
	c: 0
}, {
	q: "Que fait un canard quand il a soif ?",
	a: ["Il boit", "Il fait coin-coin", "Il nage à l’envers"],
	c: 0
}, {
	q: "Pourquoi les girafes n’utilisent-elles pas d’ascenseur ?",
	a: ["Elles sont trop grandes", "Elles préfèrent les escaliers", "Elles volent"],
	c: 0
}, {
	q: "Combien de moustaches a un chat qui se prend pour un tigre ?",
	a: ["Autant qu’un chat", "Aucune, il les a perdues", "42"],
	c: 0
}, {
	q: "Quel est le plat préféré des licornes ?",
	a: ["La salade arc-en-ciel", "Le gratin de nuages", "Les frites magiques"],
	c: 0
}, {
	q: "Pourquoi les nuages ne tombent-ils pas du ciel ?",
	a: ["Ils sont légers", "Ils ont des parachutes", "Ils sont collés avec du scotch"],
	c: 0
}, {
	q: "Combien de roues a un vélo carré ?",
	a: ["Quatre", "Aucune, il ne roule pas", "Deux, mais elles sont carrées"],
	c: 2
}, {
	q: "Quel est le métier rêvé d’un escargot ?",
	a: ["Pilote de Formule 1", "Coureur de marathon", "Astronaute"],
	c: 0
}, {
	q: "Pourquoi les arbres ne dansent-ils pas la salsa ?",
	a: ["Ils sont enracinés", "Ils préfèrent le rock", "Ils n’ont pas de chaussures"],
	c: 0
}, {
	q: "Combien de doigts a une main de géant ?",
	a: ["Cinq, mais très gros", "Dix", "Aucun, il a des pattes"],
	c: 0
}, {
	q: "Quel est le rêve secret d’un caillou ?",
	a: ["Devenir une montagne", "Voler", "Faire du surf"],
	c: 0
}, {
	q: "Pourquoi les grenouilles ne portent-elles pas de lunettes ?",
	a: ["Elles voient très bien", "Elles préfèrent les lentilles", "Elles n’ont pas d’oreilles"],
	c: 0
}, {
	q: "Combien de pages dans un livre invisible ?",
	a: ["Aucune", "42", "Autant qu’on veut"],
	c: 2
}, {
	q: "Quel est le sport préféré des fourmis ?",
	a: ["Le levé de miettes", "Le foot", "Le saut de brindille"],
	c: 0
}, {
	q: "Pourquoi les horloges ne mangent-elles jamais de pizza ?",
	a: ["Elles n’ont pas de bouche", "Elles préfèrent les pâtes", "Elles sont au régime"],
	c: 0
}, {
	q: "Combien de couleurs dans un arc-en-ciel en noir et blanc ?",
	a: ["Aucune", "Deux", "Sept"],
	c: 1
}, {
	q: "Quel est le cri du nuage ?",
	a: ["Pschhh", "Boum", "Ploc"],
	c: 0
}, {
	q: "Pourquoi les lapins ne font-ils pas de vélo ?",
	a: ["Ils préfèrent sauter", "Ils n’ont pas de casque", "Ils sont trop rapides"],
	c: 0
}, {
	q: "Combien de dents a un crocodile en peluche ?",
	a: ["Aucune", "Deux", "Autant qu’il veut"],
	c: 0
}, {
	q: "Quel est le dessert préféré des robots ?",
	a: ["Le circuit glacé", "La tarte à la RAM", "Le gâteau binaire"],
	c: 0
}, {
	q: "Pourquoi les étoiles filantes ne s’arrêtent-elles jamais ?",
	a: ["Elles sont pressées", "Elles n’ont pas de freins", "Elles aiment voyager"],
	c: 1
}, {
	q: "Combien de boutons sur la chemise d’un fantôme ?",
	a: ["Aucun", "Un", "Autant que de trous"],
	c: 0
}, {
	q: "Quel est le jeu préféré des grenouilles ?",
	a: ["La marelle", "Le saute-mouton", "Le cache-cache"],
	c: 0
}, {
	q: "Pourquoi les éléphants ne se cachent-ils pas dans les arbres ?",
	a: ["On les verrait", "Ils sont trop gros", "Ils ont le vertige"],
	c: 1
}, {
	q: "Combien de plumes sur un poulet sans plumes ?",
	a: ["Aucune", "Deux", "Autant que de poils sur un œuf"],
	c: 0
}, {
	q: "Quel est le rêve d’un réveil ?",
	a: ["Dormir", "Sonner toute la journée", "Devenir une horloge"],
	c: 0
}, {
	q: "Pourquoi les pizzas ne chantent-elles pas ?",
	a: ["Elles n’ont pas de bouche", "Elles sont trop chaudes", "Elles préfèrent danser"],
	c: 0
}, {
	q: "Combien de roues sur un avion en papier ?",
	a: ["Aucune", "Deux", "Quatre"],
	c: 0
}, {
	q: "Quel est le plat préféré des fantômes ?",
	a: ["La soupe de brouillard", "Le gratin d’ombre", "Le gâteau transparent"],
	c: 0
}, {
	q: "Pourquoi les crayons ne mangent-ils pas de soupe ?",
	a: ["Ils n’ont pas de bouche", "Ils préfèrent les gommes", "Ils sont allergiques"],
	c: 0
}, {
	q: "Combien de poils sur la tête d’un chauve ?",
	a: ["Aucun", "Un", "Autant qu’il veut"],
	c: 0
}, {
	q: "Quel est le sport préféré des nuages ?",
	a: ["Le vol plané", "Le saut de pluie", "Le cache-soleil"],
	c: 0
}, {
	q: "Pourquoi les tortues ne courent-elles pas le marathon ?",
	a: ["Elles préfèrent marcher", "Elles n’aiment pas courir", "Elles sont déjà rapides"],
	c: 0
}, {
	q: "Combien de pages dans un livre fermé ?",
	a: ["Autant qu’ouvert", "Aucune", "42"],
	c: 0
}, {
	q: "Quel est le cri du soleil ?",
	a: ["Aïe, ça chauffe !", "Bzzz", "Chut"],
	c: 0
}, {
	q: "Pourquoi les arbres ne portent-ils pas de chapeaux ?",
	a: ["Ils ont déjà des feuilles", "Ils n’aiment pas la mode", "Ils préfèrent les casques"],
	c: 0
}, {
	q: "Combien de roues sur un train fantôme ?",
	a: ["Aucune", "Autant qu’il veut", "Quatre"],
	c: 1
}, {
	q: "Quel est le rêve d’un nuage ?",
	a: ["Devenir une pluie", "Devenir un arc-en-ciel", "Devenir un mouton"],
	c: 0
}, {
	q: "Pourquoi les poissons ne jouent-ils pas au foot ?",
	a: ["Ils n’ont pas de pieds", "Ils préfèrent nager", "Ils n’aiment pas le ballon"],
	c: 0
}, {
	q: "Combien de dents a un requin en peluche ?",
	a: ["Aucune", "Deux", "Autant qu’il veut"],
	c: 0
}, {
	q: "Quel est le plat préféré des arbres ?",
	a: ["La soupe de feuilles", "Le gratin de racines", "Le gâteau de sève"],
	c: 0
}, {
	q: "Pourquoi les oiseaux ne font-ils pas de vélo ?",
	a: ["Ils préfèrent voler", "Ils n’ont pas de roues", "Ils sont trop petits"],
	c: 0
}, {
	q: "Combien de boutons sur la chemise d’un arbre ?",
	a: ["Aucun", "Un", "Autant que de feuilles"],
	c: 2
}, {
	q: "Quel est le rêve d’un poisson rouge ?",
	a: ["Devenir un dauphin", "Voler", "Faire du vélo"],
	c: 0
}, {
	q: "Pourquoi les éléphants ne volent-ils pas ?",
	a: ["Ils sont trop lourds", "Ils n’ont pas d’ailes", "Ils préfèrent marcher"],
	c: 1
}, {
	q: "Combien de pages dans un livre de sable ?",
	a: ["Aucune", "Autant qu’on veut", "42"],
	c: 1
}, {
	q: "Quel est le sport préféré des arbres en hiver ?",
	a: ["Le ski de branche", "Le patinage sur sève", "Le lancer de feuille morte"],
	c: 0
}];
var BOARD_WIDTH = 2048;
var BOARD_HEIGHT = 2732;
var GROUND_Y = 2300; // y position of the ground
var TREE_MIN_X = 200;
var TREE_MAX_X = BOARD_WIDTH - 200;
var TREE_MIN_Y = 800;
var TREE_MAX_Y = GROUND_Y - 200;
var TREE_COUNT = 5;
// Game state
var trees = [];
var player = null;
var score = 0;
var level = 1;
var moneyNeeded = 500;
var questionIndex = 0;
var currentTree = null;
var isQuestionActive = false;
var questionPanel = null;
var answerButtons = [];
var collectedMoney = 0;
var jumpTarget = null;
var canJump = true;
// GUI
var scoreTxt = new Text2('0 €', {
	size: 120,
	fill: 0xFFF700
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var levelTxt = new Text2('Niveau 1', {
	size: 80,
	fill: 0xFFFFFF
});
levelTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(levelTxt);
levelTxt.y = 130;
// Helper: random int
function randInt(min, max) {
	return min + Math.floor(Math.random() * (max - min + 1));
}
// Helper: pick random question (avoid repeats in a session)
function pickRandomQuestions(n) {
	var used = {};
	var arr = [];
	while (arr.length < n) {
		var idx = randInt(0, QUESTIONS.length - 1);
		if (!used[idx]) {
			arr.push(QUESTIONS[idx]);
			used[idx] = true;
		}
	}
	return arr;
}
// Place trees randomly
function spawnTrees() {
	// Remove old trees
	for (var i = 0; i < trees.length; i++) {
		trees[i].destroy();
	}
	trees = [];
	for (var i = 0; i < TREE_COUNT; i++) {
		var t = new Tree();
		// Random position, not too close to edges or each other
		var tries = 0;
		var ok = false;
		while (!ok && tries < 20) {
			t.x = randInt(TREE_MIN_X, TREE_MAX_X);
			t.y = randInt(TREE_MIN_Y, TREE_MAX_Y);
			ok = true;
			for (var j = 0; j < trees.length; j++) {
				var dx = t.x - trees[j].x;
				var dy = t.y - trees[j].y;
				var dist = Math.sqrt(dx * dx + dy * dy);
				if (dist < 400) ok = false;
			}
			tries++;
		}
		trees.push(t);
		game.addChild(t);
	}
}
// Place player at a random tree
function placePlayer() {
	var idx = randInt(0, trees.length - 1);
	var t = trees[idx];
	player.x = t.x;
	player.y = t.y - 10;
}
// Find nearest tree to (x, y) not already collected
function findNearestTree(x, y) {
	var minDist = 99999;
	var nearest = null;
	for (var i = 0; i < trees.length; i++) {
		if (trees[i].collected) continue;
		var dx = trees[i].x - x;
		var dy = trees[i].y - y;
		var dist = Math.sqrt(dx * dx + dy * dy);
		if (dist < minDist) {
			minDist = dist;
			nearest = trees[i];
		}
	}
	return nearest;
}
// Show question panel
function showQuestions(tree, onFinish) {
	isQuestionActive = true;
	questionPanel = new Container();
	// Panel background
	var panelBg = LK.getAsset('tree', {
		width: 1200,
		height: 900,
		color: 0x222222,
		anchorX: 0.5,
		anchorY: 0.5
	});
	panelBg.alpha = 0.95;
	questionPanel.addChild(panelBg);
	questionPanel.x = BOARD_WIDTH / 2;
	questionPanel.y = BOARD_HEIGHT / 2;
	// Pick 3 random questions
	var qs = pickRandomQuestions(3);
	// Ensure each question has only one correct answer (c always 0, and a[0] is the correct one)
	for (var i = 0; i < qs.length; i++) {
		if (qs[i].c !== 0) {
			// Swap correct answer to first position
			var correctIdx = qs[i].c;
			var tmp = qs[i].a[0];
			qs[i].a[0] = qs[i].a[correctIdx];
			qs[i].a[correctIdx] = tmp;
			qs[i].c = 0;
		}
	}
	questionIndex = 0;
	var correctCount = 0;
	var moneyWon = 0;
	// Question text
	var qTxt = new Text2('', {
		size: 70,
		fill: "#fff"
	});
	qTxt.anchor.set(0.5, 0);
	qTxt.y = -350;
	questionPanel.addChild(qTxt);
	// Answer buttons
	answerButtons = [];
	for (var i = 0; i < 3; i++) {
		var btn = new Container();
		var btnBg = LK.getAsset('money', {
			width: 900,
			height: 120,
			color: 0x3cb371,
			anchorX: 0.5,
			anchorY: 0.5
		});
		btn.addChild(btnBg);
		var btnTxt = new Text2('', {
			size: 55,
			fill: "#222"
		});
		btnTxt.anchor.set(0.5, 0.5);
		btn.addChild(btnTxt);
		btn.y = -100 + i * 180;
		btn.buttonIndex = i;
		btn.down = function (x, y, obj) {
			if (!isQuestionActive) return;
			var idx = obj.buttonIndex;
			var q = qs[questionIndex];
			if (idx === q.c) {
				correctCount++;
				// Donne de l'argent pour chaque bonne réponse (mais l'argent pour l'arbre est donné à la collecte de l'arbre, pas ici)
				var moneyForThis = 0; // Pas d'argent ici, l'argent est donné à la collecte de l'arbre
				LK.setScore(score);
				scoreTxt.setText(score + " €");
				// Animate button green
				if (obj.children && obj.children[0]) {
					tween(obj.children[0], {
						tint: 0x83de44
					}, {
						duration: 200,
						onFinish: function onFinish() {
							if (obj.children && obj.children[0]) {
								tween(obj.children[0], {
									tint: 0x3cb371
								}, {
									duration: 200
								});
							}
						}
					});
				}
				// Animate money gain
				var moneyAnim = LK.getAsset('money', {
					width: 200,
					height: 100,
					color: 0xffe066,
					anchorX: 0.5,
					anchorY: 0.5
				});
				moneyAnim.x = 0;
				moneyAnim.y = 250;
				questionPanel.addChild(moneyAnim);
				var moneyText = new Text2("+" + moneyForThis + " €", {
					size: 70,
					fill: "#222"
				});
				moneyText.anchor.set(0.5, 0.5);
				moneyAnim.addChild(moneyText);
				tween(moneyAnim, {
					y: 100,
					alpha: 0
				}, {
					duration: 900,
					onFinish: function onFinish() {
						moneyAnim.destroy();
					}
				});
				// Check for level up after awarding money
				checkLevelUp();
			} else {
				// Animate button red
				if (obj.children && obj.children[0]) {
					tween(obj.children[0], {
						tint: 0xd83318
					}, {
						duration: 200,
						onFinish: function onFinish() {
							if (obj.children && obj.children[0]) {
								tween(obj.children[0], {
									tint: 0x3cb371
								}, {
									duration: 200
								});
							}
						}
					});
				}
			}
			// Next question or finish
			LK.setTimeout(function () {
				questionIndex++;
				if (questionIndex < 3) {
					setQuestion();
				} else {
					// Bonus à la fin de la série de questions si au moins une bonne réponse
					if (correctCount > 0) {
						// Bonus supplémentaire
						var bonus = randInt(50, 100);
						score += bonus;
						LK.setScore(score);
						scoreTxt.setText(score + " €");
						// Animation du bonus
						var moneyAnim = LK.getAsset('money', {
							width: 200,
							height: 100,
							color: 0xffe066,
							anchorX: 0.5,
							anchorY: 0.5
						});
						moneyAnim.x = 0;
						moneyAnim.y = 250;
						questionPanel.addChild(moneyAnim);
						var moneyText = new Text2("+" + bonus + " € (bonus)", {
							size: 70,
							fill: "#222"
						});
						moneyText.anchor.set(0.5, 0.5);
						moneyAnim.addChild(moneyText);
						tween(moneyAnim, {
							y: 100,
							alpha: 0
						}, {
							duration: 900,
							onFinish: function onFinish() {
								moneyAnim.destroy();
								finishPanel();
							}
						});
						// Vérifie si le joueur passe au niveau suivant après le bonus
						checkLevelUp();
					} else {
						finishPanel();
					}
				}
			}, 400);
		};
		answerButtons.push(btn);
		questionPanel.addChild(btn);
	}
	// Set question/answers
	function setQuestion() {
		var q = qs[questionIndex];
		qTxt.setText(q.q);
		if (qTxt && typeof qTxt.setStyle === "function") {
			qTxt.setStyle({
				fill: 0xD83318
			}); // rouge vif pour la question
		}
		for (var i = 0; i < 3; i++) {
			answerButtons[i].children[1].setText(q.a[i]);
			if (answerButtons[i].children[1] && typeof answerButtons[i].children[1].setStyle === "function") {
				answerButtons[i].children[1].setStyle({
					fill: 0xD83318
				}); // rouge vif pour les réponses
			}
		}
	}
	// Remove panel and call onFinish
	function finishPanel() {
		isQuestionActive = false;
		if (questionPanel) {
			questionPanel.destroy();
			questionPanel = null;
		}
		answerButtons = [];
		if (onFinish) onFinish(correctCount > 0, collectedMoney);
	}
	setQuestion();
	game.addChild(questionPanel);
}
// Level up logic
function checkLevelUp() {
	while (score >= moneyNeeded) {
		level++;
		moneyNeeded *= 2;
		levelTxt.setText("Niveau " + level);
		// Update score and level display in case of level up
		scoreTxt.setText(score + " €");
		levelTxt.setText("Niveau " + level);
		// Flash effect
		LK.effects.flashScreen(0x83de44, 800);
		// Respawn trees, reset player
		spawnTrees();
		placePlayer();
	}
}
// Initialize game
function startGame() {
	score = 0;
	level = 1;
	moneyNeeded = 500;
	collectedMoney = 0;
	scoreTxt.setText(score + " €");
	levelTxt.setText("Niveau " + level);
	spawnTrees();
	if (player) player.destroy();
	player = new Player();
	game.addChild(player);
	placePlayer();
	canJump = true;
	isQuestionActive = false;
	if (questionPanel) {
		questionPanel.destroy();
		questionPanel = null;
	}
	// Play background music in loop at game start
	LK.playMusic('bgmusic', {
		loop: true
	});
}
// Handle tap: jump to nearest uncollected tree
game.down = function (x, y, obj) {
	if (isQuestionActive || !canJump) return;
	// Find nearest uncollected tree not at current position
	var nearest = null;
	var minDist = 99999;
	for (var i = 0; i < trees.length; i++) {
		if (trees[i].collected) continue;
		var dx = trees[i].x - player.x;
		var dy = trees[i].y - player.y;
		var dist = Math.sqrt(dx * dx + dy * dy);
		if (dist > 50 && dist < minDist) {
			minDist = dist;
			nearest = trees[i];
		}
	}
	if (!nearest) return;
	canJump = false;
	player.isJumping = true;
	jumpTarget = {
		x: nearest.x,
		y: nearest.y - 10
	};
	// Animate jump
	var startY = player.y;
	var midY = startY - 180;
	tween(player, {
		y: midY
	}, {
		duration: 180,
		easing: tween.easeOut,
		onFinish: function onFinish() {
			tween(player, {
				y: jumpTarget.y
			}, {
				duration: 180,
				easing: tween.easeIn,
				onFinish: function onFinish() {
					player.x = jumpTarget.x;
					player.y = jumpTarget.y;
					player.isJumping = false;
					canJump = true;
					// Check collision with tree
					for (var i = 0; i < trees.length; i++) {
						var t = trees[i];
						if (!t.collected && Math.abs(player.x - t.x) < 80 && Math.abs(player.y - (t.y - 10)) < 80) {
							t.collected = true;
							// Animate tree
							tween(t, {
								alpha: 0.3
							}, {
								duration: 400
							});
							// Donne de l'argent à la collecte de l'arbre (avant les questions)
							var moneyForTree = randInt(50, 100);
							score += moneyForTree;
							collectedMoney += moneyForTree;
							LK.setScore(score);
							scoreTxt.setText(score + " €");
							// Vérifie si le joueur passe au niveau suivant après chaque arbre collecté
							checkLevelUp();
							// Animation de gain d'argent à la collecte de l'arbre
							var moneyAnim = LK.getAsset('money', {
								width: 200,
								height: 100,
								color: 0xffe066,
								anchorX: 0.5,
								anchorY: 0.5
							});
							moneyAnim.x = t.x;
							moneyAnim.y = t.y - 200;
							game.addChild(moneyAnim);
							var moneyText = new Text2("+" + moneyForTree + " €", {
								size: 70,
								fill: "#222"
							});
							moneyText.anchor.set(0.5, 0.5);
							moneyAnim.addChild(moneyText);
							tween(moneyAnim, {
								y: moneyAnim.y - 100,
								alpha: 0
							}, {
								duration: 900,
								onFinish: function onFinish() {
									moneyAnim.destroy();
								}
							});
							// Show questions
							showQuestions(t, function (success, money) {
								if (success) {
									// Animate money to score
									LK.effects.flashObject(scoreTxt, 0xffe066, 600);
								}
								// If all trees collected, respawn
								var allCollected = true;
								for (var j = 0; j < trees.length; j++) {
									if (!trees[j].collected) allCollected = false;
								}
								if (allCollected) {
									spawnTrees();
									placePlayer();
								}
							});
							break;
						}
					}
				}
			});
		}
	});
};
// Prevent drag
game.move = function (x, y, obj) {
	// No drag, only tap to jump
};
// Main update loop
game.update = function () {
	// Nothing needed here for now
};
// Start game
startGame(); /**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
/**** 
* Classes
****/ 
// Player class
var Player = Container.expand(function () {
	var self = Container.call(this);
	var playerAsset = self.attachAsset('player', {
		anchorX: 0.5,
		anchorY: 1
	});
	// For jump animation
	self.isJumping = false;
	return self;
});
// Tree class
var Tree = Container.expand(function () {
	var self = Container.call(this);
	var treeAsset = self.attachAsset('tree', {
		anchorX: 0.5,
		anchorY: 1
	});
	// Add a money icon on the tree
	var moneyAsset = self.attachAsset('money', {
		anchorX: 0.5,
		anchorY: 0.5,
		y: -treeAsset.height * 0.7
	});
	// Used to know if this tree has been collected
	self.collected = false;
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x1e5631 // deep forest green
});
/**** 
* Game Code
****/ 
// Ajoute l'asset image de fond personnalisé (remplace l'id par celui de ton image)
// Ajoute l'image de fond personnalisé derrière tout le reste
var backgroundImg = LK.getAsset('background', {
	anchorX: 0,
	anchorY: 0,
	x: 0,
	y: 0,
	width: BOARD_WIDTH,
	height: BOARD_HEIGHT
});
game.addChildAt(backgroundImg, 0); // Ajoute au fond (index 0)
// Les bonnes réponses sont définies par l'index 'c' pour chaque question
// Game constants
// Tree asset: green ellipse
// Money asset: yellow box
// Player asset: blue box
/**** 
* Game Code
/**** 
* Questions
****/ 
var QUESTIONS = [{
	q: "Combien de bananes faut-il pour faire un vélo ?",
	a: ["Aucune, c'est absurde !", "42", "3, si elles sont très grandes"],
	c: 0
}, {
	q: "Quel animal est le plus susceptible de devenir président ?",
	a: ["Le lama", "Le poisson rouge", "Le pigeon voyageur"],
	c: 2
}, {
	q: "Si un arbre tombe dans une forêt et que personne ne l’entend, fait-il du bruit ?",
	a: ["Oui, mais il chuchote", "Non, il chante", "Seulement les jours pairs"],
	c: 0
}, {
	q: "Quelle est la couleur du cheval vert d’Henri IV ?",
	a: ["Vert", "Bleu", "Invisible"],
	c: 0
}, {
	q: "Combien de lunes autour de la Terre un mardi ?",
	a: ["Une", "Trois", "Aucune, elles sont en vacances"],
	c: 0
}, {
	q: "Quel est le cri du billet de banque ?",
	a: ["Chling !", "Miaou", "Bip bip"],
	c: 0
}, {
	q: "Si tu plantes une pièce de 1€, que poussera-t-il ?",
	a: ["Un arbre à billets", "Un distributeur", "Un cactus doré"],
	c: 0
}, {
	q: "Quel est le sport préféré des arbres ?",
	a: ["Le tronc-volant", "Le basket-feuille", "Le branché-ball"],
	c: 1
}, {
	q: "Combien de temps met un escargot pour faire le tour d’un arbre ?",
	a: ["Le temps qu’il veut", "Jamais, il s’arrête pour dormir", "42 jours"],
	c: 0
}, {
	q: "Quel est le prénom du plus riche des arbres ?",
	a: ["Billet", "Feuille", "Racine"],
	c: 1
},
// 40 nouvelles questions débiles
{
	q: "Pourquoi les poissons ne volent-ils pas en avion ?",
	a: ["Ils préfèrent nager", "Ils n'ont pas de passeport", "Ils ont peur du vide"],
	c: 0
}, {
	q: "Combien de chaussettes faut-il pour habiller une pieuvre ?",
	a: ["Huit", "Seize", "Aucune, elle préfère être pieds nus"],
	c: 0
}, {
	q: "Quel est le fruit préféré des ordinateurs ?",
	a: ["La pomme", "La banane USB", "La fraise pixelisée"],
	c: 0
}, {
	q: "Que fait un canard quand il a soif ?",
	a: ["Il boit", "Il fait coin-coin", "Il nage à l’envers"],
	c: 0
}, {
	q: "Pourquoi les girafes n’utilisent-elles pas d’ascenseur ?",
	a: ["Elles sont trop grandes", "Elles préfèrent les escaliers", "Elles volent"],
	c: 0
}, {
	q: "Combien de moustaches a un chat qui se prend pour un tigre ?",
	a: ["Autant qu’un chat", "Aucune, il les a perdues", "42"],
	c: 0
}, {
	q: "Quel est le plat préféré des licornes ?",
	a: ["La salade arc-en-ciel", "Le gratin de nuages", "Les frites magiques"],
	c: 0
}, {
	q: "Pourquoi les nuages ne tombent-ils pas du ciel ?",
	a: ["Ils sont légers", "Ils ont des parachutes", "Ils sont collés avec du scotch"],
	c: 0
}, {
	q: "Combien de roues a un vélo carré ?",
	a: ["Quatre", "Aucune, il ne roule pas", "Deux, mais elles sont carrées"],
	c: 2
}, {
	q: "Quel est le métier rêvé d’un escargot ?",
	a: ["Pilote de Formule 1", "Coureur de marathon", "Astronaute"],
	c: 0
}, {
	q: "Pourquoi les arbres ne dansent-ils pas la salsa ?",
	a: ["Ils sont enracinés", "Ils préfèrent le rock", "Ils n’ont pas de chaussures"],
	c: 0
}, {
	q: "Combien de doigts a une main de géant ?",
	a: ["Cinq, mais très gros", "Dix", "Aucun, il a des pattes"],
	c: 0
}, {
	q: "Quel est le rêve secret d’un caillou ?",
	a: ["Devenir une montagne", "Voler", "Faire du surf"],
	c: 0
}, {
	q: "Pourquoi les grenouilles ne portent-elles pas de lunettes ?",
	a: ["Elles voient très bien", "Elles préfèrent les lentilles", "Elles n’ont pas d’oreilles"],
	c: 0
}, {
	q: "Combien de pages dans un livre invisible ?",
	a: ["Aucune", "42", "Autant qu’on veut"],
	c: 2
}, {
	q: "Quel est le sport préféré des fourmis ?",
	a: ["Le levé de miettes", "Le foot", "Le saut de brindille"],
	c: 0
}, {
	q: "Pourquoi les horloges ne mangent-elles jamais de pizza ?",
	a: ["Elles n’ont pas de bouche", "Elles préfèrent les pâtes", "Elles sont au régime"],
	c: 0
}, {
	q: "Combien de couleurs dans un arc-en-ciel en noir et blanc ?",
	a: ["Aucune", "Deux", "Sept"],
	c: 1
}, {
	q: "Quel est le cri du nuage ?",
	a: ["Pschhh", "Boum", "Ploc"],
	c: 0
}, {
	q: "Pourquoi les lapins ne font-ils pas de vélo ?",
	a: ["Ils préfèrent sauter", "Ils n’ont pas de casque", "Ils sont trop rapides"],
	c: 0
}, {
	q: "Combien de dents a un crocodile en peluche ?",
	a: ["Aucune", "Deux", "Autant qu’il veut"],
	c: 0
}, {
	q: "Quel est le dessert préféré des robots ?",
	a: ["Le circuit glacé", "La tarte à la RAM", "Le gâteau binaire"],
	c: 0
}, {
	q: "Pourquoi les étoiles filantes ne s’arrêtent-elles jamais ?",
	a: ["Elles sont pressées", "Elles n’ont pas de freins", "Elles aiment voyager"],
	c: 1
}, {
	q: "Combien de boutons sur la chemise d’un fantôme ?",
	a: ["Aucun", "Un", "Autant que de trous"],
	c: 0
}, {
	q: "Quel est le jeu préféré des grenouilles ?",
	a: ["La marelle", "Le saute-mouton", "Le cache-cache"],
	c: 0
}, {
	q: "Pourquoi les éléphants ne se cachent-ils pas dans les arbres ?",
	a: ["On les verrait", "Ils sont trop gros", "Ils ont le vertige"],
	c: 1
}, {
	q: "Combien de plumes sur un poulet sans plumes ?",
	a: ["Aucune", "Deux", "Autant que de poils sur un œuf"],
	c: 0
}, {
	q: "Quel est le rêve d’un réveil ?",
	a: ["Dormir", "Sonner toute la journée", "Devenir une horloge"],
	c: 0
}, {
	q: "Pourquoi les pizzas ne chantent-elles pas ?",
	a: ["Elles n’ont pas de bouche", "Elles sont trop chaudes", "Elles préfèrent danser"],
	c: 0
}, {
	q: "Combien de roues sur un avion en papier ?",
	a: ["Aucune", "Deux", "Quatre"],
	c: 0
}, {
	q: "Quel est le plat préféré des fantômes ?",
	a: ["La soupe de brouillard", "Le gratin d’ombre", "Le gâteau transparent"],
	c: 0
}, {
	q: "Pourquoi les crayons ne mangent-ils pas de soupe ?",
	a: ["Ils n’ont pas de bouche", "Ils préfèrent les gommes", "Ils sont allergiques"],
	c: 0
}, {
	q: "Combien de poils sur la tête d’un chauve ?",
	a: ["Aucun", "Un", "Autant qu’il veut"],
	c: 0
}, {
	q: "Quel est le sport préféré des nuages ?",
	a: ["Le vol plané", "Le saut de pluie", "Le cache-soleil"],
	c: 0
}, {
	q: "Pourquoi les tortues ne courent-elles pas le marathon ?",
	a: ["Elles préfèrent marcher", "Elles n’aiment pas courir", "Elles sont déjà rapides"],
	c: 0
}, {
	q: "Combien de pages dans un livre fermé ?",
	a: ["Autant qu’ouvert", "Aucune", "42"],
	c: 0
}, {
	q: "Quel est le cri du soleil ?",
	a: ["Aïe, ça chauffe !", "Bzzz", "Chut"],
	c: 0
}, {
	q: "Pourquoi les arbres ne portent-ils pas de chapeaux ?",
	a: ["Ils ont déjà des feuilles", "Ils n’aiment pas la mode", "Ils préfèrent les casques"],
	c: 0
}, {
	q: "Combien de roues sur un train fantôme ?",
	a: ["Aucune", "Autant qu’il veut", "Quatre"],
	c: 1
}, {
	q: "Quel est le rêve d’un nuage ?",
	a: ["Devenir une pluie", "Devenir un arc-en-ciel", "Devenir un mouton"],
	c: 0
}, {
	q: "Pourquoi les poissons ne jouent-ils pas au foot ?",
	a: ["Ils n’ont pas de pieds", "Ils préfèrent nager", "Ils n’aiment pas le ballon"],
	c: 0
}, {
	q: "Combien de dents a un requin en peluche ?",
	a: ["Aucune", "Deux", "Autant qu’il veut"],
	c: 0
}, {
	q: "Quel est le plat préféré des arbres ?",
	a: ["La soupe de feuilles", "Le gratin de racines", "Le gâteau de sève"],
	c: 0
}, {
	q: "Pourquoi les oiseaux ne font-ils pas de vélo ?",
	a: ["Ils préfèrent voler", "Ils n’ont pas de roues", "Ils sont trop petits"],
	c: 0
}, {
	q: "Combien de boutons sur la chemise d’un arbre ?",
	a: ["Aucun", "Un", "Autant que de feuilles"],
	c: 2
}, {
	q: "Quel est le rêve d’un poisson rouge ?",
	a: ["Devenir un dauphin", "Voler", "Faire du vélo"],
	c: 0
}, {
	q: "Pourquoi les éléphants ne volent-ils pas ?",
	a: ["Ils sont trop lourds", "Ils n’ont pas d’ailes", "Ils préfèrent marcher"],
	c: 1
}, {
	q: "Combien de pages dans un livre de sable ?",
	a: ["Aucune", "Autant qu’on veut", "42"],
	c: 1
}, {
	q: "Quel est le sport préféré des arbres en hiver ?",
	a: ["Le ski de branche", "Le patinage sur sève", "Le lancer de feuille morte"],
	c: 0
}];
var BOARD_WIDTH = 2048;
var BOARD_HEIGHT = 2732;
var GROUND_Y = 2300; // y position of the ground
var TREE_MIN_X = 200;
var TREE_MAX_X = BOARD_WIDTH - 200;
var TREE_MIN_Y = 800;
var TREE_MAX_Y = GROUND_Y - 200;
var TREE_COUNT = 5;
// Game state
var trees = [];
var player = null;
var score = 0;
var level = 1;
var moneyNeeded = 500;
var questionIndex = 0;
var currentTree = null;
var isQuestionActive = false;
var questionPanel = null;
var answerButtons = [];
var collectedMoney = 0;
var jumpTarget = null;
var canJump = true;
// GUI
var scoreTxt = new Text2('0 €', {
	size: 120,
	fill: 0xFFF700
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var levelTxt = new Text2('Niveau 1', {
	size: 80,
	fill: 0xFFFFFF
});
levelTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(levelTxt);
levelTxt.y = 130;
// Helper: random int
function randInt(min, max) {
	return min + Math.floor(Math.random() * (max - min + 1));
}
// Helper: pick random question (avoid repeats in a session)
function pickRandomQuestions(n) {
	var used = {};
	var arr = [];
	while (arr.length < n) {
		var idx = randInt(0, QUESTIONS.length - 1);
		if (!used[idx]) {
			arr.push(QUESTIONS[idx]);
			used[idx] = true;
		}
	}
	return arr;
}
// Place trees randomly
function spawnTrees() {
	// Remove old trees
	for (var i = 0; i < trees.length; i++) {
		trees[i].destroy();
	}
	trees = [];
	for (var i = 0; i < TREE_COUNT; i++) {
		var t = new Tree();
		// Random position, not too close to edges or each other
		var tries = 0;
		var ok = false;
		while (!ok && tries < 20) {
			t.x = randInt(TREE_MIN_X, TREE_MAX_X);
			t.y = randInt(TREE_MIN_Y, TREE_MAX_Y);
			ok = true;
			for (var j = 0; j < trees.length; j++) {
				var dx = t.x - trees[j].x;
				var dy = t.y - trees[j].y;
				var dist = Math.sqrt(dx * dx + dy * dy);
				if (dist < 400) ok = false;
			}
			tries++;
		}
		trees.push(t);
		game.addChild(t);
	}
}
// Place player at a random tree
function placePlayer() {
	var idx = randInt(0, trees.length - 1);
	var t = trees[idx];
	player.x = t.x;
	player.y = t.y - 10;
}
// Find nearest tree to (x, y) not already collected
function findNearestTree(x, y) {
	var minDist = 99999;
	var nearest = null;
	for (var i = 0; i < trees.length; i++) {
		if (trees[i].collected) continue;
		var dx = trees[i].x - x;
		var dy = trees[i].y - y;
		var dist = Math.sqrt(dx * dx + dy * dy);
		if (dist < minDist) {
			minDist = dist;
			nearest = trees[i];
		}
	}
	return nearest;
}
// Show question panel
function showQuestions(tree, onFinish) {
	isQuestionActive = true;
	questionPanel = new Container();
	// Panel background
	var panelBg = LK.getAsset('tree', {
		width: 1200,
		height: 900,
		color: 0x222222,
		anchorX: 0.5,
		anchorY: 0.5
	});
	panelBg.alpha = 0.95;
	questionPanel.addChild(panelBg);
	questionPanel.x = BOARD_WIDTH / 2;
	questionPanel.y = BOARD_HEIGHT / 2;
	// Pick 3 random questions
	var qs = pickRandomQuestions(3);
	// Ensure each question has only one correct answer (c always 0, and a[0] is the correct one)
	for (var i = 0; i < qs.length; i++) {
		if (qs[i].c !== 0) {
			// Swap correct answer to first position
			var correctIdx = qs[i].c;
			var tmp = qs[i].a[0];
			qs[i].a[0] = qs[i].a[correctIdx];
			qs[i].a[correctIdx] = tmp;
			qs[i].c = 0;
		}
	}
	questionIndex = 0;
	var correctCount = 0;
	var moneyWon = 0;
	// Question text
	var qTxt = new Text2('', {
		size: 70,
		fill: "#fff"
	});
	qTxt.anchor.set(0.5, 0);
	qTxt.y = -350;
	questionPanel.addChild(qTxt);
	// Answer buttons
	answerButtons = [];
	for (var i = 0; i < 3; i++) {
		var btn = new Container();
		var btnBg = LK.getAsset('money', {
			width: 900,
			height: 120,
			color: 0x3cb371,
			anchorX: 0.5,
			anchorY: 0.5
		});
		btn.addChild(btnBg);
		var btnTxt = new Text2('', {
			size: 55,
			fill: "#222"
		});
		btnTxt.anchor.set(0.5, 0.5);
		btn.addChild(btnTxt);
		btn.y = -100 + i * 180;
		btn.buttonIndex = i;
		btn.down = function (x, y, obj) {
			if (!isQuestionActive) return;
			var idx = obj.buttonIndex;
			var q = qs[questionIndex];
			if (idx === q.c) {
				correctCount++;
				// Donne de l'argent pour chaque bonne réponse (mais l'argent pour l'arbre est donné à la collecte de l'arbre, pas ici)
				var moneyForThis = 0; // Pas d'argent ici, l'argent est donné à la collecte de l'arbre
				LK.setScore(score);
				scoreTxt.setText(score + " €");
				// Animate button green
				if (obj.children && obj.children[0]) {
					tween(obj.children[0], {
						tint: 0x83de44
					}, {
						duration: 200,
						onFinish: function onFinish() {
							if (obj.children && obj.children[0]) {
								tween(obj.children[0], {
									tint: 0x3cb371
								}, {
									duration: 200
								});
							}
						}
					});
				}
				// Animate money gain
				var moneyAnim = LK.getAsset('money', {
					width: 200,
					height: 100,
					color: 0xffe066,
					anchorX: 0.5,
					anchorY: 0.5
				});
				moneyAnim.x = 0;
				moneyAnim.y = 250;
				questionPanel.addChild(moneyAnim);
				var moneyText = new Text2("+" + moneyForThis + " €", {
					size: 70,
					fill: "#222"
				});
				moneyText.anchor.set(0.5, 0.5);
				moneyAnim.addChild(moneyText);
				tween(moneyAnim, {
					y: 100,
					alpha: 0
				}, {
					duration: 900,
					onFinish: function onFinish() {
						moneyAnim.destroy();
					}
				});
				// Check for level up after awarding money
				checkLevelUp();
			} else {
				// Animate button red
				if (obj.children && obj.children[0]) {
					tween(obj.children[0], {
						tint: 0xd83318
					}, {
						duration: 200,
						onFinish: function onFinish() {
							if (obj.children && obj.children[0]) {
								tween(obj.children[0], {
									tint: 0x3cb371
								}, {
									duration: 200
								});
							}
						}
					});
				}
			}
			// Next question or finish
			LK.setTimeout(function () {
				questionIndex++;
				if (questionIndex < 3) {
					setQuestion();
				} else {
					// Bonus à la fin de la série de questions si au moins une bonne réponse
					if (correctCount > 0) {
						// Bonus supplémentaire
						var bonus = randInt(50, 100);
						score += bonus;
						LK.setScore(score);
						scoreTxt.setText(score + " €");
						// Animation du bonus
						var moneyAnim = LK.getAsset('money', {
							width: 200,
							height: 100,
							color: 0xffe066,
							anchorX: 0.5,
							anchorY: 0.5
						});
						moneyAnim.x = 0;
						moneyAnim.y = 250;
						questionPanel.addChild(moneyAnim);
						var moneyText = new Text2("+" + bonus + " € (bonus)", {
							size: 70,
							fill: "#222"
						});
						moneyText.anchor.set(0.5, 0.5);
						moneyAnim.addChild(moneyText);
						tween(moneyAnim, {
							y: 100,
							alpha: 0
						}, {
							duration: 900,
							onFinish: function onFinish() {
								moneyAnim.destroy();
								finishPanel();
							}
						});
						// Vérifie si le joueur passe au niveau suivant après le bonus
						checkLevelUp();
					} else {
						finishPanel();
					}
				}
			}, 400);
		};
		answerButtons.push(btn);
		questionPanel.addChild(btn);
	}
	// Set question/answers
	function setQuestion() {
		var q = qs[questionIndex];
		qTxt.setText(q.q);
		if (qTxt && typeof qTxt.setStyle === "function") {
			qTxt.setStyle({
				fill: 0xD83318
			}); // rouge vif pour la question
		}
		for (var i = 0; i < 3; i++) {
			answerButtons[i].children[1].setText(q.a[i]);
			if (answerButtons[i].children[1] && typeof answerButtons[i].children[1].setStyle === "function") {
				answerButtons[i].children[1].setStyle({
					fill: 0xD83318
				}); // rouge vif pour les réponses
			}
		}
	}
	// Remove panel and call onFinish
	function finishPanel() {
		isQuestionActive = false;
		if (questionPanel) {
			questionPanel.destroy();
			questionPanel = null;
		}
		answerButtons = [];
		if (onFinish) onFinish(correctCount > 0, collectedMoney);
	}
	setQuestion();
	game.addChild(questionPanel);
}
// Level up logic
function checkLevelUp() {
	while (score >= moneyNeeded) {
		level++;
		moneyNeeded *= 2;
		levelTxt.setText("Niveau " + level);
		// Update score and level display in case of level up
		scoreTxt.setText(score + " €");
		levelTxt.setText("Niveau " + level);
		// Flash effect
		LK.effects.flashScreen(0x83de44, 800);
		// Respawn trees, reset player
		spawnTrees();
		placePlayer();
	}
}
// Initialize game
function startGame() {
	score = 0;
	level = 1;
	moneyNeeded = 500;
	collectedMoney = 0;
	scoreTxt.setText(score + " €");
	levelTxt.setText("Niveau " + level);
	spawnTrees();
	if (player) player.destroy();
	player = new Player();
	game.addChild(player);
	placePlayer();
	canJump = true;
	isQuestionActive = false;
	if (questionPanel) {
		questionPanel.destroy();
		questionPanel = null;
	}
	// Play background music in loop at game start
	LK.playMusic('bgmusic', {
		loop: true
	});
}
// Handle tap: jump to nearest uncollected tree
game.down = function (x, y, obj) {
	if (isQuestionActive || !canJump) return;
	// Find nearest uncollected tree not at current position
	var nearest = null;
	var minDist = 99999;
	for (var i = 0; i < trees.length; i++) {
		if (trees[i].collected) continue;
		var dx = trees[i].x - player.x;
		var dy = trees[i].y - player.y;
		var dist = Math.sqrt(dx * dx + dy * dy);
		if (dist > 50 && dist < minDist) {
			minDist = dist;
			nearest = trees[i];
		}
	}
	if (!nearest) return;
	canJump = false;
	player.isJumping = true;
	jumpTarget = {
		x: nearest.x,
		y: nearest.y - 10
	};
	// Animate jump
	var startY = player.y;
	var midY = startY - 180;
	tween(player, {
		y: midY
	}, {
		duration: 180,
		easing: tween.easeOut,
		onFinish: function onFinish() {
			tween(player, {
				y: jumpTarget.y
			}, {
				duration: 180,
				easing: tween.easeIn,
				onFinish: function onFinish() {
					player.x = jumpTarget.x;
					player.y = jumpTarget.y;
					player.isJumping = false;
					canJump = true;
					// Check collision with tree
					for (var i = 0; i < trees.length; i++) {
						var t = trees[i];
						if (!t.collected && Math.abs(player.x - t.x) < 80 && Math.abs(player.y - (t.y - 10)) < 80) {
							t.collected = true;
							// Animate tree
							tween(t, {
								alpha: 0.3
							}, {
								duration: 400
							});
							// Donne de l'argent à la collecte de l'arbre (avant les questions)
							var moneyForTree = randInt(50, 100);
							score += moneyForTree;
							collectedMoney += moneyForTree;
							LK.setScore(score);
							scoreTxt.setText(score + " €");
							// Vérifie si le joueur passe au niveau suivant après chaque arbre collecté
							checkLevelUp();
							// Animation de gain d'argent à la collecte de l'arbre
							var moneyAnim = LK.getAsset('money', {
								width: 200,
								height: 100,
								color: 0xffe066,
								anchorX: 0.5,
								anchorY: 0.5
							});
							moneyAnim.x = t.x;
							moneyAnim.y = t.y - 200;
							game.addChild(moneyAnim);
							var moneyText = new Text2("+" + moneyForTree + " €", {
								size: 70,
								fill: "#222"
							});
							moneyText.anchor.set(0.5, 0.5);
							moneyAnim.addChild(moneyText);
							tween(moneyAnim, {
								y: moneyAnim.y - 100,
								alpha: 0
							}, {
								duration: 900,
								onFinish: function onFinish() {
									moneyAnim.destroy();
								}
							});
							// Show questions
							showQuestions(t, function (success, money) {
								if (success) {
									// Animate money to score
									LK.effects.flashObject(scoreTxt, 0xffe066, 600);
								}
								// If all trees collected, respawn
								var allCollected = true;
								for (var j = 0; j < trees.length; j++) {
									if (!trees[j].collected) allCollected = false;
								}
								if (allCollected) {
									spawnTrees();
									placePlayer();
								}
							});
							break;
						}
					}
				}
			});
		}
	});
};
// Prevent drag
game.move = function (x, y, obj) {
	// No drag, only tap to jump
};
// Main update loop
game.update = function () {
	// Nothing needed here for now
};
// Start game
startGame();