User prompt
There is a very small chance that colorful fruits will appear and the price will increase 3 times. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
It's too big now, shrink a little
User prompt
Add animation to "!" signs so they grow and shrink to attract more attention and make the "!" sign a little bigger ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
make the "!" sign on the plants a little bigger and Now when we plant the plants, let them be small and grow slowly, then collect them when they grow. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Enlarge seed shop screen and move the "seed" and "sell" buttons down a bit
User prompt
Move the "sell" and "seed" buttons a little more to the right and make them a little bigger.
User prompt
Move the "sell" and "seed" keys a little to the right
User prompt
Put the "sell" and "seed" keys next to the $ counter
User prompt
Make the "!" sign bigger
Code edit (1 edits merged)
Please save this source code
User prompt
Garden Harvest Tycoon
Initial prompt
Make a game like Banan Grow a Garden There should be 2 buttons, one with "sell" and if we pressh "seed" we sell all the plants. if we press "seed" A big seed shop will appear on the screen and there will be 5 seeds. 1) carrot price is 10$ 2) strawberry price 50$ 3) banana price 80$ 4) Coconut price is 160$ 5) dragon fruit $250 And add $ counter to the game When we start the game we have 2 carrots When you click on them, they go to our inventory and we sell them. The selling prices are 1)carrots $10 2)Strawberries $20 3)banana $50 4)Coconut $110 5)dragon fruit $200. and a brown dirt area to add them and when we plant a fruit, we wait for it to grow a little When it grows up, it will have "!" on it and we can buy and sell it.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Button = Container.expand(function (text, onClick) { var self = Container.call(this); var buttonBg = self.attachAsset('button', { anchorX: 0.5, anchorY: 0.5 }); var buttonText = new Text2(text, { size: 30, fill: 0xFFFFFF }); buttonText.anchor.set(0.5, 0.5); self.addChild(buttonText); self.down = function () { if (onClick) onClick(); }; return self; }); var PlantSpot = Container.expand(function (x, y) { var self = Container.call(this); self.x = x; self.y = y; self.planted = false; self.plantType = null; self.plantTime = 0; self.grown = false; var dirtGraphics = self.attachAsset('dirt', { anchorX: 0.5, anchorY: 0.5 }); var plantGraphics = null; var exclamationText = null; self.plantSeed = function (seedType) { if (self.planted) return false; self.planted = true; self.plantType = seedType; self.plantTime = LK.ticks; self.grown = false; self.isColorful = false; // 5% chance for colorful fruit (3x price) if (Math.random() < 0.05) { self.isColorful = true; self.plantType = 'colorful_' + seedType; } plantGraphics = self.attachAsset(self.plantType, { anchorX: 0.5, anchorY: 0.5, alpha: 0.5, scaleX: 0.3, scaleY: 0.3 }); // Animate plant growth over 5 seconds tween(plantGraphics, { scaleX: 1, scaleY: 1 }, { duration: 5000, easing: tween.easeOut }); // Add rainbow tint animation for colorful fruits if (self.isColorful) { var colorfulAnimation = function colorfulAnimation() { var colors = [0xff0000, 0x00ff00, 0x0000ff, 0xffff00, 0xff00ff, 0x00ffff]; var currentColor = 0; var _animateColor = function animateColor() { tween(plantGraphics, { tint: colors[currentColor] }, { duration: 800, easing: tween.easeInOut, onFinish: function onFinish() { currentColor = (currentColor + 1) % colors.length; _animateColor(); } }); }; _animateColor(); }; // Start colorful animation after growth completes setTimeout(colorfulAnimation, 5000); } LK.getSound('plant').play(); return true; }; self.harvest = function () { if (!self.grown) return null; var harvestedType = self.plantType; var isColorfulHarvest = self.isColorful; if (plantGraphics) { plantGraphics.destroy(); plantGraphics = null; } if (exclamationText) { exclamationText.destroy(); exclamationText = null; } self.planted = false; self.plantType = null; self.plantTime = 0; self.grown = false; self.isColorful = false; LK.getSound('harvest').play(); return { type: harvestedType, colorful: isColorfulHarvest }; }; self.update = function () { if (self.planted && !self.grown) { if (LK.ticks - self.plantTime > 300) { // Add pulsing animation to the exclamation mark var _pulseExclamation = function pulseExclamation() { tween(exclamationText, { scaleX: 1.3, scaleY: 1.3 }, { duration: 500, easing: tween.easeInOut, onFinish: function onFinish() { tween(exclamationText, { scaleX: 1.0, scaleY: 1.0 }, { duration: 500, easing: tween.easeInOut, onFinish: _pulseExclamation }); } }); }; // 5 seconds at 60fps self.grown = true; if (plantGraphics) { plantGraphics.alpha = 1.0; } exclamationText = new Text2('!', { size: 100, fill: 0xFF0000 }); exclamationText.anchor.set(0.5, 0.5); exclamationText.x = 0; exclamationText.y = -60; self.addChild(exclamationText); _pulseExclamation(); } } }; self.down = function () { if (self.grown) { var harvested = self.harvest(); if (harvested) { var harvestType = harvested.type; if (harvested.colorful) { // Store colorful fruits separately for 3x price var baseType = harvestType.replace('colorful_', ''); inventory['colorful_' + baseType] = (inventory['colorful_' + baseType] || 0) + 1; } else { inventory[harvestType] = (inventory[harvestType] || 0) + 1; } updateInventoryDisplay(); } } else if (!self.planted && selectedSeed && money >= seedPrices[selectedSeed]) { if (self.plantSeed(selectedSeed)) { money -= seedPrices[selectedSeed]; updateMoneyDisplay(); selectedSeed = null; seedShop.visible = false; } } }; return self; }); var SeedShop = Container.expand(function () { var self = Container.call(this); var background = self.attachAsset('seedShopBg', { anchorX: 0.5, anchorY: 0.5 }); var titleText = new Text2('SEED SHOP', { size: 60, fill: 0x000000 }); titleText.anchor.set(0.5, 0.5); titleText.y = -600; self.addChild(titleText); var seedTypes = ['carrot', 'strawberry', 'banana', 'coconut', 'dragonfruit']; var seedNames = ['Carrot', 'Strawberry', 'Banana', 'Coconut', 'Dragon Fruit']; for (var i = 0; i < seedTypes.length; i++) { var seedButton = new Container(); seedButton.x = 0; seedButton.y = -400 + i * 150; var seedIcon = LK.getAsset(seedTypes[i], { anchorX: 0.5, anchorY: 0.5, scaleX: 0.8, scaleY: 0.8 }); seedIcon.x = -300; seedButton.addChild(seedIcon); var nameText = new Text2(seedNames[i], { size: 40, fill: 0x000000 }); nameText.anchor.set(0, 0.5); nameText.x = -200; seedButton.addChild(nameText); var priceText = new Text2('$' + seedPrices[seedTypes[i]], { size: 40, fill: 0x006400 }); priceText.anchor.set(1, 0.5); priceText.x = 300; seedButton.addChild(priceText); seedButton.seedType = seedTypes[i]; seedButton.down = function () { if (money >= seedPrices[this.seedType]) { selectedSeed = this.seedType; self.visible = false; } }; self.addChild(seedButton); } var closeButton = new Button('CLOSE', function () { self.visible = false; }); closeButton.y = 500; self.addChild(closeButton); return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ var money = 0; var inventory = {}; var selectedSeed = null; var seedPrices = { carrot: 10, strawberry: 50, banana: 80, coconut: 160, dragonfruit: 250 }; var sellPrices = { carrot: 10, strawberry: 20, banana: 50, coconut: 110, dragonfruit: 200, colorful_carrot: 30, colorful_strawberry: 60, colorful_banana: 150, colorful_coconut: 330, colorful_dragonfruit: 600 }; // Create plant spots in a grid var plantSpots = []; var gridCols = 8; var gridRows = 10; var startX = 300; var startY = 400; var spacing = 220; for (var row = 0; row < gridRows; row++) { for (var col = 0; col < gridCols; col++) { var spot = new PlantSpot(startX + col * spacing, startY + row * spacing); plantSpots.push(spot); game.addChild(spot); } } // Plant initial carrots plantSpots[0].plantSeed('carrot'); plantSpots[1].plantSeed('carrot'); // UI Elements var moneyText = new Text2('Money: $0', { size: 50, fill: 0x000000 }); moneyText.anchor.set(0, 0); moneyText.x = 150; moneyText.y = 50; LK.gui.topLeft.addChild(moneyText); var inventoryText = new Text2('Inventory: Empty', { size: 30, fill: 0x000000 }); inventoryText.anchor.set(0, 0); inventoryText.x = 150; inventoryText.y = 120; LK.gui.topLeft.addChild(inventoryText); var sellButton = new Button('SELL ALL', function () { var totalSale = 0; for (var itemType in inventory) { if (inventory[itemType] > 0) { totalSale += inventory[itemType] * sellPrices[itemType]; inventory[itemType] = 0; } } if (totalSale > 0) { money += totalSale; updateMoneyDisplay(); updateInventoryDisplay(); LK.getSound('sell').play(); } }); sellButton.x = 600; sellButton.y = 100; sellButton.scaleX = 1.3; sellButton.scaleY = 1.3; LK.gui.topLeft.addChild(sellButton); var seedButton = new Button('SEEDS', function () { seedShop.visible = true; }); seedButton.x = 900; seedButton.y = 100; seedButton.scaleX = 1.3; seedButton.scaleY = 1.3; LK.gui.topLeft.addChild(seedButton); var seedShop = new SeedShop(); seedShop.x = 1024; seedShop.y = 1366; seedShop.visible = false; game.addChild(seedShop); function updateMoneyDisplay() { moneyText.setText('Money: $' + money); } function updateInventoryDisplay() { var inventoryStr = 'Inventory: '; var hasItems = false; for (var itemType in inventory) { if (inventory[itemType] > 0) { if (hasItems) inventoryStr += ', '; inventoryStr += itemType + ' x' + inventory[itemType]; hasItems = true; } } if (!hasItems) { inventoryStr += 'Empty'; } inventoryText.setText(inventoryStr); } game.update = function () { // Plant spots update automatically through their update methods };
===================================================================
--- original.js
+++ change.js
@@ -42,9 +42,15 @@
self.planted = true;
self.plantType = seedType;
self.plantTime = LK.ticks;
self.grown = false;
- plantGraphics = self.attachAsset(seedType, {
+ self.isColorful = false;
+ // 5% chance for colorful fruit (3x price)
+ if (Math.random() < 0.05) {
+ self.isColorful = true;
+ self.plantType = 'colorful_' + seedType;
+ }
+ plantGraphics = self.attachAsset(self.plantType, {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0.5,
scaleX: 0.3,
@@ -57,14 +63,37 @@
}, {
duration: 5000,
easing: tween.easeOut
});
+ // Add rainbow tint animation for colorful fruits
+ if (self.isColorful) {
+ var colorfulAnimation = function colorfulAnimation() {
+ var colors = [0xff0000, 0x00ff00, 0x0000ff, 0xffff00, 0xff00ff, 0x00ffff];
+ var currentColor = 0;
+ var _animateColor = function animateColor() {
+ tween(plantGraphics, {
+ tint: colors[currentColor]
+ }, {
+ duration: 800,
+ easing: tween.easeInOut,
+ onFinish: function onFinish() {
+ currentColor = (currentColor + 1) % colors.length;
+ _animateColor();
+ }
+ });
+ };
+ _animateColor();
+ };
+ // Start colorful animation after growth completes
+ setTimeout(colorfulAnimation, 5000);
+ }
LK.getSound('plant').play();
return true;
};
self.harvest = function () {
if (!self.grown) return null;
var harvestedType = self.plantType;
+ var isColorfulHarvest = self.isColorful;
if (plantGraphics) {
plantGraphics.destroy();
plantGraphics = null;
}
@@ -75,10 +104,14 @@
self.planted = false;
self.plantType = null;
self.plantTime = 0;
self.grown = false;
+ self.isColorful = false;
LK.getSound('harvest').play();
- return harvestedType;
+ return {
+ type: harvestedType,
+ colorful: isColorfulHarvest
+ };
};
self.update = function () {
if (self.planted && !self.grown) {
if (LK.ticks - self.plantTime > 300) {
@@ -122,9 +155,16 @@
self.down = function () {
if (self.grown) {
var harvested = self.harvest();
if (harvested) {
- inventory[harvested] = (inventory[harvested] || 0) + 1;
+ var harvestType = harvested.type;
+ if (harvested.colorful) {
+ // Store colorful fruits separately for 3x price
+ var baseType = harvestType.replace('colorful_', '');
+ inventory['colorful_' + baseType] = (inventory['colorful_' + baseType] || 0) + 1;
+ } else {
+ inventory[harvestType] = (inventory[harvestType] || 0) + 1;
+ }
updateInventoryDisplay();
}
} else if (!self.planted && selectedSeed && money >= seedPrices[selectedSeed]) {
if (self.plantSeed(selectedSeed)) {
@@ -219,9 +259,14 @@
carrot: 10,
strawberry: 20,
banana: 50,
coconut: 110,
- dragonfruit: 200
+ dragonfruit: 200,
+ colorful_carrot: 30,
+ colorful_strawberry: 60,
+ colorful_banana: 150,
+ colorful_coconut: 330,
+ colorful_dragonfruit: 600
};
// Create plant spots in a grid
var plantSpots = [];
var gridCols = 8;
8 bit dragon fruit tree. In-Game asset. 2d. High contrast. No shadows
8 bit carrot. In-Game asset. 2d. High contrast. No shadows
background grass 8 bit. In-Game asset. 2d. High contrast. No shadows
8 bit Straw berry. In-Game asset. 2d. High contrast. No shadows
8 bit banana tree. In-Game asset. 2d. High contrast. No shadows
8 bit coconut tree. In-Game asset. 2d. High contrast. No shadows
Neon
Neon
Neon
Neon
Neon
Stone 8 bit. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
8 bit fish. In-Game asset. 2d. High contrast. No shadows
Neon
8 bit orange. In-Game asset. 2d. High contrast. No shadows
Neon
Apple tree 8 bit. In-Game asset. 2d. High contrast. No shadows
Choco
Choco but all parts of the carrot are visible and only the carrot is painted brown
Neon
different color