User prompt
ajoute des messages drôles qui font rire a chaque réponse mauvaise ou bonne
User prompt
Ajoute 5 autres nouveaux légumes
User prompt
Ajoute de nouveaux légumes
User prompt
Ajoute une musique de fond en boucle au jeu
User prompt
Attention, le joueur ne doit gagner que 1 Legpot a chaque légume juger correctement, et perdre 1 Legpot a chaque légume mal juger
User prompt
Déplace tout ça en haut au centre de l'écran du jeu
User prompt
Affiche le nombre restants de Legpot avant le niveau supérieur juste en bas du texte indiquant le niveau, le tout doit être placé en haut au centre du jeu
User prompt
Affiche le nombre restants de Legpot avant le niveau supérieur juste en bas du texte indiquant le niveau, le tout doit être au centre du jeu
User prompt
Affiche le nombre restants de Legpot avant le niveau supérieur juste en bas du texte indiquant le niveau
User prompt
Affiche le nombre de Legpot restants avant le niveau suivant sous le texte indiquant le niveau du joueur, et le nombre de Legpot posséder juste en bas
User prompt
Déplace le niveau actuel du joueur, et le nombre de Legpot posséder ainsi que le nombre de Legpot restants avant le niveau suivant en haut au centre du jeu
User prompt
Le nombre de Legpot , le niveau actuel du jeu etc doit être affiché en haut au centre du jeu
User prompt
Le nombre de Legpot , le niveau actuel du jeu etc doit être affiché au centre en haut du jeu
Code edit (1 edits merged)
Please save this source code
User prompt
Tribunal des légumes
Initial prompt
Crée le jeu "Tribunal des légumes", le but de ce jeu est de gérer le tribunal des légumes (oui, oui je suis totalement dingue), de recevoir des plaintes de légumes et de décider de leurs sanctions pénales, Voilà comment doit être présente le jeu et comment le joueur peut y jouer etc... : Le fond d'écran du jeu doit être rouge, L'écran du jeu représente la salle de jugement des légumes , il y a un grand siège , avec un micro pour parler (comme dans les tribunaux classiques d'humains), et des petits sièges dispersés un peu partout sur lesquels les différents légumes s'assoient (J'ajouterai moi même les assets de légumes, et de siège ainsi que de micro), Le jeu se déroule ainsi : des légumes sont accusés de crimes ridicules (a toi de générer), sur le jeu, le joueur doit appuyer sur le boutton bleu avec texte blanc "Prendre la plainte", pour lire de quoi est accusé le legume en question, et de quel legume il s'agit, Puis, un boutton jaune avec texte noir "Choisir la peine", apparaît et est disponible des que le joueur a fermer l'écran et lu la plainte, Le joueur peut alors décider de la peine qu'il donne au légume en question, Entre différentes peines ridicules et adaptés aux légumes, mais attention, la peine doit être adaptée à la nature du légume et à sa faute, Sinon le joueur perd des Legpot (système de points dans le jeu qui sert a monter en niveau), Si la peine est adapté, le joueur gagne 1 Legpot, Si la peine est inadapté il perd 1 Legpot, Il doit y avoir un système de niveaux : pour atteindre le niveau 2, le joueur doit accumulé 4 Legpot, Et le nombre de Legpot requis pour le niveau suivant double a chaque nouveau niveau par rapport au niveau précédent, si le joueur perd trop de Legpot, il régresse de niveau Le jeu doit avoir 67 niveaux
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1", { legpot: 0, level: 1 }); /**** * Classes ****/ // Bouton de peine var PunishmentButton = Container.expand(function () { var self = Container.call(this); self.punishId = null; self.text = null; self.icon = null; self.callback = null; self.init = function (punishId, label, iconId, callback) { self.punishId = punishId; self.removeChildren(); self.icon = self.attachAsset(iconId, { anchorX: 0.5, anchorY: 0.5 }); self.icon.y = 0; self.text = new Text2(label, { size: 60, fill: "#222" }); self.text.anchor.set(0.5, 0); self.text.y = self.icon.height / 2 + 10; self.addChild(self.text); self.callback = callback; }; self.down = function (x, y, obj) { if (self.callback) self.callback(self.punishId); }; return self; }); // Légume à juger var Vegetable = Container.expand(function () { var self = Container.call(this); self.vegType = null; // 'carrot', 'broccoli', etc. self.setType = function (type) { self.vegType = type; self.removeChildren(); var vegAsset = self.attachAsset(type, { anchorX: 0.5, anchorY: 1 }); vegAsset.y = 0; // Ajoute une perruque de juge pour le fun var wig = self.attachAsset('judgeWig', { anchorX: 0.5, anchorY: 1 }); wig.y = -vegAsset.height + 60; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xf7f7e0 }); /**** * Game Code ****/ // Liste de légumes et de plaintes absurdes // --- Données du jeu --- // Légumes (formes simples pour MVP) // Peines (icônes simples) // Son (MVP: pas de son pour l’instant) var vegetables = [{ type: 'carrot', name: 'Carotte' }, { type: 'broccoli', name: 'Brocoli' }, { type: 'eggplant', name: 'Aubergine' }, { type: 'tomato', name: 'Tomate' }, { type: 'potato', name: 'Pomme de terre' }, { type: 'onion', name: 'Oignon' }, { type: 'zucchini', name: 'Courgette' }, { type: 'pepper', name: 'Poivron' }, { type: 'radish', name: 'Radis' }, { type: 'cucumber', name: 'Concombre' }, { type: 'leek', name: 'Poireau' }, { type: 'turnip', name: 'Navet' }, { type: 'pumpkin', name: 'Citrouille' }]; var complaints = [ // Format: {vegType, text, correctPunish} { vegType: 'carrot', text: "La carotte a tenté de se cacher dans le gâteau aux carottes.", correctPunish: 'peel' }, { vegType: 'broccoli', text: "Le brocoli a effrayé des enfants à la cantine.", correctPunish: 'fridge' }, { vegType: 'eggplant', text: "L’aubergine a usurpé l’identité d’une courgette.", correctPunish: 'compost' }, { vegType: 'tomato', text: "La tomate s’est prise pour un fruit et a semé la zizanie.", correctPunish: 'soup' }, { vegType: 'potato', text: "La pomme de terre a refusé d’être épluchée.", correctPunish: 'peel' }, { vegType: 'onion', text: "L’oignon a fait pleurer tout le tribunal.", correctPunish: 'fridge' }, { vegType: 'carrot', text: "La carotte a tenté de bronzer au soleil du frigo.", correctPunish: 'fridge' }, { vegType: 'broccoli', text: "Le brocoli a organisé une manifestation contre la cuisson à la vapeur.", correctPunish: 'compost' }, { vegType: 'eggplant', text: "L’aubergine a tenté de repeindre le tribunal en violet.", correctPunish: 'compost' }, { vegType: 'tomato', text: "La tomate a éclaboussé le juge lors de son entrée.", correctPunish: 'soup' }, { vegType: 'potato', text: "La pomme de terre a tenté de rouler hors du tribunal.", correctPunish: 'peel' }, { vegType: 'onion', text: "L’oignon a tenté de se déguiser en ail.", correctPunish: 'compost' }, { vegType: 'zucchini', text: "La courgette a tenté de se faire passer pour une aubergine.", correctPunish: 'fridge' }, { vegType: 'zucchini', text: "La courgette a refusé d’entrer dans la ratatouille.", correctPunish: 'compost' }, { vegType: 'pepper', text: "Le poivron a semé la pagaille dans la salade.", correctPunish: 'soup' }, { vegType: 'pepper', text: "Le poivron a tenté de se cacher parmi les tomates.", correctPunish: 'fridge' }, { vegType: 'radish', text: "Le radis a tenté de se faufiler dans la salade sans invitation.", correctPunish: 'fridge' }, { vegType: 'cucumber', text: "Le concombre a organisé une course de glissade dans le tribunal.", correctPunish: 'compost' }, { vegType: 'leek', text: "Le poireau a essayé de se faire passer pour une baguette magique.", correctPunish: 'soup' }, { vegType: 'turnip', text: "Le navet a refusé de jouer son rôle dans la soupe.", correctPunish: 'compost' }, { vegType: 'pumpkin', text: "La citrouille a tenté de transformer le tribunal en carrosse.", correctPunish: 'peel' }]; // Peines disponibles var punishments = [{ id: 'soup', label: 'Soupe', icon: 'punishSoup' }, { id: 'compost', label: 'Compost', icon: 'punishCompost' }, { id: 'peel', label: 'Épluchage', icon: 'punishPeel' }, { id: 'fridge', label: 'Frigo', icon: 'punishFridge' }]; // Progression var level = storage.level || 1; var legpot = storage.legpot || 0; var requiredLegpot = function requiredLegpot(lvl) { return Math.pow(2, lvl - 1) * 10; }; // 10, 20, 40, 80, ... // Éléments d’UI var vegNode = new Vegetable(); vegNode.x = 2048 / 2; vegNode.y = 1100; game.addChild(vegNode); var complaintText = new Text2('', { size: 80, fill: "#333", wordWrap: true, wordWrapWidth: 1800 }); complaintText.anchor.set(0.5, 0); complaintText.x = 2048 / 2; complaintText.y = 300; game.addChild(complaintText); // Affichage du niveau et Legpot (ligne principale) - déplacé en haut au centre de la zone de jeu var statusTxt = new Text2('', { size: 80, fill: 0x8B4513, fontWeight: "bold" }); statusTxt.anchor.set(0.5, 0); statusTxt.x = 2048 / 2; statusTxt.y = 20; game.addChild(statusTxt); // Affichage du nombre de Legpot restants avant le niveau suivant (juste en dessous) var restantTxt = new Text2('', { size: 60, fill: 0x8B4513, fontWeight: "bold" }); restantTxt.anchor.set(0.5, 0); restantTxt.x = 2048 / 2; restantTxt.y = statusTxt.y + statusTxt.height + 5; game.addChild(restantTxt); // Boutons de peines var punishButtons = []; var punishButtonY = 2000; var punishButtonSpacing = 450; for (var i = 0; i < punishments.length; i++) { var btn = new PunishmentButton(); btn.init(punishments[i].id, punishments[i].label, punishments[i].icon, onPunishSelected); btn.x = 2048 / 2 + (i - 1.5) * punishButtonSpacing; btn.y = punishButtonY; game.addChild(btn); punishButtons.push(btn); } // --- Logique du jeu --- var currentComplaint = null; var canJudge = true; // Sélectionne une plainte aléatoire pour le niveau courant function pickComplaint() { var idx = Math.floor(Math.random() * complaints.length); currentComplaint = complaints[idx]; vegNode.setType(currentComplaint.vegType); complaintText.setText(currentComplaint.text); canJudge = true; } // Met à jour l’affichage du score, du niveau et du nombre de Legpot restants avant le niveau suivant function updateUI() { var legpotRestant = requiredLegpot(level) - legpot; if (legpotRestant < 0) legpotRestant = 0; statusTxt.setText("Niveau : " + level + " / 67 | Legpot : " + legpot); statusTxt.x = 2048 / 2; statusTxt.y = 20; restantTxt.setText("Restant avant niveau suivant : " + legpotRestant); restantTxt.x = 2048 / 2; restantTxt.y = statusTxt.y + statusTxt.height + 5; } // Gère la sélection d’une peine function onPunishSelected(punishId) { if (!canJudge) return; canJudge = false; // Messages drôles pour bonnes/mauvaises réponses var funnyGood = ["Bravo ! Ce légume va s’en souvenir toute sa vie… de légume.", "Justice potagère rendue avec brio !", "Le tribunal applaudit votre jugement !", "Ce légume n’en revient pas de votre sévérité.", "Vous êtes le cauchemar des légumes délinquants !", "On va en faire une salade de ce dossier !", "Votre marteau de juge fait trembler les carottes !"]; var funnyBad = ["Oups ! Le légume a failli s’en tirer…", "Le public du tribunal est hilare !", "Ce n’était pas la bonne peine, mais c’était drôle !", "Le légume jubile, il s’en sort bien !", "Attention, le syndicat des légumes va protester !", "Le juge a glissé sur une peau de banane imaginaire.", "Même la courgette n’a pas compris votre choix !"]; var correct = punishId === currentComplaint.correctPunish; if (correct) { // Animation de félicitations LK.effects.flashObject(vegNode, 0x83de44, 600); legpot += 1; // Affiche un message drôle de réussite var msg = funnyGood[Math.floor(Math.random() * funnyGood.length)]; complaintText.setText(currentComplaint.text + "\n\n🥕 " + msg); // Passage de niveau si assez de Legpot if (legpot >= requiredLegpot(level)) { level++; legpot = 0; LK.effects.flashScreen(0x83de44, 800); LK.setTimeout(function () { LK.showYouWin(); }, 900); storage.level = level; storage.legpot = legpot; updateUI(); return; } } else { // Animation d’erreur LK.effects.flashObject(vegNode, 0xff0000, 600); legpot -= 1; // Affiche un message drôle d’échec var msg = funnyBad[Math.floor(Math.random() * funnyBad.length)]; complaintText.setText(currentComplaint.text + "\n\n🍆 " + msg); if (legpot < 0) { // Recul de niveau si possible if (level > 1) { level--; legpot = requiredLegpot(level) - 1; LK.effects.flashScreen(0xff0000, 800); } else { legpot = 0; } } } storage.level = level; storage.legpot = legpot; updateUI(); // Nouvelle plainte après délai LK.setTimeout(function () { pickComplaint(); }, 900); } // Initialisation updateUI(); pickComplaint(); // Musique de fond en boucle LK.playMusic('musicId'); // --- Game Over/Win automatique par LK --- game.update = function () { // Rien à faire ici pour ce jeu };
===================================================================
--- original.js
+++ change.js
@@ -70,13 +70,13 @@
/****
* Game Code
****/
-// Son (MVP: pas de son pour l’instant)
-// Peines (icônes simples)
-// Légumes (formes simples pour MVP)
-// --- Données du jeu ---
// Liste de légumes et de plaintes absurdes
+// --- Données du jeu ---
+// Légumes (formes simples pour MVP)
+// Peines (icônes simples)
+// Son (MVP: pas de son pour l’instant)
var vegetables = [{
type: 'carrot',
name: 'Carotte'
}, {
@@ -299,13 +299,19 @@
// Gère la sélection d’une peine
function onPunishSelected(punishId) {
if (!canJudge) return;
canJudge = false;
+ // Messages drôles pour bonnes/mauvaises réponses
+ var funnyGood = ["Bravo ! Ce légume va s’en souvenir toute sa vie… de légume.", "Justice potagère rendue avec brio !", "Le tribunal applaudit votre jugement !", "Ce légume n’en revient pas de votre sévérité.", "Vous êtes le cauchemar des légumes délinquants !", "On va en faire une salade de ce dossier !", "Votre marteau de juge fait trembler les carottes !"];
+ var funnyBad = ["Oups ! Le légume a failli s’en tirer…", "Le public du tribunal est hilare !", "Ce n’était pas la bonne peine, mais c’était drôle !", "Le légume jubile, il s’en sort bien !", "Attention, le syndicat des légumes va protester !", "Le juge a glissé sur une peau de banane imaginaire.", "Même la courgette n’a pas compris votre choix !"];
var correct = punishId === currentComplaint.correctPunish;
if (correct) {
// Animation de félicitations
LK.effects.flashObject(vegNode, 0x83de44, 600);
legpot += 1;
+ // Affiche un message drôle de réussite
+ var msg = funnyGood[Math.floor(Math.random() * funnyGood.length)];
+ complaintText.setText(currentComplaint.text + "\n\n🥕 " + msg);
// Passage de niveau si assez de Legpot
if (legpot >= requiredLegpot(level)) {
level++;
legpot = 0;
@@ -321,8 +327,11 @@
} else {
// Animation d’erreur
LK.effects.flashObject(vegNode, 0xff0000, 600);
legpot -= 1;
+ // Affiche un message drôle d’échec
+ var msg = funnyBad[Math.floor(Math.random() * funnyBad.length)];
+ complaintText.setText(currentComplaint.text + "\n\n🍆 " + msg);
if (legpot < 0) {
// Recul de niveau si possible
if (level > 1) {
level--;
Brocolis. In-Game asset. 2d. High contrast. No shadows
Carrotte. In-Game asset. 2d. High contrast. No shadows
Obergine. In-Game asset. 2d. High contrast. No shadows
Tomate. In-Game asset. 2d. High contrast. No shadows
Patate. In-Game asset. 2d. High contrast. No shadows
Onion. In-Game asset. 2d. High contrast. No shadows
Casquette a l'envers. In-Game asset. 2d. High contrast. No shadows
Soupe. In-Game asset. 2d. High contrast. No shadows
Compote. In-Game asset. 2d. High contrast. No shadows
Pelage de legumes. In-Game asset. 2d. High contrast. No shadows
Frigo. In-Game asset. 2d. High contrast. No shadows
Radis. In-Game asset. 2d. High contrast. No shadows
Courgettes. In-Game asset. 2d. High contrast. No shadows
Poivre. In-Game asset. 2d. High contrast. No shadows
Comcombre. In-Game asset. 2d. High contrast. No shadows
poireau. In-Game asset. 2d. High contrast. No shadows
Navet. In-Game asset. 2d. High contrast. No shadows
Citrouille. In-Game asset. 2d. High contrast. No shadows