User prompt
Ajoute un système de noms aux enfants dans le jeu! Les noms sont seulement décoratifs, voilà la liste des noms : Pour les petites filles : Mia, Sara, Laura, maya, Julie, Olivia, Martine, Paula, Daisy, Juliette, Margot, Tina, Abigaïl, clémence, Amélie, Amina, Laurence, Ilona, gloria, valentina, Victoria, Ninon, Manon, Violette, rose, Zélie, Ylenia, Sabrina, Harper, Valentine, Élodie, Grâce, Jade, Eva, Maëva, Anna, Alice, Louise,Zoé, Chloé, Julia, Romy,Iris, ambre, Agathe,Inaya,Lea, adele,Clara , Emily, Eveline, Dorine, Lou, amelia, Isabella, charlotte, Delphine, dona, Yasmine,Marie, Carine, Kimberly, Erina, Maëlle , Joséphine, jacqueline, Françoise, Théa ou Denise ! (On pourra en ajouter d'autres par la suite) Pour les petits garçons : Hugo, Louis, Karim, Julien, thomas, Thom, Lucas, Clément, Laurent, Ibrahim, Mohamed, Léo, Willy, Moris, Mathieu, Marius, Paul, Valentin, Bernard, Eric, Jules, Claude, Quentin, Gabriel, Dimitri, Raphaël, noa, Maël, Arthur, Adam, Isaac, Eden, Léon, Sacha, Aaron, liam, Naël, malo, Baptiste, Corentin, Diego, Alexandre, Felix, Gaspard, Alain, Albert, Adrien, Achille, Dorian, Alexis, Alex, Mylan, Pierre, Yann, axel, charles, David, Joseph, jacques, Antoine, François, Théo, maxime, victor, Anthony, André, William, Jacob, Nathan, sam ou Logan! Les noms des enfants sont aléatoires pour chaque enfant, et le nom dun enfant est affiché en dessus de sa tête juste au-dessus de son âge , ajoute aussi un message lorsque le serpent mange un enfant qui affiche "félicitations ! Vous avez mangé (avec le nom de l'enfant) ce petit désastre ambulant", le message disparaît au bout de 5 secondes, Ou encore quand un enfant réussit a s'enfuir un message s'affiche en mode "Oh non! (avec le nom de l'enfant) a réussi a s'enfuir !" Qui disparaît aussi au bout de 5 secondes ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Ajoute les assets pour le biberon quand un enfant le lance (le biberon est lancé aléatoirement dans la direction du serpent, le joueur pert les points correspondants si le biberon le touche), le biberon disparaît ensuite , et pour l'appelle des adultes aussi (un adulte apparaît quand un enfant de l'âge correspondant l'appel, et disparaît au bout de 3 secondes quand le serpent a perdu les points correspondants), ajoute aussi le fusil qui apparaît de la même façon pour les enfants de l'âge requis ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Ajoute les assets pour le biberon quand un enfant le lance (le biberon est lancé aléatoirement dans la direction du serpent, le joueur pert les points correspondants si le biberon le touche), le biberon disparaît ensuite , et pour l'appelle des adultes aussi ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Ajoute un système d'âge pour les enfants : les enfants ont aléatoirement entre 2 et 13 ans, et la facilité que le serpent (le joueur) a pour les manger varie selon leur âge, car certains enfants de certains âges ont des capacités spéciales qui ralentissent, empêche le serpent de les manger et même certains enfants plus âgés sont plus rapides que les plus jeunes, voici la liste des capacités spéciales selon l'âge des enfants : 2 - 4 ans : les enfants de cet âge sont des bébés dans le jeu, ils n'ont aucune capacité, ils se contentent de fuir le serpent a une vitesse lente 4 a 6 ans : ces enfants là ont la capacité de lancer aléatoirement leur biberon sur le serpent, ce qui fait perdre 2 points au joueur a chaque fois qu'il le vont , si le joueur perd trop de points, il régresse de niveau 6 à 9 ans : ces enfants-là sont les plus rapides, ils fuient 2 fois plus vite que les enfants plus jeunes, et ont aléatoirement même la capacité d'appeler un adulte , lorsqu'un adulte est appelé, le joueur perd aléatoirement entre 5 et 10 points , et pareil le joueur peut régresser de niveau si il perd trop de points ! 9 a 13 ans : ce sont les enfants les plus grands, ceux la sont les plus dangereux, car ils ont des fusils, et ils peuvent aléatoirement envoyé des coups de fusils sur le serpent (mais il le font rarement, il y a seulement une chance sur 5 qu'ils le fassent) Ce qui fait perdre 15 a 30 points au joueur quand ils le font L'âge des enfants qui apparaissent est aleatoire (sauf que seul les enfants de moins de 5 ans apparaissent quand le joueur est de niveau inférieur a 5, les autres âges peuvent apparaître quand le joueur est au moins niveau 5!), L'âge de chaque enfant qui est apparu est affiché au dessus de sa tête
User prompt
Ajoute un système d'âge pour les enfants : les enfants ont aléatoirement entre 2 et 13 ans, et la facilité que le serpent (le joueur) a pour les manger varie selon leur âge, car certains enfants de certains âges ont des capacités spéciales qui ralentissent, empêche le serpent de les manger et même certains enfants plus âgés sont plus rapides que les plus jeunes, voici la liste des capacités spéciales selon l'âge des enfants : 2 - 4 ans : les enfants de cet âge sont des bébés dans le jeu, ils n'ont aucune capacité, ils se contentent de fuir le serpent a une vitesse lente 4 a 6 ans : ces enfants là ont la capacité de lancer aléatoirement leur biberon sur le serpent, ce qui fait perdre 2 points au joueur a chaque fois qu'il le vont , si le joueur perd trop de points, il régresse de niveau 6 à 9 ans : ces enfants-là sont les plus rapides, ils fuient 2 fois plus vite que les enfants plus jeunes, et ont aléatoirement même la capacité d'appeler un adulte , lorsqu'un adulte est appelé, le joueur perd aléatoirement entre 5 et 10 points , et pareil le joueur peut régresser de niveau si il perd trop de points ! 9 a 13 ans : ce sont les enfants les plus grands, ceux la sont les plus dangereux, car ils ont des fusils, et ils peuvent aléatoirement envoyé des coups de fusils sur le serpent (mais il le font rarement, il y a seulement une chance sur 5 qu'ils le fassent) Ce qui fait perdre 15 a 30 points au joueur quand ils le font L'âge des enfants qui apparaissent est aleatoire (sauf que seul les enfants de moins de 5 ans apparaissent quand le joueur est de niveau inférieur a 5, les autres âges peuvent apparaître quand le joueur est au moins niveau 5!), L'âge de chaque enfant qui est apparu est affiché au dessus de sa tête
User prompt
Ajoute une musique de fond en boucle au jeu
User prompt
Fait en sorte que le nombre de points a obtenir pour monter au niveau supérieur monte de + 5 requis par rapport au niveau précédent a chaque nouveau niveau
User prompt
Fait en sorte que le joueur ne monte que d'un seul niveau a la fois, et que le nombre de points et d'enfants a manger pour monter au niveau suivant soient reset pour le niveau actuel
Code edit (1 edits merged)
Please save this source code
User prompt
Roi Serpent
Initial prompt
Bonjour ! Crée mon jeu "Roi serpent", Voici les mécaniques et le but du jeu : C'est un jeu à la snake, mais avec une touche vraiment personnelle et créative : le joueur contrôle un serpent parmi d'autres se déplaçant dans une forêt amazonienne, des humains débarquent dans la forêt, le but du jeu est de manger les humains en rentrant en collision avec eux avant qu'ils fuient , et de monter jusqu'au niveau 35 pour devenir le roi des serpents mangeurs d'humains!, Voici les mécaniques du jeu et comment il se présente : Le joueur déplace son serpent en appuyant sur son écran tactile ,; le serpent se déplace par petit bond a chaque appuie, et se dirige toujours vers l'endroit où le joueur a appuyé (gauche, droite, en arrière, en avant), Des enfants humains (petite fille et petit garçon aléatoirement de 1 à 6 enfants de chacun des deux types), se promènent souvent a l'écran, le but du jeu, pour le joueur est de déplacer son serpent vers les enfants, et de les manger en rentrant en collision avec, pour gagner des points et monter en niveau ! Il faut 50 points pour passer au niveau 2, puis a chaque fois le nombre requis de points monte de 10 points, A chaque enfant manger, le joueur gagne 5 points, Mais les enfants ne se laissent pas faire, certaines fois quand ils voient le serpent, ils essayent de fuir!, Et ils sont de plus en plus rapides avec les niveaux! Voilà! Le niveau du joueur et ses points doivent être affiché a lui, et le joueur doit pouvoir faire en sorte que son serpent deviennent plus rapide que les enfants !
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Adult = Container.expand(function (x, y) { var self = Container.call(this); self.lifetime = 180; // 3 seconds at 60fps self.age = 0; var adultGraphics = self.attachAsset('adult', { anchorX: 0.5, anchorY: 0.5 }); self.x = x; self.y = y; // Add warning text above adult self.warningText = new Text2('ADULT!', { size: 32, fill: 0xFF0000 }); self.warningText.anchor.set(0.5, 1); self.warningText.x = 0; self.warningText.y = -50; self.addChild(self.warningText); // Flash effect self.alpha = 0; tween(self, { alpha: 1 }, { duration: 300, easing: tween.easeOut }); self.update = function () { self.age++; // Pulsing effect adultGraphics.scaleX = 1 + Math.sin(self.age * 0.2) * 0.1; adultGraphics.scaleY = 1 + Math.sin(self.age * 0.2) * 0.1; if (self.age >= self.lifetime) { self.shouldDestroy = true; } }; return self; }); var Bottle = Container.expand(function (startX, startY, targetX, targetY) { var self = Container.call(this); self.speed = 3; self.targetX = targetX; self.targetY = targetY; self.lifetime = 180; // 3 seconds at 60fps self.age = 0; var bottleGraphics = self.attachAsset('bottle', { anchorX: 0.5, anchorY: 0.5 }); self.x = startX; self.y = startY; // Calculate direction to target var dx = targetX - startX; var dy = targetY - startY; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 0) { self.directionX = dx / distance; self.directionY = dy / distance; } else { self.directionX = 0; self.directionY = 0; } self.update = function () { self.age++; // Move towards target self.x += self.directionX * self.speed; self.y += self.directionY * self.speed; // Rotate bottle for effect bottleGraphics.rotation += 0.2; // Check bounds and lifetime if (self.age >= self.lifetime || self.x < -50 || self.x > 2098 || self.y < -50 || self.y > 2782) { self.shouldDestroy = true; } }; return self; }); var Child = Container.expand(function (type) { var self = Container.call(this); self.type = type || 'boy'; self.isEscaping = false; self.speed = 1; self.detectionRange = 150; // Age system: 2-4 years for levels < 5, 2-13 years for levels >= 5 if (currentLevel < 5) { self.age = Math.floor(Math.random() * 3) + 2; // 2-4 years } else { self.age = Math.floor(Math.random() * 12) + 2; // 2-13 years } // Set speed based on age if (self.age >= 6 && self.age < 9) { self.speed = 2; // 6-9 year olds are fastest (2x speed) } else { self.speed = 1; // Others have normal speed } // Assign random name based on type if (self.type === 'girl') { self.name = girlNames[Math.floor(Math.random() * girlNames.length)]; } else { self.name = boyNames[Math.floor(Math.random() * boyNames.length)]; } self.specialAbilityTimer = 0; self.specialAbilityCooldown = 180 + Math.random() * 240; // 3-7 seconds at 60fps var childGraphics = self.attachAsset(self.type, { anchorX: 0.5, anchorY: 0.5 }); // Add name text above child self.nameText = new Text2(self.name, { size: 20, fill: 0xFFFF00 }); self.nameText.anchor.set(0.5, 1); self.nameText.x = 0; self.nameText.y = -55; self.addChild(self.nameText); // Add age text above child self.ageText = new Text2(self.age.toString(), { size: 24, fill: 0xFFFFFF }); self.ageText.anchor.set(0.5, 1); self.ageText.x = 0; self.ageText.y = -35; self.addChild(self.ageText); self.wanderDirection = Math.random() * Math.PI * 2; self.wanderTimer = 0; self.wanderChangeTime = 60 + Math.random() * 120; self.update = function () { // Handle special abilities based on age self.specialAbilityTimer++; if (self.specialAbilityTimer >= self.specialAbilityCooldown) { if (self.age >= 4 && self.age < 6) { // 4-6 year olds throw bottles randomly if (Math.random() < 0.3) { // 30% chance // Create bottle projectile aimed at snake var bottle = new Bottle(self.x, self.y, snake.x, snake.y); game.addChild(bottle); bottles.push(bottle); // Play throw sound and flash child LK.getSound('bottle_throw').play(); LK.effects.flashObject(self, 0xFFFF00, 500); } } else if (self.age >= 6 && self.age < 9) { // 6-9 year olds call adults randomly if (Math.random() < 0.25) { // 25% chance var pointsLost = Math.floor(Math.random() * 6) + 5; // 5-10 points LK.setScore(Math.max(0, LK.getScore() - pointsLost)); // Play adult call sound and visual effects LK.getSound('adult_call').play(); LK.effects.flashObject(self, 0xFF8800, 800); // Create adult visual effect near the child var adult = new Adult(self.x + (Math.random() - 0.5) * 100, self.y + (Math.random() - 0.5) * 100); game.addChild(adult); adults.push(adult); checkLevelDown(); } } else if (self.age >= 9 && self.age <= 13) { // 9-13 year olds shoot guns - only 1 in 5 chance when they activate ability if (Math.random() < 0.2) { // 20% chance (1 in 5) var pointsLost = Math.floor(Math.random() * 16) + 15; // 15-30 points LK.setScore(Math.max(0, LK.getScore() - pointsLost)); // Create rifle visual effect var rifle = new Rifle(self.x, self.y, snake.x, snake.y); game.addChild(rifle); rifles.push(rifle); // Play rifle shot sound and effects LK.getSound('rifle_shot').play(); LK.effects.flashObject(self, 0xFF0000, 1000); LK.effects.flashScreen(0xFF0000, 300); checkLevelDown(); } } self.specialAbilityTimer = 0; self.specialAbilityCooldown = 180 + Math.random() * 240; } if (self.isEscaping) { var dx = self.x - snake.x; var dy = self.y - snake.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 0) { var escapeSpeed = self.speed * 3; self.x += dx / distance * escapeSpeed; self.y += dy / distance * escapeSpeed; } } else { var distanceToSnake = Math.sqrt(Math.pow(self.x - snake.x, 2) + Math.pow(self.y - snake.y, 2)); if (distanceToSnake < self.detectionRange) { self.isEscaping = true; LK.effects.flashObject(self, 0xFF0000, 300); } else { self.wanderTimer++; if (self.wanderTimer >= self.wanderChangeTime) { self.wanderDirection = Math.random() * Math.PI * 2; self.wanderTimer = 0; self.wanderChangeTime = 60 + Math.random() * 120; } self.x += Math.cos(self.wanderDirection) * self.speed; self.y += Math.sin(self.wanderDirection) * self.speed; } } if (self.x < 50) self.x = 50; if (self.x > 1998) self.x = 1998; if (self.y < 50) self.y = 50; if (self.y > 2682) self.y = 2682; }; return self; }); var Message = Container.expand(function (text, color) { var self = Container.call(this); self.lifetime = 300; // 5 seconds at 60fps self.age = 0; self.fadeStartTime = 240; // Start fading after 4 seconds var messageText = new Text2(text, { size: 40, fill: color || 0xFFFFFF }); messageText.anchor.set(0.5, 0.5); self.addChild(messageText); // Position at center of screen self.x = 1024; self.y = 1366; // Initial fade in effect self.alpha = 0; tween(self, { alpha: 1 }, { duration: 500, easing: tween.easeOut }); self.update = function () { self.age++; // Start fading out if (self.age >= self.fadeStartTime && self.alpha > 0) { var fadeProgress = (self.age - self.fadeStartTime) / (self.lifetime - self.fadeStartTime); self.alpha = Math.max(0, 1 - fadeProgress); } if (self.age >= self.lifetime) { self.shouldDestroy = true; } }; return self; }); var Rifle = Container.expand(function (x, y, targetX, targetY) { var self = Container.call(this); self.lifetime = 120; // 2 seconds at 60fps self.age = 0; var rifleGraphics = self.attachAsset('rifle', { anchorX: 0.5, anchorY: 0.5 }); self.x = x; self.y = y; // Calculate angle to target var dx = targetX - x; var dy = targetY - y; rifleGraphics.rotation = Math.atan2(dy, dx); // Muzzle flash effect LK.effects.flashObject(self, 0xFFFF00, 200); self.update = function () { self.age++; // Recoil animation if (self.age < 10) { rifleGraphics.x = -self.age; } else if (self.age < 20) { rifleGraphics.x = -(20 - self.age); } else { rifleGraphics.x = 0; } if (self.age >= self.lifetime) { self.shouldDestroy = true; } }; return self; }); var Snake = Container.expand(function () { var self = Container.call(this); self.isMoving = false; self.targetX = 0; self.targetY = 0; self.moveSpeed = 4; var snakeGraphics = self.attachAsset('snake', { anchorX: 0.5, anchorY: 0.5 }); self.moveTo = function (x, y) { self.targetX = x; self.targetY = y; self.isMoving = true; }; self.update = function () { if (self.isMoving) { var dx = self.targetX - self.x; var dy = self.targetY - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance < self.moveSpeed) { self.x = self.targetX; self.y = self.targetY; self.isMoving = false; } else { self.x += dx / distance * self.moveSpeed; self.y += dy / distance * self.moveSpeed; } } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x006400 }); /**** * Game Code ****/ var background = game.attachAsset('background', { x: 0, y: 0 }); var snake = game.addChild(new Snake()); snake.x = 1024; snake.y = 1366; var children = []; var bottles = []; var adults = []; var rifles = []; var currentLevel = 1; var pointsNeeded = 50; // Arrays of names for children var girlNames = ['Mia', 'Sara', 'Laura', 'Maya', 'Julie', 'Olivia', 'Martine', 'Paula', 'Daisy', 'Juliette', 'Margot', 'Tina', 'Abigaïl', 'Clémence', 'Amélie', 'Amina', 'Laurence', 'Ilona', 'Gloria', 'Valentina', 'Victoria', 'Ninon', 'Manon', 'Violette', 'Rose', 'Zélie', 'Ylenia', 'Sabrina', 'Harper', 'Valentine', 'Élodie', 'Grâce', 'Jade', 'Eva', 'Maëva', 'Anna', 'Alice', 'Louise', 'Zoé', 'Chloé', 'Julia', 'Romy', 'Iris', 'Ambre', 'Agathe', 'Inaya', 'Lea', 'Adele', 'Clara', 'Emily', 'Eveline', 'Dorine', 'Lou', 'Amelia', 'Isabella', 'Charlotte', 'Delphine', 'Dona', 'Yasmine', 'Marie', 'Carine', 'Kimberly', 'Erina', 'Maëlle', 'Joséphine', 'Jacqueline', 'Françoise', 'Théa', 'Denise']; var boyNames = ['Hugo', 'Louis', 'Karim', 'Julien', 'Thomas', 'Thom', 'Lucas', 'Clément', 'Laurent', 'Ibrahim', 'Mohamed', 'Léo', 'Willy', 'Moris', 'Mathieu', 'Marius', 'Paul', 'Valentin', 'Bernard', 'Eric', 'Jules', 'Claude', 'Quentin', 'Gabriel', 'Dimitri', 'Raphaël', 'Noa', 'Maël', 'Arthur', 'Adam', 'Isaac', 'Eden', 'Léon', 'Sacha', 'Aaron', 'Liam', 'Naël', 'Malo', 'Baptiste', 'Corentin', 'Diego', 'Alexandre', 'Felix', 'Gaspard', 'Alain', 'Albert', 'Adrien', 'Achille', 'Dorian', 'Alexis', 'Alex', 'Mylan', 'Pierre', 'Yann', 'Axel', 'Charles', 'David', 'Joseph', 'Jacques', 'Antoine', 'François', 'Théo', 'Maxime', 'Victor', 'Anthony', 'André', 'William', 'Jacob', 'Nathan', 'Sam', 'Logan']; var messages = []; var levelText = new Text2('Level: 1', { size: 60, fill: 0xFFFFFF }); levelText.anchor.set(0, 0); levelText.x = 150; levelText.y = 50; LK.gui.topLeft.addChild(levelText); var scoreText = new Text2('Score: 0', { size: 60, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); var targetText = new Text2('Target: ' + pointsNeeded, { size: 50, fill: 0xFFFF00 }); targetText.anchor.set(1, 0); targetText.x = -50; targetText.y = 50; LK.gui.topRight.addChild(targetText); function spawnChildren() { var boyCount = Math.floor(Math.random() * 6) + 1; var girlCount = Math.floor(Math.random() * 6) + 1; for (var i = 0; i < boyCount; i++) { var boy = game.addChild(new Child('boy')); boy.x = Math.random() * 1800 + 124; boy.y = Math.random() * 2400 + 166; // Speed is now calculated in Child constructor based on age boy.speed += (currentLevel - 1) * 0.2; children.push(boy); } for (var j = 0; j < girlCount; j++) { var girl = game.addChild(new Child('girl')); girl.x = Math.random() * 1800 + 124; girl.y = Math.random() * 2400 + 166; // Speed is now calculated in Child constructor based on age girl.speed += (currentLevel - 1) * 0.2; children.push(girl); } } function updateUI() { levelText.setText('Level: ' + currentLevel); scoreText.setText('Score: ' + LK.getScore()); targetText.setText('Target: ' + pointsNeeded); } function checkLevelUp() { if (LK.getScore() >= pointsNeeded) { currentLevel++; if (currentLevel > 35) { LK.showYouWin(); return; } // Reset score to 0 and calculate new points needed for next level LK.setScore(0); pointsNeeded = 50 + (currentLevel - 2) * 5; for (var i = 0; i < children.length; i++) { children[i].destroy(); } children = []; spawnChildren(); updateUI(); LK.effects.flashScreen(0x00FF00, 500); } } function checkLevelDown() { if (LK.getScore() < 0) { LK.setScore(0); } // Check if we need to go down a level (if score becomes very low compared to target) var minScoreForLevel = Math.max(0, pointsNeeded - 50); if (LK.getScore() < minScoreForLevel && currentLevel > 1) { currentLevel--; pointsNeeded = 50 + (currentLevel - 2) * 5; if (pointsNeeded < 50) pointsNeeded = 50; for (var i = 0; i < children.length; i++) { children[i].destroy(); } children = []; spawnChildren(); updateUI(); LK.effects.flashScreen(0xFF4444, 500); } } spawnChildren(); updateUI(); game.down = function (x, y, obj) { snake.moveTo(x, y); }; game.update = function () { for (var i = children.length - 1; i >= 0; i--) { var child = children[i]; if (snake.intersects(child)) { LK.setScore(LK.getScore() + 5); LK.getSound('catch').play(); // Display congratulations message var congratsMessage = new Message('Félicitations ! Vous avez mangé ' + child.name + ' ce petit désastre ambulant', 0x00FF00); game.addChild(congratsMessage); messages.push(congratsMessage); child.destroy(); children.splice(i, 1); checkLevelUp(); continue; } var distanceFromCenter = Math.sqrt(Math.pow(child.x - 1024, 2) + Math.pow(child.y - 1366, 2)); if (distanceFromCenter > 1500) { // Display escape message var escapeMessage = new Message('Oh non! ' + child.name + ' a réussi à s\'enfuir !', 0xFF4444); game.addChild(escapeMessage); messages.push(escapeMessage); child.destroy(); children.splice(i, 1); } } // Handle bottle collisions and cleanup for (var b = bottles.length - 1; b >= 0; b--) { var bottle = bottles[b]; // Check collision with snake if (snake.intersects(bottle)) { LK.setScore(Math.max(0, LK.getScore() - 2)); LK.effects.flashObject(snake, 0xFF0000, 500); bottle.destroy(); bottles.splice(b, 1); checkLevelDown(); continue; } // Check if bottle should be destroyed if (bottle.shouldDestroy) { bottle.destroy(); bottles.splice(b, 1); } } // Handle adult cleanup for (var a = adults.length - 1; a >= 0; a--) { var adult = adults[a]; if (adult.shouldDestroy) { adult.destroy(); adults.splice(a, 1); } } // Handle rifle cleanup for (var r = rifles.length - 1; r >= 0; r--) { var rifle = rifles[r]; if (rifle.shouldDestroy) { rifle.destroy(); rifles.splice(r, 1); } } // Handle message cleanup for (var m = messages.length - 1; m >= 0; m--) { var message = messages[m]; if (message.shouldDestroy) { message.destroy(); messages.splice(m, 1); } } if (children.length === 0) { spawnChildren(); } updateUI(); }; LK.playMusic('jungle');
===================================================================
--- original.js
+++ change.js
@@ -99,14 +99,29 @@
self.speed = 2; // 6-9 year olds are fastest (2x speed)
} else {
self.speed = 1; // Others have normal speed
}
+ // Assign random name based on type
+ if (self.type === 'girl') {
+ self.name = girlNames[Math.floor(Math.random() * girlNames.length)];
+ } else {
+ self.name = boyNames[Math.floor(Math.random() * boyNames.length)];
+ }
self.specialAbilityTimer = 0;
self.specialAbilityCooldown = 180 + Math.random() * 240; // 3-7 seconds at 60fps
var childGraphics = self.attachAsset(self.type, {
anchorX: 0.5,
anchorY: 0.5
});
+ // Add name text above child
+ self.nameText = new Text2(self.name, {
+ size: 20,
+ fill: 0xFFFF00
+ });
+ self.nameText.anchor.set(0.5, 1);
+ self.nameText.x = 0;
+ self.nameText.y = -55;
+ self.addChild(self.nameText);
// Add age text above child
self.ageText = new Text2(self.age.toString(), {
size: 24,
fill: 0xFFFFFF
@@ -200,8 +215,43 @@
if (self.y > 2682) self.y = 2682;
};
return self;
});
+var Message = Container.expand(function (text, color) {
+ var self = Container.call(this);
+ self.lifetime = 300; // 5 seconds at 60fps
+ self.age = 0;
+ self.fadeStartTime = 240; // Start fading after 4 seconds
+ var messageText = new Text2(text, {
+ size: 40,
+ fill: color || 0xFFFFFF
+ });
+ messageText.anchor.set(0.5, 0.5);
+ self.addChild(messageText);
+ // Position at center of screen
+ self.x = 1024;
+ self.y = 1366;
+ // Initial fade in effect
+ self.alpha = 0;
+ tween(self, {
+ alpha: 1
+ }, {
+ duration: 500,
+ easing: tween.easeOut
+ });
+ self.update = function () {
+ self.age++;
+ // Start fading out
+ if (self.age >= self.fadeStartTime && self.alpha > 0) {
+ var fadeProgress = (self.age - self.fadeStartTime) / (self.lifetime - self.fadeStartTime);
+ self.alpha = Math.max(0, 1 - fadeProgress);
+ }
+ if (self.age >= self.lifetime) {
+ self.shouldDestroy = true;
+ }
+ };
+ return self;
+});
var Rifle = Container.expand(function (x, y, targetX, targetY) {
var self = Container.call(this);
self.lifetime = 120; // 2 seconds at 60fps
self.age = 0;
@@ -288,8 +338,12 @@
var adults = [];
var rifles = [];
var currentLevel = 1;
var pointsNeeded = 50;
+// Arrays of names for children
+var girlNames = ['Mia', 'Sara', 'Laura', 'Maya', 'Julie', 'Olivia', 'Martine', 'Paula', 'Daisy', 'Juliette', 'Margot', 'Tina', 'Abigaïl', 'Clémence', 'Amélie', 'Amina', 'Laurence', 'Ilona', 'Gloria', 'Valentina', 'Victoria', 'Ninon', 'Manon', 'Violette', 'Rose', 'Zélie', 'Ylenia', 'Sabrina', 'Harper', 'Valentine', 'Élodie', 'Grâce', 'Jade', 'Eva', 'Maëva', 'Anna', 'Alice', 'Louise', 'Zoé', 'Chloé', 'Julia', 'Romy', 'Iris', 'Ambre', 'Agathe', 'Inaya', 'Lea', 'Adele', 'Clara', 'Emily', 'Eveline', 'Dorine', 'Lou', 'Amelia', 'Isabella', 'Charlotte', 'Delphine', 'Dona', 'Yasmine', 'Marie', 'Carine', 'Kimberly', 'Erina', 'Maëlle', 'Joséphine', 'Jacqueline', 'Françoise', 'Théa', 'Denise'];
+var boyNames = ['Hugo', 'Louis', 'Karim', 'Julien', 'Thomas', 'Thom', 'Lucas', 'Clément', 'Laurent', 'Ibrahim', 'Mohamed', 'Léo', 'Willy', 'Moris', 'Mathieu', 'Marius', 'Paul', 'Valentin', 'Bernard', 'Eric', 'Jules', 'Claude', 'Quentin', 'Gabriel', 'Dimitri', 'Raphaël', 'Noa', 'Maël', 'Arthur', 'Adam', 'Isaac', 'Eden', 'Léon', 'Sacha', 'Aaron', 'Liam', 'Naël', 'Malo', 'Baptiste', 'Corentin', 'Diego', 'Alexandre', 'Felix', 'Gaspard', 'Alain', 'Albert', 'Adrien', 'Achille', 'Dorian', 'Alexis', 'Alex', 'Mylan', 'Pierre', 'Yann', 'Axel', 'Charles', 'David', 'Joseph', 'Jacques', 'Antoine', 'François', 'Théo', 'Maxime', 'Victor', 'Anthony', 'André', 'William', 'Jacob', 'Nathan', 'Sam', 'Logan'];
+var messages = [];
var levelText = new Text2('Level: 1', {
size: 60,
fill: 0xFFFFFF
});
@@ -384,15 +438,23 @@
var child = children[i];
if (snake.intersects(child)) {
LK.setScore(LK.getScore() + 5);
LK.getSound('catch').play();
+ // Display congratulations message
+ var congratsMessage = new Message('Félicitations ! Vous avez mangé ' + child.name + ' ce petit désastre ambulant', 0x00FF00);
+ game.addChild(congratsMessage);
+ messages.push(congratsMessage);
child.destroy();
children.splice(i, 1);
checkLevelUp();
continue;
}
var distanceFromCenter = Math.sqrt(Math.pow(child.x - 1024, 2) + Math.pow(child.y - 1366, 2));
if (distanceFromCenter > 1500) {
+ // Display escape message
+ var escapeMessage = new Message('Oh non! ' + child.name + ' a réussi à s\'enfuir !', 0xFF4444);
+ game.addChild(escapeMessage);
+ messages.push(escapeMessage);
child.destroy();
children.splice(i, 1);
}
}
@@ -429,8 +491,16 @@
rifle.destroy();
rifles.splice(r, 1);
}
}
+ // Handle message cleanup
+ for (var m = messages.length - 1; m >= 0; m--) {
+ var message = messages[m];
+ if (message.shouldDestroy) {
+ message.destroy();
+ messages.splice(m, 1);
+ }
+ }
if (children.length === 0) {
spawnChildren();
}
updateUI();
Fond d'écran forêt amazonienne. In-Game asset. 2d. High contrast. No shadows
Petite fille. In-Game asset. 2d. High contrast. No shadows
Petit garçon. In-Game asset. 2d. High contrast. No shadows
Serpent. In-Game asset. 2d. High contrast. No shadows
Biberon. In-Game asset. 2d. High contrast. No shadows
Fusil. In-Game asset. 2d. High contrast. No shadows
Adulte de 30 ans. In-Game asset. 2d. High contrast. No shadows