User prompt
Fait en sorte que la fin du jeu l'abeille messagère soit au niveau 666 (comme le nombre du diable ta compris MDR), mais c'est surtout pour faire durer le jeu et crée un lore autour, je pense pas que beaucoup de joueurs oseront jouer assez pour atteindre un jour ce niveau
User prompt
Ça ne fonctionne pas
User prompt
Bah va y
User prompt
Corrigé les problemes
User prompt
Ça ne fonctionne toujours pas malgres ça, et le jeu doit être reset quand le joueur percute un obstacle (pesticide, zone dangereuse) sinon le jeu n'a aucun sens
User prompt
Bah corrigé les problèmes ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Le joueur doit monter de niveau quand il a butiner assez de fleurs
User prompt
Mets la bannière de niveau au centre du jeu
User prompt
Encore un peu plus au centre s'il te plaît
User prompt
Mets la bannière du niveau en haut au centre de l'écran
User prompt
un système de niveaux : l'abeille doit butiner un certain nombre de fleurs pour monter au niveau supérieur, Pour le niveau 1 a 2 c'est 2 fleurs, puis a chaque nouveau niveau, l'abeille doit butiner 3 nouvelles fleurs par rapport au niveau précédent, Si l'abeille n'y arrive pas , le joueur doit recommencer le jeu depuis le début Tu doit afficher le numéro du niveau et le niveau a l'écran avec le nombre de fleurs qui reste à butiner
User prompt
Tu doit mettre une petite barre sois chaque fleur qui s'épuise fur a mesure qu'elles fanent, et le niveau du joueur doit être affiché a l'écran
User prompt
Ajoute le système de fleurs qui fanent fur à mesure du temps, (Avec un éditeur a l'écran qui indique que chaque fleurs est en train de faner ou pas) Et un système de niveaux : l'abeille doit butiner un certain nombre de fleurs pour monter au niveau supérieur, Pour le niveau 1 a 2 c'est 2 fleurs, puis a chaque nouveau niveau, l'abeille doit butiner 3 nouvelles fleurs par rapport au niveau précédent, Si l'abeille n'y arrive pas , le joueur doit recommencer le jeu depuis le début
User prompt
Ajoute le système de fleurs qui fanent fur à mesure du temps, (Avec un éditeur a l'écran qui indique que chaque fleurs est en train de faner ou pas) Et un système de niveaux : l'abeille doit butiner un certain nombre de fleurs pour monter au niveau supérieur, Pour le niveau 1 a 2 c'est 2 fleurs, puis a chaque nouveau niveau, l'abeille doit butiner 3 nouvelles fleurs par rapport au niveau précédent, Si l'abeille n'y arrive pas , le joueur doit recommencer le jeu depuis le début
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'setText')' in or related to this line: 'levelTxt.setText("Niveau " + level + " (" + pollinatedThisLevel + "/" + neededToNextLevel + " fleurs)");' Line Number: 185
User prompt
Ajoute le système de fleurs qui fanent fur à mesure du temps, (Avec un éditeur a l'écran qui indique que chaque fleurs est en train de faner ou pas) Et un système de niveaux : l'abeille doit butiner un certain nombre de fleurs pour monter au niveau supérieur, Pour le niveau 1 a 2 c'est 2 fleurs, puis a chaque nouveau niveau, l'abeille doit butiner 3 nouvelles fleurs par rapport au niveau précédent, Si l'abeille n'y arrive pas , le joueur doit recommencer le jeu depuis le début Ajoute aussi un écran sous forme de texte noir quand le joueur lance le jeu, Cet écran dit "Bienvenue dans Abeille messagère ! votre but en tant qu'abeille : butiner un max de fleurs en évitant les pesticides qui risquent de vous tuer", Le joueur appuie sur l'écran , et le texte se retire et le jeu se demarre
User prompt
Affiche le niveau dans un endroit visible en haut au centre, et fait en sorte que le texte noir disparaisse quand le joueur appuie sur l'écran, la ta rien fait, corrigé
User prompt
Affiche le niveau dans un endroit visible en haut au centre, et fait en sorte que le texte noir disparaisse quand le joueur appuie sur l'écran
User prompt
Ajoute le système de fleurs qui fanent fur à mesure du temps, (Avec un éditeur a l'écran qui indique que chaque fleurs est en train de faner ou pas) Et un système de niveaux : l'abeille doit butiner un certain nombre de fleurs pour monter au niveau supérieur, Pour le niveau 1 a 2 c'est 2 fleurs, puis a chaque nouveau niveau, l'abeille doit butiner 3 nouvelles fleurs par rapport au niveau précédent, Si l'abeille n'y arrive pas , le joueur doit recommencer le jeu depuis le début Ajoute aussi un écran sous forme de texte noir quand le joueur lance le jeu, Cet écran dit "Bienvenue dans Abeille messagère ! votre but en tant qu'abeille : butiner un max de fleurs en évitant les pesticides qui risquent de vous tuer", Le joueur appuie sur l'écran , et le texte se retire et le jeu se demarre
User prompt
Ajoute le système de fleurs qui fanent fur à mesure du temps, (Avec un éditeur a l'écran qui indique que chaque fleurs est en train de faner ou pas) Et un système de niveaux : l'abeille doit butiner un certain nombre de fleurs pour monter au niveau supérieur, Pour le niveau 1 a 2 c'est 2 fleurs, puis a chaque nouveau niveau, l'abeille doit butiner 3 nouvelles fleurs par rapport au niveau précédent, Si l'abeille n'y arrive pas , le joueur doit recommencer le jeu depuis le début Ajoute aussi un écran sous forme de texte noir quand le joueur lance le jeu, Cet écran dit "Bienvenue dans Abeille messagère ! votre but en tant qu'abeille : butiner un max de fleurs en évitant les pesticides qui risquent de vous tuer", Le joueur appuie sur l'écran , et le texte se retire et le jeu se demarre
User prompt
Ajoute le système de fleurs qui fanent fur à mesure du temps, (Avec un éditeur a l'écran qui indique que chaque fleurs est en train de faner ou pas) Et un système de niveaux : l'abeille doit butiner un certain nombre de fleurs pour monter au niveau supérieur, Pour le niveau 1 a 2 c'est 2 fleurs, puis a chaque nouveau niveau, l'abeille doit butiner 3 nouvelles fleurs par rapport au niveau précédent, Si l'abeille n'y arrive pas , le joueur doit recommencer le jeu depuis le début Ajoute aussi un écran sous forme de texte noir quand le joueur lance le jeu, Cet écran dit "Bienvenue dans Abeille messagère ! votre but en tant qu'abeille : butiner un max de fleurs en évitant les pesticides qui risquent de vous tuer", Le joueur appuie sur l'écran , et le texte se retire et le jeu se demarre
Code edit (1 edits merged)
Please save this source code
User prompt
L’Abeille Messagère
Initial prompt
Crée un jeu inspiré de cette chanson : **Couplet 1** Je suis petite, toute légère, Je vole au cœur des champs en fleurs, De pétale en pétale, je sème la lumière, Je danse pour la vie, porteuse de bonheur. **Refrain** Oh humain, écoute mon chant, Sans moi, ton monde perd son éclat, Je suis l’abeille, l’ouvrière du vivant, Sans mes ailes, tout s’efface ici-bas. **Couplet 2** Chaque fleur que je touche, je fais grandir, Je transporte le pollen, je suis la messagère, Sans mon travail, tout pourrait mourir, Les fruits, les arbres, la nature entière. **Refrain** Oh humain, écoute mon chant, Sans moi, ton monde perd son éclat, Je suis l’abeille, l’ouvrière du vivant, Sans mes ailes, tout s’efface ici-bas. **Refrain** Oh humain, écoute mon chant, Sans moi, ton monde perd son éclat, Je suis l’abeille, l’ouvrière du vivant, Sans mes ailes, tout s’efface ici-bas. **Couplet 3** Mais les pesticides, les terres dévastées, Menacent mes sœurs, menacent ma vie, Chaque fleur fanée, un espoir brisé, Prends soin de moi, pour que tout revienne à la vie. **Couplet 4** Ensemble, on peut changer le destin, Planter des fleurs, ouvrir les mains, Protéger le doux chant du matin, Pour que jamais ne s’éteigne mon chemin. **Refrain** Oh humain, écoute mon chant, Sans moi, ton monde perd son éclat, Je suis l’abeille, l’ouvrière du vivant, Sans mes ailes, tout s’efface ici-bas. **Refrain** Oh humain, écoute mon chant, Sans moi, ton monde perd son éclat, Je suis l’abeille, l’ouvrière du vivant, Sans mes ailes, tout s’efface ici-bas. **Couplet 5** Alors lève les yeux, regarde les fleurs, Je suis là, fragile gardienne du bonheur, Avec moi, la Terre tourne en couleur, Protège l’abeille, sauve le cœur. **Refrain** Oh humain, écoute mon chant, Sans moi, ton monde perd son éclat, Je suis l’abeille, l’ouvrière du vivant, Sans mes ailes, tout s’efface ici-bas. **Outro** Je vole, je veille, petit miracle vivant, Dans le souffle du vent, mon message est vivant.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Bee (player) var Bee = Container.expand(function () { var self = Container.call(this); var beeSprite = self.attachAsset('bee', { anchorX: 0.5, anchorY: 0.5 }); self.radius = 60; // for collision // Flap animation self.flapTween = function () { tween(beeSprite, { scaleY: 0.85 }, { duration: 120, easing: tween.easeIn, onFinish: function onFinish() { tween(beeSprite, { scaleY: 1 }, { duration: 120, easing: tween.easeOut }); } }); }; // Called every tick self.update = function () { // Bee can have a little idle movement self.y += Math.sin(LK.ticks / 20) * 0.7; }; return self; }); // Deadzone (danger) var Deadzone = Container.expand(function () { var self = Container.call(this); var sprite = self.attachAsset('deadzone', { anchorX: 0.5, anchorY: 0.5 }); self.radius = 100; // Move horizontally self.dir = Math.random() > 0.5 ? 1 : -1; self.update = function () { self.x += self.dir * 4; if (self.x < 200) self.dir = 1; if (self.x > 2048 - 200) self.dir = -1; }; return self; }); // Flower var Flower = Container.expand(function () { var self = Container.call(this); self.pollinated = false; self.withered = false; self.timer = 0; self.flowerSprite = self.attachAsset('flower', { anchorX: 0.5, anchorY: 0.5 }); self.radius = 55; // Pollinate the flower self.pollinate = function () { if (self.pollinated || self.withered) return; self.pollinated = true; self.flowerSprite.destroy(); self.flowerSprite = self.attachAsset('flower_pollinated', { anchorX: 0.5, anchorY: 0.5 }); self.addChild(self.flowerSprite); // Animate illumination self.flowerSprite.alpha = 0.5; tween(self.flowerSprite, { alpha: 1 }, { duration: 400, easing: tween.easeOut }); }; // Wither the flower self.wither = function () { if (self.pollinated || self.withered) return; self.withered = true; tween(self.flowerSprite, { alpha: 0.2 }, { duration: 600, easing: tween.linear }); }; // Called every tick self.update = function () { if (!self.pollinated && !self.withered) { self.timer++; if (self.timer > 480) { // 8 seconds to wither self.wither(); } } }; return self; }); // Pesticide (danger) var Pesticide = Container.expand(function () { var self = Container.call(this); var sprite = self.attachAsset('pesticide', { anchorX: 0.5, anchorY: 0.5 }); self.radius = 45; // Move downwards self.update = function () { self.y += 7; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xc6f7e2 // Pastel green-blue }); /**** * Game Code ****/ // Play background music // Bee (player) // Flower (target) // Pollinated flower (illuminated) // Pesticide (danger) // Dead zone (danger) // Sound for pollination // Music (background) // Ecran d'accueil var introScreen = new Container(); var introBg = new Container(); introBg.width = 2048; introBg.height = 2732; introBg.x = 0; introBg.y = 0; introBg.interactive = true; introBg.hitArea = { x: 0, y: 0, width: 2048, height: 2732 }; introScreen.addChild(introBg); var introText = new Text2("Bienvenue dans Abeille messagère !\n\nVotre but en tant qu'abeille :\nbutiner un max de fleurs en évitant les pesticides qui risquent de vous tuer\n\nAppuyez pour commencer", { size: 90, fill: "#111", align: "center", wordWrap: true, wordWrapWidth: 1800 }); introText.anchor.set(0.5, 0.5); introText.x = 2048 / 2; introText.y = 2732 / 2; introScreen.addChild(introText); game.addChild(introScreen); var gameStarted = false; function startGame() { if (gameStarted) return; gameStarted = true; introScreen.destroy(); LK.playMusic('nature_bg'); } introBg.down = function (x, y, obj) { startGame(); }; // Score and UI var score = 0; var level = 1; var pollinatedThisLevel = 0; var flowersToNextLevel = 2; var scoreTxt = new Text2('0', { size: 120, fill: "#222" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); var levelTxt = new Text2('Niveau 1', { size: 80, fill: "#222" }); levelTxt.anchor.set(0.5, 0); levelTxt.y = 120; LK.gui.top.addChild(levelTxt); function updateLevelUI() { levelTxt.setText('Niveau ' + level + ' (' + pollinatedThisLevel + '/' + flowersToNextLevel + ' fleurs)'); } updateLevelUI(); // Flowers, dangers, and bee var flowers = []; var pesticides = []; var deadzones = []; var bee = new Bee(); game.addChild(bee); // Place bee at start bee.x = 2048 / 2; bee.y = 2732 - 350; // Place flowers in a grid, but with some randomness function spawnFlowers() { flowers = []; var rows = 4; var cols = 5; var marginX = 300; var marginY = 400; var spacingX = (2048 - 2 * marginX) / (cols - 1); var spacingY = (1500 - marginY) / (rows - 1); for (var r = 0; r < rows; r++) { for (var c = 0; c < cols; c++) { var f = new Flower(); f.x = marginX + c * spacingX + (Math.random() - 0.5) * 60; f.y = 600 + r * spacingY + (Math.random() - 0.5) * 60; flowers.push(f); game.addChild(f); // Ajoute un indicateur de fanaison au-dessus de chaque fleur var barBg = new Container(); barBg.width = 60; barBg.height = 16; barBg.x = f.x - 30; barBg.y = f.y - 80; var bar = new Text2('', { size: 16, fill: "#222" }); bar.anchor.set(0, 0.5); bar.x = 0; bar.y = 8; barBg.addChild(bar); f.fadingBar = bar; f.fadingBarBg = barBg; game.addChild(barBg); } } } spawnFlowers(); // Spawn initial dangers function spawnPesticide() { var p = new Pesticide(); p.x = 200 + Math.random() * (2048 - 400); p.y = -100; pesticides.push(p); game.addChild(p); } function spawnDeadzone() { var d = new Deadzone(); d.x = 400 + Math.random() * (2048 - 800); d.y = 1200 + Math.random() * 800; deadzones.push(d); game.addChild(d); } spawnPesticide(); spawnDeadzone(); // Timers for spawning dangers var pesticideTimer = 0; var deadzoneTimer = 0; // Track dragging var draggingBee = false; // Track withered flowers var witheredCount = 0; // Helper: collision between two objects with .x, .y, .radius function isColliding(a, b) { var dx = a.x - b.x; var dy = a.y - b.y; var dist = Math.sqrt(dx * dx + dy * dy); return dist < a.radius + b.radius; } // Move handler (drag bee) function handleMove(x, y, obj) { if (draggingBee) { // Clamp bee inside game area var bx = Math.max(bee.radius, Math.min(2048 - bee.radius, x)); var by = Math.max(bee.radius + 100, Math.min(2732 - bee.radius, y)); bee.x = bx; bee.y = by; bee.flapTween(); } } game.move = handleMove; // Down handler (start drag if on bee) game.down = function (x, y, obj) { var dx = x - bee.x; var dy = y - bee.y; if (dx * dx + dy * dy < bee.radius * bee.radius) { draggingBee = true; handleMove(x, y, obj); } }; // Up handler (stop drag) game.up = function (x, y, obj) { draggingBee = false; }; // Main update loop game.update = function () { // Update bee bee.update(); // Update flowers for (var i = 0; i < flowers.length; i++) { flowers[i].update(); // Met à jour la barre de fanaison var f = flowers[i]; if (f.fadingBar) { if (f.pollinated) { f.fadingBar.setText("🌼"); f.fadingBar.style.fill = "#4caf50"; } else if (f.withered) { f.fadingBar.setText("💀"); f.fadingBar.style.fill = "#888"; } else { // Affiche le temps restant avant fanaison var percent = Math.max(0, 1 - f.timer / 480); var sec = Math.ceil((480 - f.timer) / 60); f.fadingBar.setText("⏳ " + sec + "s"); f.fadingBar.style.fill = percent > 0.5 ? "#e6b800" : percent > 0.2 ? "#e67e22" : "#e53935"; } f.fadingBarBg.x = f.x - 30; f.fadingBarBg.y = f.y - 80; } } // Update dangers for (var i = pesticides.length - 1; i >= 0; i--) { var p = pesticides[i]; p.update(); // Remove if off screen if (p.y > 2732 + 100) { p.destroy(); pesticides.splice(i, 1); } } for (var i = deadzones.length - 1; i >= 0; i--) { deadzones[i].update(); } // Spawn new dangers pesticideTimer++; if (pesticideTimer > 90 + Math.random() * 60) { // every 1.5-2.5s spawnPesticide(); pesticideTimer = 0; } deadzoneTimer++; if (deadzoneTimer > 300 + Math.random() * 200) { // every 5-8s spawnDeadzone(); deadzoneTimer = 0; } // Check bee-flower collision for (var i = 0; i < flowers.length; i++) { var f = flowers[i]; if (!f.pollinated && !f.withered && isColliding(bee, f)) { f.pollinate(); LK.getSound('pollinate').play(); score += 1; pollinatedThisLevel += 1; scoreTxt.setText(score); updateLevelUI(); // Animate bee tween(bee, { scaleX: 1.15, scaleY: 0.85 }, { duration: 120, easing: tween.easeIn, onFinish: function onFinish() { tween(bee, { scaleX: 1, scaleY: 1 }, { duration: 120, easing: tween.easeOut }); } }); } } // Progression de niveau if (pollinatedThisLevel >= flowersToNextLevel) { // Passe au niveau suivant level += 1; pollinatedThisLevel = 0; flowersToNextLevel += 3; updateLevelUI(); // Recrée les fleurs et dangers pour le nouveau niveau for (var i = 0; i < flowers.length; i++) { if (flowers[i].fadingBarBg) flowers[i].fadingBarBg.destroy(); flowers[i].destroy(); } flowers = []; for (var i = 0; i < pesticides.length; i++) pesticides[i].destroy(); pesticides = []; for (var i = 0; i < deadzones.length; i++) deadzones[i].destroy(); deadzones = []; spawnFlowers(); spawnPesticide(); spawnDeadzone(); pesticideTimer = 0; deadzoneTimer = 0; witheredCount = 0; bee.x = 2048 / 2; bee.y = 2732 - 350; LK.effects.flashScreen(0xf7e26b, 600); // Affiche un texte temporaire de niveau var levelMsg = new Text2("Niveau " + level, { size: 120, fill: "#222" }); levelMsg.anchor.set(0.5, 0.5); levelMsg.x = 2048 / 2; levelMsg.y = 2732 / 2; game.addChild(levelMsg); LK.setTimeout(function () { levelMsg.destroy(); }, 1200); return; } // Si toutes les fleurs sont pollinisées mais pas assez pour le niveau, recommence le jeu var allPollinated = true; for (var i = 0; i < flowers.length; i++) { if (!flowers[i].pollinated) { allPollinated = false; break; } } if (allPollinated && pollinatedThisLevel < flowersToNextLevel) { LK.effects.flashScreen(0xff2222, 1200); LK.showGameOver(); return; } // Check bee-pesticide collision for (var i = 0; i < pesticides.length; i++) { if (isColliding(bee, pesticides[i])) { LK.getSound('danger').play(); LK.effects.flashScreen(0x4444ff, 800); LK.showGameOver(); return; } } // Check bee-deadzone collision for (var i = 0; i < deadzones.length; i++) { if (isColliding(bee, deadzones[i])) { LK.getSound('danger').play(); LK.effects.flashScreen(0x888888, 800); LK.showGameOver(); return; } } // Check withered flowers var newWithered = 0; for (var i = 0; i < flowers.length; i++) { if (flowers[i].withered) newWithered++; } if (newWithered !== witheredCount) { witheredCount = newWithered; // If too many withered, game over if (witheredCount >= 5) { LK.effects.flashScreen(0x888888, 1200); LK.showGameOver(); return; } } // Win condition: all flowers pollinated var allPollinated = true; for (var i = 0; i < flowers.length; i++) { if (!flowers[i].pollinated) { allPollinated = false; break; } } if (allPollinated) { LK.effects.flashScreen(0x8fff6f, 1200); LK.showYouWin(); return; } };
===================================================================
--- original.js
+++ change.js
@@ -132,25 +132,75 @@
/****
* Game Code
****/
-// Music (background)
-// Sound for pollination
-// Dead zone (danger)
-// Pesticide (danger)
-// Pollinated flower (illuminated)
-// Flower (target)
-// Bee (player)
// Play background music
-LK.playMusic('nature_bg');
+// Bee (player)
+// Flower (target)
+// Pollinated flower (illuminated)
+// Pesticide (danger)
+// Dead zone (danger)
+// Sound for pollination
+// Music (background)
+// Ecran d'accueil
+var introScreen = new Container();
+var introBg = new Container();
+introBg.width = 2048;
+introBg.height = 2732;
+introBg.x = 0;
+introBg.y = 0;
+introBg.interactive = true;
+introBg.hitArea = {
+ x: 0,
+ y: 0,
+ width: 2048,
+ height: 2732
+};
+introScreen.addChild(introBg);
+var introText = new Text2("Bienvenue dans Abeille messagère !\n\nVotre but en tant qu'abeille :\nbutiner un max de fleurs en évitant les pesticides qui risquent de vous tuer\n\nAppuyez pour commencer", {
+ size: 90,
+ fill: "#111",
+ align: "center",
+ wordWrap: true,
+ wordWrapWidth: 1800
+});
+introText.anchor.set(0.5, 0.5);
+introText.x = 2048 / 2;
+introText.y = 2732 / 2;
+introScreen.addChild(introText);
+game.addChild(introScreen);
+var gameStarted = false;
+function startGame() {
+ if (gameStarted) return;
+ gameStarted = true;
+ introScreen.destroy();
+ LK.playMusic('nature_bg');
+}
+introBg.down = function (x, y, obj) {
+ startGame();
+};
// Score and UI
var score = 0;
+var level = 1;
+var pollinatedThisLevel = 0;
+var flowersToNextLevel = 2;
var scoreTxt = new Text2('0', {
size: 120,
fill: "#222"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
+var levelTxt = new Text2('Niveau 1', {
+ size: 80,
+ fill: "#222"
+});
+levelTxt.anchor.set(0.5, 0);
+levelTxt.y = 120;
+LK.gui.top.addChild(levelTxt);
+function updateLevelUI() {
+ levelTxt.setText('Niveau ' + level + ' (' + pollinatedThisLevel + '/' + flowersToNextLevel + ' fleurs)');
+}
+updateLevelUI();
// Flowers, dangers, and bee
var flowers = [];
var pesticides = [];
var deadzones = [];
@@ -174,8 +224,25 @@
f.x = marginX + c * spacingX + (Math.random() - 0.5) * 60;
f.y = 600 + r * spacingY + (Math.random() - 0.5) * 60;
flowers.push(f);
game.addChild(f);
+ // Ajoute un indicateur de fanaison au-dessus de chaque fleur
+ var barBg = new Container();
+ barBg.width = 60;
+ barBg.height = 16;
+ barBg.x = f.x - 30;
+ barBg.y = f.y - 80;
+ var bar = new Text2('', {
+ size: 16,
+ fill: "#222"
+ });
+ bar.anchor.set(0, 0.5);
+ bar.x = 0;
+ bar.y = 8;
+ barBg.addChild(bar);
+ f.fadingBar = bar;
+ f.fadingBarBg = barBg;
+ game.addChild(barBg);
}
}
}
spawnFlowers();
@@ -241,8 +308,27 @@
bee.update();
// Update flowers
for (var i = 0; i < flowers.length; i++) {
flowers[i].update();
+ // Met à jour la barre de fanaison
+ var f = flowers[i];
+ if (f.fadingBar) {
+ if (f.pollinated) {
+ f.fadingBar.setText("🌼");
+ f.fadingBar.style.fill = "#4caf50";
+ } else if (f.withered) {
+ f.fadingBar.setText("💀");
+ f.fadingBar.style.fill = "#888";
+ } else {
+ // Affiche le temps restant avant fanaison
+ var percent = Math.max(0, 1 - f.timer / 480);
+ var sec = Math.ceil((480 - f.timer) / 60);
+ f.fadingBar.setText("⏳ " + sec + "s");
+ f.fadingBar.style.fill = percent > 0.5 ? "#e6b800" : percent > 0.2 ? "#e67e22" : "#e53935";
+ }
+ f.fadingBarBg.x = f.x - 30;
+ f.fadingBarBg.y = f.y - 80;
+ }
}
// Update dangers
for (var i = pesticides.length - 1; i >= 0; i--) {
var p = pesticides[i];
@@ -275,9 +361,11 @@
if (!f.pollinated && !f.withered && isColliding(bee, f)) {
f.pollinate();
LK.getSound('pollinate').play();
score += 1;
+ pollinatedThisLevel += 1;
scoreTxt.setText(score);
+ updateLevelUI();
// Animate bee
tween(bee, {
scaleX: 1.15,
scaleY: 0.85
@@ -295,8 +383,61 @@
}
});
}
}
+ // Progression de niveau
+ if (pollinatedThisLevel >= flowersToNextLevel) {
+ // Passe au niveau suivant
+ level += 1;
+ pollinatedThisLevel = 0;
+ flowersToNextLevel += 3;
+ updateLevelUI();
+ // Recrée les fleurs et dangers pour le nouveau niveau
+ for (var i = 0; i < flowers.length; i++) {
+ if (flowers[i].fadingBarBg) flowers[i].fadingBarBg.destroy();
+ flowers[i].destroy();
+ }
+ flowers = [];
+ for (var i = 0; i < pesticides.length; i++) pesticides[i].destroy();
+ pesticides = [];
+ for (var i = 0; i < deadzones.length; i++) deadzones[i].destroy();
+ deadzones = [];
+ spawnFlowers();
+ spawnPesticide();
+ spawnDeadzone();
+ pesticideTimer = 0;
+ deadzoneTimer = 0;
+ witheredCount = 0;
+ bee.x = 2048 / 2;
+ bee.y = 2732 - 350;
+ LK.effects.flashScreen(0xf7e26b, 600);
+ // Affiche un texte temporaire de niveau
+ var levelMsg = new Text2("Niveau " + level, {
+ size: 120,
+ fill: "#222"
+ });
+ levelMsg.anchor.set(0.5, 0.5);
+ levelMsg.x = 2048 / 2;
+ levelMsg.y = 2732 / 2;
+ game.addChild(levelMsg);
+ LK.setTimeout(function () {
+ levelMsg.destroy();
+ }, 1200);
+ return;
+ }
+ // Si toutes les fleurs sont pollinisées mais pas assez pour le niveau, recommence le jeu
+ var allPollinated = true;
+ for (var i = 0; i < flowers.length; i++) {
+ if (!flowers[i].pollinated) {
+ allPollinated = false;
+ break;
+ }
+ }
+ if (allPollinated && pollinatedThisLevel < flowersToNextLevel) {
+ LK.effects.flashScreen(0xff2222, 1200);
+ LK.showGameOver();
+ return;
+ }
// Check bee-pesticide collision
for (var i = 0; i < pesticides.length; i++) {
if (isColliding(bee, pesticides[i])) {
LK.getSound('danger').play();
Fullscreen modern App Store landscape banner, 16:9, high definition, for a game titled "L’Abeille Messagère" and with the description "Devenez une abeille, semez la lumière en pollinisant les fleurs, évitez les dangers, et sauvez la nature en redonnant vie au champ.". No text on banner!
Fleurs. In-Game asset. 2d. High contrast. No shadows
Danger. In-Game asset. 2d. High contrast. No shadows