User prompt
ajoute des messages droÌles qui font rire a chaque reÌponse mauvaise ou bonne
User prompt
Ajoute 5 autres nouveaux leÌgumes
User prompt
Ajoute de nouveaux leÌ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 leÌgume juger correctement, et perdre 1 Legpot a chaque leÌgume mal juger
User prompt
DeÌplace tout ça en haut au centre de l'eÌcran du jeu
User prompt
Affiche le nombre restants de Legpot avant le niveau supeÌrieur juste en bas du texte indiquant le niveau, le tout doit eÌtre placeÌ en haut au centre du jeu
User prompt
Affiche le nombre restants de Legpot avant le niveau supeÌrieur juste en bas du texte indiquant le niveau, le tout doit eÌtre au centre du jeu
User prompt
Affiche le nombre restants de Legpot avant le niveau supeÌ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 posseÌder juste en bas
User prompt
DeÌplace le niveau actuel du joueur, et le nombre de Legpot posseÌ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 eÌtre afficheÌ en haut au centre du jeu
User prompt
Le nombre de Legpot , le niveau actuel du jeu etc doit eÌtre afficheÌ au centre en haut du jeu
Code edit (1 edits merged)
Please save this source code
User prompt
Tribunal des leÌgumes
Initial prompt
CreÌe le jeu "Tribunal des leÌgumes", le but de ce jeu est de geÌrer le tribunal des leÌgumes (oui, oui je suis totalement dingue), de recevoir des plaintes de leÌgumes et de deÌcider de leurs sanctions peÌnales, VoilaÌ comment doit eÌtre preÌsente le jeu et comment le joueur peut y jouer etc... : Le fond d'eÌcran du jeu doit eÌtre rouge, L'eÌcran du jeu repreÌsente la salle de jugement des leÌgumes , il y a un grand sieÌge , avec un micro pour parler (comme dans les tribunaux classiques d'humains), et des petits sieÌges disperseÌs un peu partout sur lesquels les diffeÌrents leÌgumes s'assoient (J'ajouterai moi meÌme les assets de leÌgumes, et de sieÌge ainsi que de micro), Le jeu se deÌroule ainsi : des leÌgumes sont accuseÌs de crimes ridicules (a toi de geÌneÌrer), sur le jeu, le joueur doit appuyer sur le boutton bleu avec texte blanc "Prendre la plainte", pour lire de quoi est accuseÌ le legume en question, et de quel legume il s'agit, Puis, un boutton jaune avec texte noir "Choisir la peine", apparaiÌt et est disponible des que le joueur a fermer l'eÌcran et lu la plainte, Le joueur peut alors deÌcider de la peine qu'il donne au leÌgume en question, Entre diffeÌrentes peines ridicules et adapteÌs aux leÌgumes, mais attention, la peine doit eÌtre adapteÌe aÌ la nature du leÌgume et aÌ sa faute, Sinon le joueur perd des Legpot (systeÌme de points dans le jeu qui sert a monter en niveau), Si la peine est adapteÌ, le joueur gagne 1 Legpot, Si la peine est inadapteÌ il perd 1 Legpot, Il doit y avoir un systeÌme de niveaux : pour atteindre le niveau 2, le joueur doit accumuleÌ 4 Legpot, Et le nombre de Legpot requis pour le niveau suivant double a chaque nouveau niveau par rapport au niveau preÌceÌdent, si le joueur perd trop de Legpot, il reÌ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