User prompt
Los botones principales siguen estando muy pegados separa los más y los iconos del inventario más grandes aun también vamos añadir iconos a la barra hambre, Diversión y fatiga.
User prompt
También has los iconos del inventario más grandes además algunos botones estan muy pegados como el de entranamiento y se sobre ponen con otros
User prompt
Deberíamos hacer los botones un poco más grandes y el texto también sobra mucho espacio y además la barra de diversión y hambre deben bajar más lento por si solas
User prompt
La barra de hambre no baja por si sola y la barra de diversión baja lentamente, la barra de dormir se cambia a fatiga y esta sube solo cuando entrena, falta añadir un icono encima del Digimon que indique si esta lesionado o enfermo. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
La barra de hambre solo bajara un poco cuando entrenes y juegues con el Digimon además el botón de alimentar lo vamos a quitar y en su lugar añadiremos un inventario abajo de los botones principales en ese inventario en cada nueva partida y solo en estas, el jugador recibirá 10 carnes pequeñas 5 benditas y 3 medicinas, el digimon puede lastimarse si lo entrenas con cansancio y si no le das una bendita esto empeora y se enferma si no le das la medicina se muere y comienzas de nuevo también el digimon muere si la barra de hambre llega a cero y no lo alimentas en 5 minutos, el tiempo de lesión a enfermedad es de 30 minutos, las carnes que existen son, Carne Pequeña, Carne Mediana, Carne Grande, Solomillo. ↪💡 Consider importing and using the following plugins: @upit/storage.v1, @upit/tween.v1
User prompt
Hay que añadir un fondo
User prompt
Please fix the bug: 'Uncaught TypeError: self.updateAppearance is not a function' in or related to this line: 'self.updateAppearance();' Line Number: 159
User prompt
Puedes añadir los assets que faltan de todo eso y por favor arregla bien el teclado digital el espacio y borrar se sobre ponen en otras letras
User prompt
Muy bien falta que los Digimon tengan diferentes apariencia y cada uno evolucione según los parámetros de nivel, ataque, vida, velocidad, peso y ratio de victorias, todas esas estadísticas deberían ser visibles al pulsar el Digimon y por cierto quiero que el jugar es el que ponga el nombre del Digimon con un límite de 7 Caracteres. ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'storage.savedGames = savedGames;' Line Number: 893 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'Uncaught TypeError: storage.get is not a function' in or related to this line: 'var savedGames = storage.get('savedGames') || [];' Line Number: 833 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'storage.savedGames = savedGames;' Line Number: 893
User prompt
Faltaron varias cosas de las que te pedi por favor ↪💡 Consider importing and using the following plugins: @upit/storage.v1, @upit/tween.v1
User prompt
Muy bien pero deberíamos añadir un menu principal donde diga nuevo juego y también ver las partidas guardadas, cuando iniciemos un juego nuevo nos pedirá el nombre del Digimon y escogeremos uno de los 3 digi huevos coloca otros 3 con un candado que se desbloquearan cuando los hayamos comprado dentro del juego o completado una misión tendremos que añadir dinero y una tienda, el dinero se conseguirá jugando con el Digimon o en combates, será necesario implementar un sistema de entrenamiento de ataque, vida y velocidad la defensa se calculará según el peso del Digimon y este se sabrá por la cantidad de comida digerida el entrenamiento bajara un poquito el peso cada vez y la comida lo subirá, añadiremos diferentes comidas con efectos únicos también debemos tener música en la tienda, en el menú principal y en el menú de entrenamiento, el entrenamiento y jugar nos dará experiencia la cual aumentará el nivel de evolución cada Digimon tendrá 5 evoluciones. Más adelante profundizaremos la mecánica de combate rítmica junto con sus tipos y elementos. ↪💡 Consider importing and using the following plugins: @upit/storage.v1, @upit/tween.v1
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'setText')' in or related to this line: 'evolutionText.setText(getText('evolutionLevel') + ': ' + pet.evolutionLevel);' Line Number: 412
User prompt
Please fix the bug: 'hungerBar.children[1].setText is not a function' in or related to this line: 'return languages[currentLanguage][key] || key;' Line Number: 400
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'setText')' in or related to this line: 'evolutionText.setText(getText('evolutionLevel') + ': ' + pet.evolutionLevel);' Line Number: 415
User prompt
Please fix the bug: 'hungerBar.children[1].setText is not a function' in or related to this line: 'return languages[currentLanguage][key] || key;' Line Number: 400
User prompt
Si y le pones un icono de bandera según el idioma ↪💡 Consider importing and using the following plugins: @upit/storage.v1
Code edit (1 edits merged)
Please save this source code
User prompt
Digi Pet Evolution
Initial prompt
Hola Ava mucho gusto quisiera crear un juego inspirado en los tamagoshi de Digimon
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var ActionButton = Container.expand(function (text, color) { var self = Container.call(this); var buttonBg = self.attachAsset('button', { anchorX: 0.5, anchorY: 0.5, tint: color }); var buttonText = new Text2(text, { size: 30, fill: 0xFFFFFF }); buttonText.anchor.set(0.5, 0.5); self.addChild(buttonText); self.down = function (x, y, obj) { tween(self, { scaleX: 0.9, scaleY: 0.9 }, { duration: 100 }); }; self.up = function (x, y, obj) { tween(self, { scaleX: 1, scaleY: 1 }, { duration: 100 }); if (self.onPress) { self.onPress(); } }; return self; }); var DigiEgg = Container.expand(function (eggType, isLocked) { var self = Container.call(this); var eggColors = [0x4CAF50, 0x2196F3, 0xFF9800, 0x9C27B0, 0xF44336, 0xFF5722]; var eggGraphics = self.attachAsset('petBody', { anchorX: 0.5, anchorY: 0.5, tint: eggColors[eggType], scaleX: 0.8, scaleY: 1.2 }); if (isLocked) { var lockOverlay = self.attachAsset('button', { anchorX: 0.5, anchorY: 0.5, tint: 0x666666, alpha: 0.7, scaleX: 0.3, scaleY: 0.3 }); var lockText = new Text2(getText('locked'), { size: 20, fill: 0xFFFFFF }); lockText.anchor.set(0.5, 0.5); lockText.y = 50; self.addChild(lockText); } self.eggType = eggType; self.isLocked = isLocked; self.down = function (x, y, obj) { if (!self.isLocked && self.onSelect) { tween(self, { scaleX: 0.9, scaleY: 0.9 }, { duration: 100 }); self.onSelect(self.eggType); } }; self.up = function (x, y, obj) { if (!self.isLocked) { tween(self, { scaleX: 1, scaleY: 1 }, { duration: 100 }); } }; return self; }); var DigitalPet = Container.expand(function () { var self = Container.call(this); // Pet graphics var body = self.attachAsset('petBody', { anchorX: 0.5, anchorY: 0.5 }); var leftEye = self.attachAsset('petEye', { anchorX: 0.5, anchorY: 0.5, x: -40, y: -30 }); var rightEye = self.attachAsset('petEye', { anchorX: 0.5, anchorY: 0.5, x: 40, y: -30 }); // Pet stats self.hunger = storage.hunger || 100; self.happiness = storage.happiness || 100; self.energy = storage.energy || 100; self.evolutionLevel = storage.evolutionLevel || 0; self.attack = storage.attack || 10; self.health = storage.health || 50; self.speed = storage.speed || 30; self.weight = storage.weight || 50; self.name = storage.petName || 'Digimon'; self.eggType = storage.eggType || 0; self.lastUpdateTime = Date.now(); // Evolution colors self.evolutionColors = [0x4CAF50, 0x2196F3, 0xFF9800, 0x9C27B0, 0xF44336]; self.updateAppearance = function () { var color = self.evolutionColors[self.evolutionLevel] || 0x4CAF50; body.tint = color; // Scale based on evolution level var scale = 1 + self.evolutionLevel * 0.2; body.scaleX = scale; body.scaleY = scale; // Eye expressions based on happiness if (self.happiness > 70) { leftEye.scaleY = 1; rightEye.scaleY = 1; } else if (self.happiness > 30) { leftEye.scaleY = 0.8; rightEye.scaleY = 0.8; } else { leftEye.scaleY = 0.5; rightEye.scaleY = 0.5; } }; self.evolveCheck = function () { var avgStat = (self.hunger + self.happiness + self.energy) / 3; var targetLevel = Math.floor(avgStat / 25); if (targetLevel > self.evolutionLevel && targetLevel < self.evolutionColors.length) { self.evolutionLevel = targetLevel; LK.getSound('evolve').play(); // Evolution animation tween(self, { scaleX: 1.5, scaleY: 1.5 }, { duration: 500, easing: tween.bounceOut, onFinish: function onFinish() { tween(self, { scaleX: 1, scaleY: 1 }, { duration: 300, easing: tween.easeOut }); } }); self.updateAppearance(); LK.effects.flashScreen(0xFFD700, 1000); } }; self.update = function () { var currentTime = Date.now(); var deltaTime = (currentTime - self.lastUpdateTime) / 1000; self.lastUpdateTime = currentTime; // Decay stats over time self.hunger = Math.max(0, self.hunger - deltaTime * 2); self.happiness = Math.max(0, self.happiness - deltaTime * 1.5); self.energy = Math.max(0, self.energy - deltaTime * 1); // Idle animation if (LK.ticks % 120 === 0) { tween(self, { y: self.y - 20 }, { duration: 500, easing: tween.easeInOut, onFinish: function onFinish() { tween(self, { y: self.y + 20 }, { duration: 500, easing: tween.easeInOut }); } }); } self.updateAppearance(); self.evolveCheck(); // Calculate defense based on weight self.defense = Math.floor(self.weight / 2); // Save stats storage.hunger = self.hunger; storage.happiness = self.happiness; storage.energy = self.energy; storage.evolutionLevel = self.evolutionLevel; storage.attack = self.attack; storage.health = self.health; storage.speed = self.speed; storage.weight = self.weight; storage.petName = self.name; storage.eggType = self.eggType; }; return self; }); var LanguageButton = Container.expand(function () { var self = Container.call(this); var buttonBg = self.attachAsset('languageButton', { anchorX: 0.5, anchorY: 0.5 }); var flagEN = self.attachAsset('flagEN', { anchorX: 0.5, anchorY: 0.5, x: -15, scaleX: 0.4, scaleY: 0.4 }); var flagES = self.attachAsset('flagES', { anchorX: 0.5, anchorY: 0.5, x: 15, scaleX: 0.4, scaleY: 0.4 }); // Add EN/ES text overlay var textEN = new Text2('EN', { size: 12, fill: 0xFFFFFF }); textEN.anchor.set(0.5, 0.5); textEN.x = -15; flagEN.addChild(textEN); var textES = new Text2('ES', { size: 12, fill: 0xFFFFFF }); textES.anchor.set(0.5, 0.5); textES.x = 15; flagES.addChild(textES); self.updateDisplay = function () { if (currentLanguage === 'en') { flagEN.alpha = 1; flagES.alpha = 0.5; } else { flagEN.alpha = 0.5; flagES.alpha = 1; } }; self.down = function (x, y, obj) { tween(self, { scaleX: 0.9, scaleY: 0.9 }, { duration: 100 }); }; self.up = function (x, y, obj) { tween(self, { scaleX: 1, scaleY: 1 }, { duration: 100 }); // Toggle language currentLanguage = currentLanguage === 'en' ? 'es' : 'en'; storage.currentLanguage = currentLanguage; self.updateDisplay(); updateAllTexts(); }; self.updateDisplay(); return self; }); var MainMenu = Container.expand(function () { var self = Container.call(this); var titleText = new Text2('Digital Pet', { size: 80, fill: 0x2196F3 }); titleText.anchor.set(0.5, 0.5); titleText.x = 1024; titleText.y = 400; self.addChild(titleText); var newGameButton = new ActionButton(getText('newGame'), 0x4CAF50); newGameButton.x = 1024; newGameButton.y = 800; newGameButton.onPress = function () { showEggSelection(); }; self.addChild(newGameButton); var savedGamesButton = new ActionButton(getText('savedGames'), 0x2196F3); savedGamesButton.x = 1024; savedGamesButton.y = 950; savedGamesButton.onPress = function () { showSavedGames(); }; self.addChild(savedGamesButton); return self; }); var MiniGame = Container.expand(function () { var self = Container.call(this); var gameArea = self.attachAsset('gameArea', { anchorX: 0.5, anchorY: 0.5 }); var target = self.attachAsset('target', { anchorX: 0.5, anchorY: 0.5 }); self.score = 0; self.timeLeft = 10; self.gameActive = false; var scoreText = new Text2('Score: 0', { size: 30, fill: 0x333333 }); scoreText.anchor.set(0.5, 0); scoreText.y = -180; self.addChild(scoreText); var timerText = new Text2('Time: 10', { size: 30, fill: 0x333333 }); timerText.anchor.set(0.5, 0); timerText.y = -140; self.addChild(timerText); self.startGame = function () { self.gameActive = true; self.score = 0; self.timeLeft = 10; scoreText.setText(getText('score') + ': 0'); timerText.setText(getText('time') + ': 10'); self.moveTarget(); var gameTimer = LK.setInterval(function () { self.timeLeft -= 0.1; timerText.setText(getText('time') + ': ' + Math.ceil(self.timeLeft)); if (self.timeLeft <= 0) { LK.clearInterval(gameTimer); self.endGame(); } }, 100); }; self.moveTarget = function () { if (!self.gameActive) return; var newX = (Math.random() - 0.5) * 300; var newY = (Math.random() - 0.5) * 300; tween(target, { x: newX, y: newY }, { duration: 200, easing: tween.easeOut }); }; self.endGame = function () { self.gameActive = false; var happiness = Math.min(20, self.score * 2); pet.happiness = Math.min(100, pet.happiness + happiness); pet.energy = Math.max(0, pet.energy - 15); if (self.onGameEnd) { self.onGameEnd(self.score); } }; target.down = function (x, y, obj) { if (!self.gameActive) return; self.score++; scoreText.setText(getText('score') + ': ' + self.score); LK.getSound('play').play(); tween(target, { scaleX: 1.3, scaleY: 1.3 }, { duration: 100, onFinish: function onFinish() { tween(target, { scaleX: 1, scaleY: 1 }, { duration: 100 }); } }); self.moveTarget(); }; return self; }); var Shop = Container.expand(function () { var self = Container.call(this); var shopBg = self.attachAsset('gameArea', { anchorX: 0.5, anchorY: 0.5, scaleX: 4, scaleY: 5, tint: 0xE3F2FD }); var titleText = new Text2(getText('shop'), { size: 60, fill: 0x1976D2 }); titleText.anchor.set(0.5, 0.5); titleText.y = -800; self.addChild(titleText); var moneyText = new Text2(getText('money') + ': ' + (storage.money || 0), { size: 40, fill: 0x388E3C }); moneyText.anchor.set(0.5, 0.5); moneyText.y = -700; self.addChild(moneyText); // Shop items var shopItems = [{ name: 'Super Food', price: 50, effect: 'hunger+50' }, { name: 'Energy Drink', price: 30, effect: 'energy+40' }, { name: 'Happy Toy', price: 40, effect: 'happiness+30' }]; var itemButtons = []; for (var i = 0; i < shopItems.length; i++) { var item = shopItems[i]; var itemButton = new ActionButton(item.name + ' (' + item.price + ')', 0xFF9800); itemButton.x = 0; itemButton.y = -400 + i * 150; itemButton.itemData = item; itemButton.onPress = function () { if ((storage.money || 0) >= this.itemData.price) { storage.money = (storage.money || 0) - this.itemData.price; // Apply item effect if (this.itemData.effect.includes('hunger')) { pet.hunger = Math.min(100, pet.hunger + 50); } else if (this.itemData.effect.includes('energy')) { pet.energy = Math.min(100, pet.energy + 40); } else if (this.itemData.effect.includes('happiness')) { pet.happiness = Math.min(100, pet.happiness + 30); } moneyText.setText(getText('money') + ': ' + storage.money); LK.getSound('feed').play(); } }; self.addChild(itemButton); itemButtons.push(itemButton); } var closeButton = new ActionButton('X', 0xF44336); closeButton.x = 600; closeButton.y = -800; closeButton.onPress = function () { LK.playMusic('Luna'); gameState = 'game'; game.removeChild(shop); }; self.addChild(closeButton); return self; }); var StatBar = Container.expand(function (label, color) { var self = Container.call(this); var background = self.attachAsset('statBar', { anchorX: 0, anchorY: 0.5 }); var fill = self.attachAsset('statFill', { anchorX: 0, anchorY: 0.5, tint: color, scaleX: 1 }); var labelText = new Text2(label, { size: 25, fill: 0x333333 }); labelText.anchor.set(0, 0.5); labelText.x = -80; self.addChild(labelText); self.updateValue = function (value) { var percentage = Math.max(0, Math.min(100, value)) / 100; tween(fill, { scaleX: percentage }, { duration: 300, easing: tween.easeOut }); }; self.updateLabel = function (newLabel) { labelText.setText(newLabel); }; return self; }); var Training = Container.expand(function () { var self = Container.call(this); var trainingBg = self.attachAsset('gameArea', { anchorX: 0.5, anchorY: 0.5, scaleX: 4, scaleY: 5, tint: 0xFFF3E0 }); var titleText = new Text2(getText('training'), { size: 60, fill: 0xE65100 }); titleText.anchor.set(0.5, 0.5); titleText.y = -800; self.addChild(titleText); // Training stats var attackBar = new TrainingBar(getText('attack'), 0xF44336, 100); attackBar.x = -150; attackBar.y = -500; self.addChild(attackBar); var healthBar = new TrainingBar(getText('health'), 0x4CAF50, 100); healthBar.x = -150; healthBar.y = -400; self.addChild(healthBar); var speedBar = new TrainingBar(getText('speed'), 0x2196F3, 100); speedBar.x = -150; speedBar.y = -300; self.addChild(speedBar); var weightText = new Text2(getText('weight') + ': ' + (pet.weight || 50), { size: 30, fill: 0x795548 }); weightText.anchor.set(0.5, 0.5); weightText.y = -150; self.addChild(weightText); // Training buttons var trainAttackButton = new ActionButton(getText('train') + ' ' + getText('attack'), 0xF44336); trainAttackButton.x = -200; trainAttackButton.y = 100; trainAttackButton.onPress = function () { if (pet.energy >= 10) { pet.attack = Math.min(100, (pet.attack || 0) + 5); pet.energy = Math.max(0, pet.energy - 10); pet.weight = Math.max(20, (pet.weight || 50) - 1); attackBar.updateValue(pet.attack); weightText.setText(getText('weight') + ': ' + pet.weight); storage.money = (storage.money || 0) + 5; LK.getSound('play').play(); } }; self.addChild(trainAttackButton); var trainHealthButton = new ActionButton(getText('train') + ' ' + getText('health'), 0x4CAF50); trainHealthButton.x = 0; trainHealthButton.y = 100; trainHealthButton.onPress = function () { if (pet.energy >= 10) { pet.health = Math.min(100, (pet.health || 0) + 5); pet.energy = Math.max(0, pet.energy - 10); pet.weight = Math.max(20, (pet.weight || 50) - 1); healthBar.updateValue(pet.health); weightText.setText(getText('weight') + ': ' + pet.weight); storage.money = (storage.money || 0) + 5; LK.getSound('play').play(); } }; self.addChild(trainHealthButton); var trainSpeedButton = new ActionButton(getText('train') + ' ' + getText('speed'), 0x2196F3); trainSpeedButton.x = 200; trainSpeedButton.y = 100; trainSpeedButton.onPress = function () { if (pet.energy >= 10) { pet.speed = Math.min(100, (pet.speed || 0) + 5); pet.energy = Math.max(0, pet.energy - 10); pet.weight = Math.max(20, (pet.weight || 50) - 1); speedBar.updateValue(pet.speed); weightText.setText(getText('weight') + ': ' + pet.weight); storage.money = (storage.money || 0) + 5; LK.getSound('play').play(); } }; self.addChild(trainSpeedButton); var closeButton = new ActionButton('X', 0xF44336); closeButton.x = 600; closeButton.y = -800; closeButton.onPress = function () { LK.playMusic('Luna'); gameState = 'game'; game.removeChild(training); }; self.addChild(closeButton); self.updateBars = function () { attackBar.updateValue(pet.attack || 0); healthBar.updateValue(pet.health || 0); speedBar.updateValue(pet.speed || 0); weightText.setText(getText('weight') + ': ' + (pet.weight || 50)); }; return self; }); var TrainingBar = Container.expand(function (label, color, maxValue) { var self = Container.call(this); var background = self.attachAsset('statBar', { anchorX: 0, anchorY: 0.5 }); var fill = self.attachAsset('statFill', { anchorX: 0, anchorY: 0.5, tint: color, scaleX: 0 }); var labelText = new Text2(label, { size: 20, fill: 0x333333 }); labelText.anchor.set(0, 0.5); labelText.x = -80; self.addChild(labelText); var valueText = new Text2('0/' + maxValue, { size: 18, fill: 0x333333 }); valueText.anchor.set(1, 0.5); valueText.x = 320; self.addChild(valueText); self.updateValue = function (value) { var percentage = Math.max(0, Math.min(maxValue, value)) / maxValue; tween(fill, { scaleX: percentage }, { duration: 300, easing: tween.easeOut }); valueText.setText(Math.floor(value) + '/' + maxValue); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xE8F5E8 }); /**** * Game Code ****/ // Game state management var gameState = 'menu'; // 'menu', 'game', 'pause' var gameData = storage.gameData || {}; // Language system var languages = { en: { feed: "Feed", play: "Play", sleep: "Sleep", hunger: "Hunger", happy: "Happy", energy: "Energy", evolutionLevel: "Evolution Level", score: "Score", time: "Time", newGame: "New Game", savedGames: "Saved Games", mainMenu: "Main Menu", digimonName: "Digimon Name", chooseEgg: "Choose Your Digi-Egg", money: "Money", shop: "Shop", training: "Training", attack: "Attack", health: "Health", speed: "Speed", defense: "Defense", weight: "Weight", locked: "Locked", buy: "Buy", train: "Train" }, es: { feed: "Alimentar", play: "Jugar", sleep: "Dormir", hunger: "Hambre", happy: "Felicidad", energy: "Energía", evolutionLevel: "Nivel de Evolución", score: "Puntuación", time: "Tiempo", newGame: "Nuevo Juego", savedGames: "Partidas Guardadas", mainMenu: "Menú Principal", digimonName: "Nombre del Digimon", chooseEgg: "Elige tu Digi-Huevo", money: "Dinero", shop: "Tienda", training: "Entrenamiento", attack: "Ataque", health: "Vida", speed: "Velocidad", defense: "Defensa", weight: "Peso", locked: "Bloqueado", buy: "Comprar", train: "Entrenar" } }; var currentLanguage = storage.currentLanguage || 'en'; function getText(key) { return languages[currentLanguage][key] || key; } // Game variables var mainMenu, pet, hungerBar, happinessBar, energyBar, evolutionText; var feedButton, playButton, sleepButton, shopButton, trainingButton; var shop, training; // Initialize money if not exists if (!storage.money) storage.money = 100; function updateAllTexts() { if (gameState === 'game') { // Update action buttons if (feedButton) feedButton.children[1].setText(getText('feed')); if (playButton) playButton.children[1].setText(getText('play')); if (sleepButton) sleepButton.children[1].setText(getText('sleep')); if (shopButton) shopButton.children[1].setText(getText('shop')); if (trainingButton) trainingButton.children[1].setText(getText('training')); // Update stat bar labels if (hungerBar) hungerBar.updateLabel(getText('hunger')); if (happinessBar) happinessBar.updateLabel(getText('happy')); if (energyBar) energyBar.updateLabel(getText('energy')); // Update evolution text if (evolutionText && pet) evolutionText.setText(getText('evolutionLevel') + ': ' + pet.evolutionLevel); } } function showMainMenu() { gameState = 'menu'; LK.playMusic('menuMusic'); game.removeChildren(); mainMenu = game.addChild(new MainMenu()); } function showEggSelection() { game.removeChildren(); var titleText = new Text2(getText('chooseEgg'), { size: 60, fill: 0x2196F3 }); titleText.anchor.set(0.5, 0.5); titleText.x = 1024; titleText.y = 300; game.addChild(titleText); // Create 6 eggs (3 unlocked, 3 locked) var eggs = []; for (var i = 0; i < 6; i++) { var isLocked = i >= 3 && (storage.money || 0) < 500 && (storage.completedMissions || 0) < 1; var egg = new DigiEgg(i, isLocked); egg.x = 400 + i % 3 * 400; egg.y = 600 + Math.floor(i / 3) * 300; egg.onSelect = function (eggType) { showDigimonNaming(eggType); }; game.addChild(egg); eggs.push(egg); } var backButton = new ActionButton(getText('mainMenu'), 0x9E9E9E); backButton.x = 200; backButton.y = 1200; backButton.onPress = function () { showMainMenu(); }; game.addChild(backButton); } function showSavedGames() { game.removeChildren(); var titleText = new Text2(getText('savedGames'), { size: 60, fill: 0x2196F3 }); titleText.anchor.set(0.5, 0.5); titleText.x = 1024; titleText.y = 400; game.addChild(titleText); // Check for saved games var savedGames = storage.savedGames || []; if (savedGames.length === 0) { var noSavesText = new Text2('No saved games yet', { size: 40, fill: 0x666666 }); noSavesText.anchor.set(0.5, 0.5); noSavesText.x = 1024; noSavesText.y = 600; game.addChild(noSavesText); } else { // Display saved games for (var i = 0; i < savedGames.length && i < 5; i++) { var saveData = savedGames[i]; var saveButton = new ActionButton(saveData.petName + ' (Lv.' + saveData.evolutionLevel + ')', 0x4CAF50); saveButton.x = 1024; saveButton.y = 500 + i * 100; saveButton.saveIndex = i; saveButton.onPress = function () { loadGame(this.saveIndex); }; game.addChild(saveButton); } } var backButton = new ActionButton(getText('mainMenu'), 0x9E9E9E); backButton.x = 1024; backButton.y = 1000; backButton.onPress = function () { showMainMenu(); }; game.addChild(backButton); } function saveGame() { var savedGames = storage.savedGames || []; var saveData = { petName: pet.name, evolutionLevel: pet.evolutionLevel, hunger: pet.hunger, happiness: pet.happiness, energy: pet.energy, attack: pet.attack, health: pet.health, speed: pet.speed, weight: pet.weight, eggType: pet.eggType, money: storage.money || 0, timestamp: Date.now() }; // Remove old save with same name if exists for (var i = savedGames.length - 1; i >= 0; i--) { if (savedGames[i].petName === pet.name) { savedGames.splice(i, 1); break; } } savedGames.push(saveData); // Keep only last 5 saves if (savedGames.length > 5) { savedGames = savedGames.slice(-5); } storage.savedGames = savedGames; } function loadGame(saveIndex) { var savedGames = storage.savedGames || []; if (saveIndex >= 0 && saveIndex < savedGames.length) { var saveData = savedGames[saveIndex]; // Load all saved data storage.petName = saveData.petName; storage.evolutionLevel = saveData.evolutionLevel; storage.hunger = saveData.hunger; storage.happiness = saveData.happiness; storage.energy = saveData.energy; storage.attack = saveData.attack; storage.health = saveData.health; storage.speed = saveData.speed; storage.weight = saveData.weight; storage.eggType = saveData.eggType; storage.money = saveData.money; startNewGame(); } } function showDigimonNaming(eggType) { game.removeChildren(); var titleText = new Text2(getText('digimonName'), { size: 60, fill: 0x2196F3 }); titleText.anchor.set(0.5, 0.5); titleText.x = 1024; titleText.y = 400; game.addChild(titleText); // Simple name input simulation with preset names var presetNames = ['Agumon', 'Gabumon', 'Patamon', 'Palmon', 'Gomamon', 'Biyomon']; var selectedName = presetNames[eggType] || 'Digimon'; var nameText = new Text2(selectedName, { size: 50, fill: 0x333333 }); nameText.anchor.set(0.5, 0.5); nameText.x = 1024; nameText.y = 600; game.addChild(nameText); // Name selection buttons for (var i = 0; i < presetNames.length; i++) { var nameButton = new ActionButton(presetNames[i], 0xFF9800); nameButton.x = 400 + i % 3 * 400; nameButton.y = 800 + Math.floor(i / 3) * 100; nameButton.nameValue = presetNames[i]; nameButton.onPress = function () { selectedName = this.nameValue; nameText.setText(selectedName); }; game.addChild(nameButton); } var confirmButton = new ActionButton('OK', 0x4CAF50); confirmButton.x = 1024; confirmButton.y = 1100; confirmButton.onPress = function () { storage.petName = selectedName; storage.eggType = eggType; startNewGame(); }; game.addChild(confirmButton); var backButton = new ActionButton(getText('mainMenu'), 0x9E9E9E); backButton.x = 1024; backButton.y = 1200; backButton.onPress = function () { showEggSelection(); }; game.addChild(backButton); } function startNewGame() { gameState = 'game'; game.removeChildren(); initializeGameplay(); } function initializeGameplay() { // Start game music LK.playMusic('Luna'); // Create pet pet = game.addChild(new DigitalPet()); pet.x = 1024; pet.y = 800; // UI Elements hungerBar = new StatBar(getText('hunger'), 0xFF5722); hungerBar.x = 400; hungerBar.y = 200; game.addChild(hungerBar); happinessBar = new StatBar(getText('happy'), 0xFFEB3B); happinessBar.x = 400; happinessBar.y = 280; game.addChild(happinessBar); energyBar = new StatBar(getText('energy'), 0x2196F3); energyBar.x = 400; energyBar.y = 360; game.addChild(energyBar); // Action Buttons feedButton = new ActionButton(getText('feed'), 0x4CAF50); feedButton.x = 200; feedButton.y = 1400; feedButton.onPress = function () { pet.hunger = Math.min(100, pet.hunger + 25); pet.happiness = Math.min(100, pet.happiness + 10); pet.weight = Math.min(100, (pet.weight || 50) + 2); LK.getSound('feed').play(); tween(pet, { scaleX: 1.2, scaleY: 1.2 }, { duration: 200, onFinish: function onFinish() { tween(pet, { scaleX: 1, scaleY: 1 }, { duration: 200 }); } }); }; game.addChild(feedButton); playButton = new ActionButton(getText('play'), 0xFF9800); playButton.x = 400; playButton.y = 1400; playButton.onPress = function () { if (pet.energy < 20) { LK.effects.flashObject(pet, 0xFF0000, 500); return; } var miniGame = new MiniGame(); miniGame.x = 1024; miniGame.y = 1200; game.addChild(miniGame); miniGame.onGameEnd = function (score) { game.removeChild(miniGame); storage.money = (storage.money || 0) + score; }; miniGame.startGame(); }; game.addChild(playButton); sleepButton = new ActionButton(getText('sleep'), 0x9C27B0); sleepButton.x = 600; sleepButton.y = 1400; sleepButton.onPress = function () { pet.energy = Math.min(100, pet.energy + 30); pet.hunger = Math.max(0, pet.hunger - 5); LK.getSound('sleep').play(); tween(pet, { alpha: 0.5 }, { duration: 500, onFinish: function onFinish() { tween(pet, { alpha: 1 }, { duration: 500 }); } }); }; game.addChild(sleepButton); shopButton = new ActionButton(getText('shop'), 0x795548); shopButton.x = 800; shopButton.y = 1400; shopButton.onPress = function () { LK.playMusic('shopMusic'); shop = game.addChild(new Shop()); shop.x = 1024; shop.y = 1366; gameState = 'pause'; }; game.addChild(shopButton); trainingButton = new ActionButton(getText('training'), 0xE65100); trainingButton.x = 1000; trainingButton.y = 1400; trainingButton.onPress = function () { LK.playMusic('trainingMusic'); training = game.addChild(new Training()); training.x = 1024; training.y = 1366; training.updateBars(); gameState = 'pause'; }; game.addChild(trainingButton); // Add save game button var saveButton = new ActionButton('Save', 0x607D8B); saveButton.x = 1200; saveButton.y = 1400; saveButton.onPress = function () { if (pet) { saveGame(); LK.effects.flashScreen(0x4CAF50, 500); } }; game.addChild(saveButton); // Evolution display evolutionText = new Text2(getText('evolutionLevel') + ': 0', { size: 40, fill: 0x333333 }); evolutionText.anchor.set(0.5, 0); evolutionText.x = 1024; evolutionText.y = 600; game.addChild(evolutionText); // Money display var moneyText = new Text2(getText('money') + ': ' + (storage.money || 0), { size: 30, fill: 0x388E3C }); moneyText.anchor.set(0, 0); moneyText.x = 100; moneyText.y = 100; LK.gui.topLeft.addChild(moneyText); updateAllTexts(); } // Language button var languageButton = new LanguageButton(); LK.gui.topRight.addChild(languageButton); languageButton.x = -50; languageButton.y = 50; // Start with main menu showMainMenu(); game.update = function () { if (gameState === 'game' && pet) { // Update stat bars hungerBar.updateValue(pet.hunger); happinessBar.updateValue(pet.happiness); energyBar.updateValue(pet.energy); // Update evolution display evolutionText.setText(getText('evolutionLevel') + ': ' + pet.evolutionLevel); // Update money display if (LK.gui.topLeft.children[0]) { LK.gui.topLeft.children[0].setText(getText('money') + ': ' + (storage.money || 0)); } // Warning effects for low stats if (pet.hunger < 20 && LK.ticks % 60 === 0) { LK.effects.flashObject(hungerBar, 0xFF0000, 300); } if (pet.happiness < 20 && LK.ticks % 60 === 0) { LK.effects.flashObject(happinessBar, 0xFF0000, 300); } if (pet.energy < 20 && LK.ticks % 60 === 0) { LK.effects.flashObject(energyBar, 0xFF0000, 300); } } };
===================================================================
--- original.js
+++ change.js
@@ -783,9 +783,9 @@
titleText.x = 1024;
titleText.y = 400;
game.addChild(titleText);
// Check for saved games
- var savedGames = storage.get('savedGames') || [];
+ var savedGames = storage.savedGames || [];
if (savedGames.length === 0) {
var noSavesText = new Text2('No saved games yet', {
size: 40,
fill: 0x666666
@@ -816,9 +816,9 @@
};
game.addChild(backButton);
}
function saveGame() {
- var savedGames = storage.get('savedGames') || [];
+ var savedGames = storage.savedGames || [];
var saveData = {
petName: pet.name,
evolutionLevel: pet.evolutionLevel,
hunger: pet.hunger,
@@ -843,12 +843,12 @@
// Keep only last 5 saves
if (savedGames.length > 5) {
savedGames = savedGames.slice(-5);
}
- storage.set('savedGames', savedGames);
+ storage.savedGames = savedGames;
}
function loadGame(saveIndex) {
- var savedGames = storage.get('savedGames') || [];
+ var savedGames = storage.savedGames || [];
if (saveIndex >= 0 && saveIndex < savedGames.length) {
var saveData = savedGames[saveIndex];
// Load all saved data
storage.petName = saveData.petName;
Bandera de idioma español. In-Game asset. 2d. High contrast. No shadows
Bandera de Idioma inglés curvada con sus primeras letras EN. In-Game asset. 2d. High contrast. No shadows
Planeta tierra con un libro. In-Game asset. 2d. High contrast. No shadows
Pelusa roja de ojos amarillos tierno. In-Game asset. 2d. High contrast. No shadows
Marco de menu con relleno sin ningun texto. In-Game asset. 2d. High contrast. No shadows
Fondo de ambiente digital con azul y verde. In-Game asset. 2d. High contrast. No shadows
Carne pequeña. In-Game asset. 2d. High contrast. No shadows
Carne Grande. In-Game asset. 2d. High contrast. No shadows
Sirloin. In-Game asset. 2d. High contrast. No shadows
Medicina. In-Game asset. 2d. High contrast. No shadows
Benda. In-Game asset. 2d. High contrast. No shadows
Agumon. In-Game asset. 2d. High contrast. No shadows
barra llena. In-Game asset. 2d. High contrast. No shadows
boton sin texto. In-Game asset. 2d. High contrast. No shadows
zzZZZ. In-Game asset. 2d. High contrast. No shadows
Greymon. In-Game asset. 2d. High contrast. No shadows
Wargreymon. In-Game asset. 2d. High contrast. No shadows
Metalgreymon. In-Game asset. 2d. High contrast. No shadows
Omegamon. In-Game asset. 2d. High contrast. No shadows
Cara Koromon feliz. In-Game asset. 2d. High contrast. No shadows
Botamon. In-Game asset. 2d. High contrast. No shadows
Angemon. In-Game asset. 2d. High contrast. No shadows
Angewomon. In-Game asset. 2d. High contrast. No shadows
Gabumon. In-Game asset. 2d. High contrast. No shadows
Garurumon. In-Game asset. 2d. High contrast. No shadows
Magnaangemon. In-Game asset. 2d. High contrast. No shadows
magnadramon. In-Game asset. 2d. High contrast. No shadows
Metalgarurumon. In-Game asset. 2d. High contrast. No shadows
Ophanimon blue armor complete body sensual. In-Game asset. 2d. High contrast. No shadows
Poyomon. In-Game asset. 2d. High contrast. No shadows
Patamon. In-Game asset. 2d. High contrast. No shadows
Punimon. In-Game asset. 2d. High contrast. No shadows
Seraphimon. In-Game asset. 2d. High contrast. No shadows
Tokomon. In-Game asset. 2d. High contrast. No shadows
Tsunomon. In-Game asset. 2d. High contrast. No shadows
Weregarurumon. In-Game asset. 2d. High contrast. No shadows
Digi huevo de botamon. In-Game asset. 2d. High contrast. No shadows
Digi huevo con el patron clasico de Punimon. In-Game asset. 2d. High contrast. No shadows
Digi huevo con el patron clasico de Puyomon. In-Game asset. 2d. High contrast. No shadows
Moneda ojo monstruo. In-Game asset. 2d. High contrast. No shadows
Labrys personaje de Persona 4 Arena con ropa de tendera.. In-Game asset. 2d. High contrast. No shadows
Mesa de tienda para poner un personaje detras. In-Game asset. 2d. High contrast. No shadows
Tecla gris. In-Game asset. 2d. High contrast. No shadows
Caca rosada. In-Game asset. 2d. High contrast. No shadows
Jabón. In-Game asset. 2d. High contrast. No shadows