User prompt
Agrega un botón en la tienda para volver al menú en la parte inferior izquierda
User prompt
Haz que en la partida haya un fondo y igual que en el menú, haz nuevos botones para las ofertas, no reutilizes los de jugar
User prompt
Cambia la posición del botón de la tienda a abajo del de ajustes y haz que el botón de ir al menú solo se pueda tocar en partida, y que esté en la parte inferior derecha de la partida
User prompt
Haz que en la tienda con las ofertas que compres adquieras aspectos para los sushis personalizables y luego poder equiparlos desde un nuevo botón del menú llamado taquilla! ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Agrega en el menú un botón más que sea la tienda del juego en la que haya ofertas que valgan monedas del juego, haz que puedan haber ofertas de 100 de 300 de 500 de 750 de 1000 de 1500 y de 2200 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Arregla el error de que no se puedan tocar unas bolas y agrega un botón en medio de la partida para volver al menu
User prompt
Haz que en menú haya un botón de ajustes para poner la dificultad fácil, medio o difícil, en fácil, los sushis caen lento, en medio caen normal y en difícil más rápido, haz que dependiendo del numero de sushis que cortes te den monedas del juego, que salgan las que has acumulado en el menú en la parte superior derecha ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Haz que cuando le dé a play empiezan a caer sushis de la parte de arriba y lo los tengo que cortar antes de que caigan
User prompt
Haz un menú de inicio del juego en el que haya un botón para jugar
User prompt
Sushi Catch
Initial prompt
Crea un juego en el que caigan sushis de la parte de arriba de la pantalla y haya que tocarlos antes de que toquen la linea roja de abajo
/****
* Plugins
****/
var storage = LK.import("@upit/storage.v1", {
coins: 0
});
/****
* Classes
****/
// Initialize assets for play button
var Sushi = Container.expand(function () {
var self = Container.call(this);
var sushiGraphics = self.attachAsset('sushi', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.caught = false;
self.lastY = self.y;
self.down = function (x, y, obj) {
if (!self.caught) {
self.caught = true;
LK.setScore(LK.getScore() + 1);
var coinsEarned = currentDifficulty === 'easy' ? 1 : currentDifficulty === 'medium' ? 2 : 3;
storage.coins = (storage.coins || 0) + coinsEarned;
coinsTxt.setText(storage.coins);
scoreTxt.setText(LK.getScore());
self.destroy();
}
};
self.update = function () {
self.lastY = self.y;
self.y += self.speed;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Initialize assets for play button
// Create danger line at bottom
var dangerLine = LK.getAsset('dangerLine', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 2500
});
game.addChild(dangerLine);
// Score display
var scoreTxt = new Text2('0', {
size: 150,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Coins display
var coinsTxt = new Text2('Coins: ' + storage.coins, {
size: 100,
fill: 0xFFD700
});
coinsTxt.anchor.set(1, 0);
LK.gui.topRight.addChild(coinsTxt);
// Game variables
var sushiArray = [];
var sushiSpawnTimer = null;
// Game update loop
game.update = function () {
if (gameState === 'playing') {
// Spawn sushi periodically
if (LK.ticks % sushiSpawnRate === 0) {
var newSushi = new Sushi();
newSushi.x = Math.random() * 1800 + 100;
newSushi.y = -100;
newSushi.lastY = newSushi.y;
newSushi.speed = currentDifficulty === 'easy' ? 3 : currentDifficulty === 'medium' ? 5 : 8;
sushiArray.push(newSushi);
game.addChild(newSushi);
}
// Update and check sushi
for (var i = sushiArray.length - 1; i >= 0; i--) {
var sushi = sushiArray[i];
if (sushi.lastY <= 2500 && sushi.y > 2500) {
LK.effects.flashScreen(0xff0000, 500);
LK.showGameOver();
}
}
}
};
// Game state
var gameState = 'menu'; // 'menu', 'playing', or 'settings'
var currentDifficulty = 'medium'; // 'easy', 'medium', or 'hard'
var sushiSpawnRate = 60; // ticks between spawns
// Create main menu UI
var menuContainer = new Container();
game.addChild(menuContainer);
// Menu title
var titleText = new Text2('Sushi Catch', {
size: 200,
fill: 0xFF6B6B
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 1024;
titleText.y = 800;
menuContainer.addChild(titleText);
// Play button
var playButtonBg = LK.getAsset('playButtonBg', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1400
});
menuContainer.addChild(playButtonBg);
var playButtonText = new Text2('PLAY', {
size: 100,
fill: 0xFFFFFF
});
playButtonText.anchor.set(0.5, 0.5);
playButtonText.x = 1024;
playButtonText.y = 1400;
menuContainer.addChild(playButtonText);
// Make play button interactive
playButtonBg.interactive = true;
playButtonBg.down = function (x, y, obj) {
gameState = 'playing';
menuContainer.visible = false;
};
// Settings button
var settingsButtonBg = LK.getAsset('settingsButtonBg', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1650
});
menuContainer.addChild(settingsButtonBg);
var settingsButtonText = new Text2('⚙️', {
size: 80,
fill: 0xFFFFFF
});
settingsButtonText.anchor.set(0.5, 0.5);
settingsButtonText.x = 1024;
settingsButtonText.y = 1650;
menuContainer.addChild(settingsButtonText);
settingsButtonBg.interactive = true;
settingsButtonBg.down = function (x, y, obj) {
gameState = 'settings';
menuContainer.visible = false;
settingsMenuContainer.visible = true;
};
// Settings menu container
var settingsMenuContainer = new Container();
game.addChild(settingsMenuContainer);
settingsMenuContainer.visible = false;
var settingsTitle = new Text2('Difficulty', {
size: 180,
fill: 0xFF6B6B
});
settingsTitle.anchor.set(0.5, 0.5);
settingsTitle.x = 1024;
settingsTitle.y = 600;
settingsMenuContainer.addChild(settingsTitle);
// Easy button
var easyButtonBg = LK.getAsset('playButtonBg', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1100
});
settingsMenuContainer.addChild(easyButtonBg);
var easyButtonText = new Text2('EASY', {
size: 80,
fill: 0xFFFFFF
});
easyButtonText.anchor.set(0.5, 0.5);
easyButtonText.x = 1024;
easyButtonText.y = 1100;
settingsMenuContainer.addChild(easyButtonText);
easyButtonBg.interactive = true;
easyButtonBg.down = function (x, y, obj) {
currentDifficulty = 'easy';
sushiSpawnRate = 90;
returnToMenu();
};
// Medium button
var mediumButtonBg = LK.getAsset('playButtonBg', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1350
});
settingsMenuContainer.addChild(mediumButtonBg);
var mediumButtonText = new Text2('MEDIUM', {
size: 80,
fill: 0xFFFFFF
});
mediumButtonText.anchor.set(0.5, 0.5);
mediumButtonText.x = 1024;
mediumButtonText.y = 1350;
settingsMenuContainer.addChild(mediumButtonText);
mediumButtonBg.interactive = true;
mediumButtonBg.down = function (x, y, obj) {
currentDifficulty = 'medium';
sushiSpawnRate = 60;
returnToMenu();
};
// Hard button
var hardButtonBg = LK.getAsset('playButtonBg', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1600
});
settingsMenuContainer.addChild(hardButtonBg);
var hardButtonText = new Text2('HARD', {
size: 80,
fill: 0xFFFFFF
});
hardButtonText.anchor.set(0.5, 0.5);
hardButtonText.x = 1024;
hardButtonText.y = 1600;
settingsMenuContainer.addChild(hardButtonText);
hardButtonBg.interactive = true;
hardButtonBg.down = function (x, y, obj) {
currentDifficulty = 'hard';
sushiSpawnRate = 40;
returnToMenu();
};
// Back button
var backButtonBg = LK.getAsset('playButtonBg', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1900
});
settingsMenuContainer.addChild(backButtonBg);
var backButtonText = new Text2('BACK', {
size: 80,
fill: 0xFFFFFF
});
backButtonText.anchor.set(0.5, 0.5);
backButtonText.x = 1024;
backButtonText.y = 1900;
settingsMenuContainer.addChild(backButtonText);
backButtonBg.interactive = true;
backButtonBg.down = function (x, y, obj) {
returnToMenu();
};
function returnToMenu() {
gameState = 'menu';
settingsMenuContainer.visible = false;
menuContainer.visible = true;
} ===================================================================
--- original.js
+++ change.js
@@ -1,5 +1,12 @@
/****
+* Plugins
+****/
+var storage = LK.import("@upit/storage.v1", {
+ coins: 0
+});
+
+/****
* Classes
****/
// Initialize assets for play button
var Sushi = Container.expand(function () {
@@ -14,8 +21,11 @@
self.down = function (x, y, obj) {
if (!self.caught) {
self.caught = true;
LK.setScore(LK.getScore() + 1);
+ var coinsEarned = currentDifficulty === 'easy' ? 1 : currentDifficulty === 'medium' ? 2 : 3;
+ storage.coins = (storage.coins || 0) + coinsEarned;
+ coinsTxt.setText(storage.coins);
scoreTxt.setText(LK.getScore());
self.destroy();
}
};
@@ -51,20 +61,28 @@
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
+// Coins display
+var coinsTxt = new Text2('Coins: ' + storage.coins, {
+ size: 100,
+ fill: 0xFFD700
+});
+coinsTxt.anchor.set(1, 0);
+LK.gui.topRight.addChild(coinsTxt);
// Game variables
var sushiArray = [];
var sushiSpawnTimer = null;
// Game update loop
game.update = function () {
if (gameState === 'playing') {
// Spawn sushi periodically
- if (LK.ticks % 60 === 0) {
+ if (LK.ticks % sushiSpawnRate === 0) {
var newSushi = new Sushi();
newSushi.x = Math.random() * 1800 + 100;
newSushi.y = -100;
newSushi.lastY = newSushi.y;
+ newSushi.speed = currentDifficulty === 'easy' ? 3 : currentDifficulty === 'medium' ? 5 : 8;
sushiArray.push(newSushi);
game.addChild(newSushi);
}
// Update and check sushi
@@ -77,9 +95,11 @@
}
}
};
// Game state
-var gameState = 'menu'; // 'menu' or 'playing'
+var gameState = 'menu'; // 'menu', 'playing', or 'settings'
+var currentDifficulty = 'medium'; // 'easy', 'medium', or 'hard'
+var sushiSpawnRate = 60; // ticks between spawns
// Create main menu UI
var menuContainer = new Container();
game.addChild(menuContainer);
// Menu title
@@ -111,5 +131,130 @@
playButtonBg.interactive = true;
playButtonBg.down = function (x, y, obj) {
gameState = 'playing';
menuContainer.visible = false;
-};
\ No newline at end of file
+};
+// Settings button
+var settingsButtonBg = LK.getAsset('settingsButtonBg', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1024,
+ y: 1650
+});
+menuContainer.addChild(settingsButtonBg);
+var settingsButtonText = new Text2('⚙️', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+settingsButtonText.anchor.set(0.5, 0.5);
+settingsButtonText.x = 1024;
+settingsButtonText.y = 1650;
+menuContainer.addChild(settingsButtonText);
+settingsButtonBg.interactive = true;
+settingsButtonBg.down = function (x, y, obj) {
+ gameState = 'settings';
+ menuContainer.visible = false;
+ settingsMenuContainer.visible = true;
+};
+// Settings menu container
+var settingsMenuContainer = new Container();
+game.addChild(settingsMenuContainer);
+settingsMenuContainer.visible = false;
+var settingsTitle = new Text2('Difficulty', {
+ size: 180,
+ fill: 0xFF6B6B
+});
+settingsTitle.anchor.set(0.5, 0.5);
+settingsTitle.x = 1024;
+settingsTitle.y = 600;
+settingsMenuContainer.addChild(settingsTitle);
+// Easy button
+var easyButtonBg = LK.getAsset('playButtonBg', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1024,
+ y: 1100
+});
+settingsMenuContainer.addChild(easyButtonBg);
+var easyButtonText = new Text2('EASY', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+easyButtonText.anchor.set(0.5, 0.5);
+easyButtonText.x = 1024;
+easyButtonText.y = 1100;
+settingsMenuContainer.addChild(easyButtonText);
+easyButtonBg.interactive = true;
+easyButtonBg.down = function (x, y, obj) {
+ currentDifficulty = 'easy';
+ sushiSpawnRate = 90;
+ returnToMenu();
+};
+// Medium button
+var mediumButtonBg = LK.getAsset('playButtonBg', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1024,
+ y: 1350
+});
+settingsMenuContainer.addChild(mediumButtonBg);
+var mediumButtonText = new Text2('MEDIUM', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+mediumButtonText.anchor.set(0.5, 0.5);
+mediumButtonText.x = 1024;
+mediumButtonText.y = 1350;
+settingsMenuContainer.addChild(mediumButtonText);
+mediumButtonBg.interactive = true;
+mediumButtonBg.down = function (x, y, obj) {
+ currentDifficulty = 'medium';
+ sushiSpawnRate = 60;
+ returnToMenu();
+};
+// Hard button
+var hardButtonBg = LK.getAsset('playButtonBg', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1024,
+ y: 1600
+});
+settingsMenuContainer.addChild(hardButtonBg);
+var hardButtonText = new Text2('HARD', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+hardButtonText.anchor.set(0.5, 0.5);
+hardButtonText.x = 1024;
+hardButtonText.y = 1600;
+settingsMenuContainer.addChild(hardButtonText);
+hardButtonBg.interactive = true;
+hardButtonBg.down = function (x, y, obj) {
+ currentDifficulty = 'hard';
+ sushiSpawnRate = 40;
+ returnToMenu();
+};
+// Back button
+var backButtonBg = LK.getAsset('playButtonBg', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1024,
+ y: 1900
+});
+settingsMenuContainer.addChild(backButtonBg);
+var backButtonText = new Text2('BACK', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+backButtonText.anchor.set(0.5, 0.5);
+backButtonText.x = 1024;
+backButtonText.y = 1900;
+settingsMenuContainer.addChild(backButtonText);
+backButtonBg.interactive = true;
+backButtonBg.down = function (x, y, obj) {
+ returnToMenu();
+};
+function returnToMenu() {
+ gameState = 'menu';
+ settingsMenuContainer.visible = false;
+ menuContainer.visible = true;
+}
\ No newline at end of file
Un sushi con cara traviesa. In-Game asset. 2d. High contrast. No shadows
Un botón de jugar de color naranja sushi. In-Game asset. 2d. High contrast. No shadows
Un engranaje de ajustes naranja muy cute. In-Game asset. 2d. High contrast. No shadows
Sushi congelado con cara cute. In-Game asset. 2d. High contrast. No shadows
Sushi con apariencia de santa Claus/papa noel. In-Game asset. 2d. High contrast. No shadows
Un sushi con cara traviesa y con aspecto de elfo navideño. In-Game asset. 2d. High contrast. No shadows
Letrero rectangular pequeño que diga "caza de sushis". In-Game asset. 2d. High contrast. No shadows
Botón rectangular naranja color sushi. In-Game asset. 2d. High contrast. No shadows
Genera una línea horizontal de fuego con detalles ígneos!. In-Game asset. 2d. High contrast. No shadows
Genera una imagen de un sushi con cara de calavera, que sea un botón circular y que se vea muy epico. In-Game asset. 2d. High contrast. No shadows
Un botón rectangular azul. In-Game asset. 2d. High contrast. No shadows