User prompt
Start the game with the shop menu closed
User prompt
Make the upgrade shop button a square
User prompt
Move it to the left
User prompt
Move the shop I can only see to fifty
User prompt
Make a button where I can pull up the upgrade menu and when I press the upgrade menu the upgrades dissapear and if I press the upgrade shop button again the shop options reappear
User prompt
Make it a clicker game where I can buy upgrades for my clicks to equal more and the upgrades stack you can buy x1 x10 x50 x100x1000 make these climb up in price as the list goes make 1 cost a little 10 cost way more (20)
User prompt
Do it
User prompt
Make this game a clicker where you can buy upgrades
User prompt
Make the dog teleport to the middle after the animation
User prompt
If i spam it the dog slowly moves to the left fix this
User prompt
Make the button feel more imerseve
User prompt
Resize the square
User prompt
Make the person one single square
User prompt
Do it
User prompt
Make a person standin and recording
Code edit (1 edits merged)
Please save this source code
User prompt
Bro I Just Farted on My Dog
Initial prompt
A game called bro I just farted on my dog where the player has a fart button and when farted on the dogs face changes and then goes back and you can do this forever
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Dog face class var DogFace = Container.expand(function () { var self = Container.call(this); // Normal face var normalFace = self.attachAsset('dog_normal', { anchorX: 0.5, anchorY: 0.5 }); // React face var reactFace = self.attachAsset('dog_react', { anchorX: 0.5, anchorY: 0.5, alpha: 0 }); // Show normal face self.showNormal = function () { normalFace.alpha = 1; reactFace.alpha = 0; }; // Show react face self.showReact = function () { normalFace.alpha = 0; reactFace.alpha = 1; }; // Flash react face for a short time, then return to normal self.react = function () { self.showReact(); // Store original X to restore after animation var originalX = self.x; // Animate a little shake for fun tween(self, { x: originalX + 30 }, { duration: 80, easing: tween.cubicOut, onFinish: function onFinish() { tween(self, { x: originalX - 30 }, { duration: 120, easing: tween.cubicInOut, onFinish: function onFinish() { tween(self, { x: originalX }, { duration: 80, easing: tween.cubicIn, onFinish: function onFinish() { // Return to normal face after 500ms LK.setTimeout(function () { self.showNormal(); // Always teleport dog to center after animation, even if spammed self.x = 2048 / 2; }, 500); } }); } }); } }); }; self.showNormal(); return self; }); // Fart button class var FartButton = Container.expand(function () { var self = Container.call(this); // Button shape var btn = self.attachAsset('fart_btn', { anchorX: 0.5, anchorY: 0.5 }); // "FART" text var fartTxt = new Text2('FART', { size: 120, fill: 0x7A5C00 }); fartTxt.anchor.set(0.5, 0.5); fartTxt.x = 0; fartTxt.y = 0; self.addChild(fartTxt); // Fart cloud effect (hidden by default) var fartCloud = self.attachAsset('centerCircle', { anchorX: 0.5, anchorY: 1, scaleX: 1.2, scaleY: 0.7, x: 0, y: -110, alpha: 0, tint: 0xeeeecc }); fartCloud.width = btn.width * 0.7; fartCloud.height = btn.height * 0.7; // Show fart cloud with animation self.showFartCloud = function () { fartCloud.alpha = 0.85; fartCloud.scaleX = 1.2; fartCloud.scaleY = 0.7; fartCloud.y = -110; tween(fartCloud, { alpha: 0, y: fartCloud.y - 80, scaleX: 1.5, scaleY: 1.1 }, { duration: 420, easing: tween.cubicOut }); }; // Simple press animation self.animatePress = function () { tween(self, { scaleX: 0.92, scaleY: 0.92 }, { duration: 60, easing: tween.cubicIn, onFinish: function onFinish() { tween(self, { scaleX: 1, scaleY: 1 }, { duration: 80, easing: tween.cubicOut }); } }); self.showFartCloud(); }; return self; }); // Person standing and recording class var PersonRecording = Container.expand(function () { var self = Container.call(this); // Single square for the person var personSquare = self.attachAsset('person_leg', { anchorX: 0.5, anchorY: 0.5 }); return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xE3F6FF }); /**** * Game Code ****/ // Person recording assets // Center dog face // Cartoon dog face (normal) // Cartoon dog face (shocked/disgusted) // Big fart button // Fart sound var dogFace = new DogFace(); dogFace.x = 2048 / 2; dogFace.y = 1100; game.addChild(dogFace); // Add person standing and recording at the left side var person = new PersonRecording(); person.x = 400; person.y = 1200; game.addChild(person); // Place fart button below dog face var fartBtn = new FartButton(); fartBtn.x = 2048 / 2; fartBtn.y = 2000; game.addChild(fartBtn); // Prevent accidental tap in top left (menu area): nothing is placed there // Instructions text (top center, GUI) var instrTxt = new Text2('Tap the FART button!', { size: 90, fill: 0x2D2D2D }); instrTxt.anchor.set(0.5, 0); LK.gui.top.addChild(instrTxt); // --- Clicker Game State --- var fartCount = 0; var fartPerClick = 1; // Upgrade definitions: [amount, base cost, cost multiplier] var upgrades = [{ amount: 1, base: 10, mult: 1.15, label: "x1" }, { amount: 10, base: 20, mult: 1.18, label: "x10" }, { amount: 50, base: 120, mult: 1.22, label: "x50" }, { amount: 100, base: 600, mult: 1.28, label: "x100" }, { amount: 1000, base: 4000, mult: 1.35, label: "x1000" }]; // Track how many times each upgrade was bought var upgradesBought = [0, 0, 0, 0, 0]; // --- UI Elements --- var fartCountTxt = new Text2('0', { size: 120, fill: 0x222222 }); fartCountTxt.anchor.set(0.5, 0); fartCountTxt.x = 2048 / 2; fartCountTxt.y = 200; LK.gui.top.addChild(fartCountTxt); var fartPerClickTxt = new Text2('Farts/click: 1', { size: 60, fill: 0x444444 }); fartPerClickTxt.anchor.set(0.5, 0); fartPerClickTxt.x = 2048 / 2; fartPerClickTxt.y = 340; LK.gui.top.addChild(fartPerClickTxt); // --- Upgrades UI --- var upgradeButtons = []; var upgradeTxts = []; var upgradeCostTxts = []; var upgradeYStart = 550; var upgradeSpacing = 120; // Shop toggle state var shopVisible = true; // Create upgrade shop toggle button var shopBtn = LK.getAsset('fart_btn', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.45, scaleY: 0.45, x: 400, y: upgradeYStart - 120 }); shopBtn.interactive = true; var shopBtnTxt = new Text2('Upgrade Shop', { size: 70, fill: 0x7A5C00 }); shopBtnTxt.anchor.set(0.5, 0.5); shopBtnTxt.x = 0; shopBtnTxt.y = 0; shopBtn.addChild(shopBtnTxt); game.addChild(shopBtn); // Create upgrade buttons (initially visible) for (var i = 0; i < upgrades.length; ++i) { // Button var btn = LK.getAsset('fart_btn', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.5, scaleY: 0.5, x: 400, y: upgradeYStart + i * upgradeSpacing }); btn.interactive = true; // Label var txt = new Text2('Upgrade ' + upgrades[i].label, { size: 60, fill: 0x7A5C00 }); txt.anchor.set(0.5, 0.5); txt.x = 0; txt.y = -20; btn.addChild(txt); // Cost var costTxt = new Text2('', { size: 44, fill: 0x444444 }); costTxt.anchor.set(0.5, 0.5); costTxt.x = 0; costTxt.y = 50; btn.addChild(costTxt); // Add to game game.addChild(btn); upgradeButtons.push(btn); upgradeTxts.push(txt); upgradeCostTxts.push(costTxt); } // Shop toggle logic shopBtn.down = function (x, y, obj) { shopVisible = !shopVisible; for (var i = 0; i < upgradeButtons.length; ++i) { upgradeButtons[i].visible = shopVisible; } // Feedback: flash the shop button LK.effects.flashObject(shopBtn, 0xfff7b2, 120); }; // --- Helper: Calculate upgrade cost --- function getUpgradeCost(idx) { var u = upgrades[idx]; var n = upgradesBought[idx]; // Exponential cost scaling return Math.floor(u.base * Math.pow(u.mult, n)); } // --- Helper: Update all UI --- function updateUI() { fartCountTxt.setText('Farts: ' + fartCount); fartPerClickTxt.setText('Farts/click: ' + fartPerClick); for (var i = 0; i < upgrades.length; ++i) { var cost = getUpgradeCost(i); upgradeCostTxts[i].setText('Cost: ' + cost); // Gray out if can't afford if (fartCount >= cost) { upgradeButtons[i].alpha = 1; } else { upgradeButtons[i].alpha = 0.5; } } } updateUI(); // --- Upgrade Button Handlers --- for (var i = 0; i < upgrades.length; ++i) { (function (idx) { upgradeButtons[idx].down = function (x, y, obj) { var cost = getUpgradeCost(idx); if (fartCount >= cost) { fartCount -= cost; upgradesBought[idx]++; fartPerClick += upgrades[idx].amount; updateUI(); // Feedback LK.effects.flashObject(upgradeButtons[idx], 0xeeeecc, 120); } }; })(i); } // --- Fart Button Handler (Clicker) --- fartBtn.down = function (x, y, obj) { // Animate button fartBtn.animatePress(); // Button color flash for feedback LK.effects.flashObject(fartBtn, 0xfff7b2, 120); // Play fart sound LK.getSound('fart_snd').play(); // Dog reacts dogFace.react(); // Add farts! fartCount += fartPerClick; updateUI(); }; // Make the button big and easy to tap: handle press anywhere on the button fartBtn.interactive = true;
===================================================================
--- original.js
+++ change.js
@@ -249,9 +249,9 @@
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.45,
scaleY: 0.45,
- x: 2048 / 2,
+ x: 400,
y: upgradeYStart - 120
});
shopBtn.interactive = true;
var shopBtnTxt = new Text2('Upgrade Shop', {
@@ -270,9 +270,9 @@
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.5,
scaleY: 0.5,
- x: 2048 / 2,
+ x: 400,
y: upgradeYStart + i * upgradeSpacing
});
btn.interactive = true;
// Label