User prompt
Move the Powerup Names 100 pixels lower
User prompt
✅ Move the Powerup Descriptions 50 pixels lower
User prompt
When wrapping text, always wrap after a space character keeping full words intact on the same line
User prompt
If the Powerup Name would be more than 12 characters, wrap the text on to two lines
User prompt
Move the Powerup Descriptions 200 pixels lower
User prompt
Move the descriptions 150 pixels lower
User prompt
The buttons always display "Powerup Name" in the center of their icons, and "Powerup Description" below their icon.
User prompt
Move the left button 50 pixels to the left and the right button 50 pixels to the right. Move both buttons 100 pixels up.
User prompt
Move the left button 50 pixels to the left and the right button 50 pixels to the right
User prompt
The button icons are 4 times larger and the text appears below the buttons
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'width')' in this line: 'var totalButtonWidth = speedButton.width + fireRateButton.width + buttonSpacing;' Line Number: 184
User prompt
The buttons spawn 75 pixels apart from one another and are centered on the screen. The text is lowered a little bit more.
User prompt
The icons are 50% closer to each other when they appear, and the text is a little bit lower.
User prompt
The button icons are four times larger, spaced a bit more apart, and have their text below them instead of on top of them.
User prompt
If any buttons are still on screen the moment that new buttons should be added, the old buttons are removed first.
User prompt
Instead of appearing every 10 seconds, the buttons appear every time my rank increases.
User prompt
Every 10 seconds, two buttons appear in the center of the screen. Clicking one increases Santa's movement speed by 50%, clicking the other increases Santa's rate of fire by 50%.
User prompt
When my score reaches 1, pause the game
User prompt
The pause button should activate when I click it
User prompt
Create a pause button directly below the countdown timer that pauses the houses, presents, santa, and countdown clock until the pause button is clicked again
User prompt
Fix Bug: 'TypeError: self.showRankUpPopup is not a function' in this line: 'self.showRankUpPopup();' Line Number: 98
User prompt
Fix Bug: 'TypeError: LK.showPauseMenu is not a function' in this line: 'LK.showPauseMenu();' Line Number: 98
User prompt
Fix Bug: 'TypeError: self.freezeGame is not a function' in this line: 'self.freezeGame();' Line Number: 98
User prompt
Whenever I rank up, freeze the movement of all objects in the game and pause the countdown timer. Display a popup that says "Rank Up!" with a continue button.
User prompt
Fix Bug: 'ReferenceError: pauseGameAndShowPowerUps is not defined' in this line: 'pauseGameAndShowPowerUps();' Line Number: 154
var Button = Container.expand(function (label, onClick) { var self = Container.call(this); var buttonGraphics = self.createAsset('button', label, 0.5, 0.5); buttonGraphics.scale.set(4); buttonGraphics.interactive = true; buttonGraphics.buttonMode = true; var nameLabel = new Text2(label + ' Name', { size: 50, fill: '#ffffff' }); nameLabel.anchor.set(0.5); nameLabel.y = -buttonGraphics.height / 2; self.addChild(nameLabel); var descriptionLabel = new Text2(label + ' Description', { size: 30, fill: '#ffffff' }); descriptionLabel.anchor.set(0.5); descriptionLabel.y = buttonGraphics.height / 2; self.addChild(descriptionLabel); self.on('down', function (obj) { onClick(); }); }); var Present = Container.expand(function () { var self = Container.call(this); var presentGraphics = self.createAsset('present', 'Present Graphics', .5, .5); self.speed = -10; self.move = function () { self.y += self.speed; }; }); var NaughtyHouse = Container.expand(function () { var self = Container.call(this); var houseGraphics = self.createAsset('naughtyHouse', 'Naughty House Graphics', .5, .5); houseGraphics.tint = 0xFF0000; self.speed = 2; self.move = function () { self.y += self.speed; if (self.y > 2732 + self.height) { self.destroy(); } }; }); var NiceHouse = Container.expand(function () { var self = Container.call(this); var houseGraphics = self.createAsset('niceHouse', 'Nice House Graphics', .5, .5); houseGraphics.tint = 0x00FF00; self.speed = 2; self.hitCount = 0; self.move = function () { self.y += self.speed; if (self.y > 2732 + self.height) { self.destroy(); } }; }); var HappyHouse = Container.expand(function () { var self = Container.call(this); var houseGraphics = self.createAsset('happyHouse', 'Happy House Graphics', .5, .5); houseGraphics.tint = 0xFFFF00; self.speed = 2; self.move = function () { self.y += self.speed; if (self.y > 2732 + self.height) { self.destroy(); } }; }); var DarkHouse = Container.expand(function () { var self = Container.call(this); var houseGraphics = self.createAsset('darkHouse', 'Dark House Graphics', .5, .5); houseGraphics.tint = 0x808080; self.speed = 2; self.move = function () { self.y += self.speed; if (self.y > 2732 + self.height) { self.destroy(); } }; }); var Santa = Container.expand(function () { var self = Container.call(this); var santaGraphics = self.createAsset('santa', 'Santa Graphics', .5, .5); self.targetPosition = null; self.moveSpeed = 5; self.move = function (position) { if (position) { self.targetPosition = position; } if (self.targetPosition) { var dx = self.targetPosition.x - self.x; var dy = self.targetPosition.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 1) { var angle = Math.atan2(dy, dx); var tentativeX = self.x + Math.cos(angle) * self.moveSpeed; var tentativeY = self.y + Math.sin(angle) * self.moveSpeed; self.x = tentativeX; if (tentativeY > 2732 - 2732 / 3) { self.y = tentativeY; } } else { if (self.targetPosition.y > 2732 - 2732 / 3) { self.x = self.targetPosition.x; self.y = self.targetPosition.y; } self.targetPosition = null; } } }; }); var Game = Container.expand(function () { var self = Container.call(this); function checkRankUp() { var xpThreshold = Math.floor(6 * Math.pow(1.35, rank - 1)); if (xp >= xpThreshold) { rank++; xp = 0; rankTxt.setText('Rank: ' + rank); updateXPDisplay(); self.spawnButtons(); } } var countdown = 60; var score = 0; var scoreTxt = new Text2('Score: ' + score, { size: 75, fill: "#ffffff" }); scoreTxt.anchor.set(0, 0); scoreTxt.x += 50; scoreTxt.y += 30; LK.gui.topLeft.addChild(scoreTxt); var timerTxt = new Text2(countdown.toString(), { size: 150, fill: "#ffffff" }); timerTxt.anchor.set(.5, 0); LK.gui.topCenter.addChild(timerTxt); var xp = 0; var rank = 1; var rankTxt = new Text2('Rank: ' + rank, { size: 75, fill: "#ffffff" }); rankTxt.anchor.set(0, 0); rankTxt.x = timerTxt.x + timerTxt.width + 230; rankTxt.y = scoreTxt.y; LK.gui.topCenter.addChild(rankTxt); var xpDisplayTxt = new Text2(xp + ' / ' + 6 * (rank - 1 + 1), { size: 75, fill: "#ffffff" }); xpDisplayTxt.anchor.set(0, 0); xpDisplayTxt.x = rankTxt.x; xpDisplayTxt.y = rankTxt.y + rankTxt.height + 20; LK.gui.topCenter.addChild(xpDisplayTxt); function updateXPDisplay() { var xpThreshold = Math.floor(6 * Math.pow(1.35, rank - 1)); xpDisplayTxt.setText(xp + ' / ' + xpThreshold); } function addXP(amount) { if (amount > 0) { xp += amount; checkRankUp(); } updateXPDisplay(); } var timer = LK.setInterval(function () { countdown--; timerTxt.setText(countdown.toString()); if (countdown <= 0) { LK.clearInterval(timer); LK.showGameOver(); } }, 1000); var houses = []; var buttons = []; self.spawnButtons = function () { buttons.forEach(function (button) { button.destroy(); }); buttons = []; var speedButton = new Button('Increase Speed', function () { santa.moveSpeed *= 1.5; speedButton.destroy(); fireRateButton.destroy(); }); speedButton.x = 2048 / 2 - 300; speedButton.y = 2732 / 2 - 100; buttons.push(speedButton); self.addChild(speedButton); var fireRateButton = new Button('Increase Fire Rate', function () { presentFireRate *= 0.5; speedButton.destroy(); fireRateButton.destroy(); }); fireRateButton.x = 2048 / 2 + 300; fireRateButton.y = 2732 / 2 - 100; buttons.push(fireRateButton); self.addChild(fireRateButton); }; self.spawnHouse = function () { var nextSpawnTime = Math.random() * 1000 + 1000; var newHouseX = Math.random() * 2048; var newHouseY = -Math.random() * 500; var canSpawn = true; for (var i = 0; i < houses.length; i++) { var house = houses[i]; if (Math.abs(newHouseX - house.x) < house.width && Math.abs(newHouseY - house.y) < house.height) { canSpawn = false; break; } } if (canSpawn) { var houseTypes = [NaughtyHouse, NiceHouse]; var randomIndex = Math.random() < 0.34 ? 0 : 1; var house = new houseTypes[randomIndex](); house.x = newHouseX; house.y = newHouseY; houses.push(house); self.addChild(house); } LK.setTimeout(self.spawnHouse, nextSpawnTime); }; self.spawnHouse(); var houses = []; var presents = []; var santa = self.addChild(new Santa()); santa.x = 2048 / 2; santa.y = 2732 - 2732 * 0.1; var presentFireRate = 60; var presentFireCounter = 0; stage.on('down', function (obj) { var pos = obj.event.getLocalPosition(self); santa.move(pos); }); LK.on('tick', function () { santa.move(); if (presentFireCounter++ >= presentFireRate) { var present = new Present(); present.x = santa.x; present.y = santa.y; presents.push(present); self.addChild(present); presentFireCounter = 0; } for (var i = presents.length - 1; i >= 0; i--) { var present = presents[i]; present.move(); for (var j = houses.length - 1; j >= 0; j--) { var house = houses[j]; if (house instanceof NaughtyHouse && present.intersects(house)) { var darkHouse = new DarkHouse(); darkHouse.x = house.x; darkHouse.y = house.y; houses[j] = darkHouse; self.addChild(darkHouse); house.destroy(); present.destroy(); score = Math.max(0, score - 2); scoreTxt.setText('Score: ' + score); presents.splice(i, 1); break; } else if (house instanceof NiceHouse && present.intersects(house)) { house.hitCount++; score++; addXP(1); scoreTxt.setText('Score: ' + score); present.destroy(); presents.splice(i, 1); if (house.hitCount >= 3) { var happyHouse = new HappyHouse(); happyHouse.x = house.x; happyHouse.y = house.y; houses[j] = happyHouse; self.addChild(happyHouse); house.destroy(); } break; } } if (present.y < -present.height) { present.destroy(); presents.splice(i, 1); } } for (var i = houses.length - 1; i >= 0; i--) { var house = houses[i]; house.move(); if (house.y > 2732 + house.height) { houses.splice(i, 1); } } }); });
===================================================================
--- original.js
+++ change.js
@@ -3,15 +3,22 @@
var buttonGraphics = self.createAsset('button', label, 0.5, 0.5);
buttonGraphics.scale.set(4);
buttonGraphics.interactive = true;
buttonGraphics.buttonMode = true;
- var text = new Text2(label, {
+ var nameLabel = new Text2(label + ' Name', {
size: 50,
fill: '#ffffff'
});
- text.anchor.set(0.5);
- text.y = buttonGraphics.height;
- self.addChild(text);
+ nameLabel.anchor.set(0.5);
+ nameLabel.y = -buttonGraphics.height / 2;
+ self.addChild(nameLabel);
+ var descriptionLabel = new Text2(label + ' Description', {
+ size: 30,
+ fill: '#ffffff'
+ });
+ descriptionLabel.anchor.set(0.5);
+ descriptionLabel.y = buttonGraphics.height / 2;
+ self.addChild(descriptionLabel);
self.on('down', function (obj) {
onClick();
});
});
overhead view of simple box house christmas decorations giant christmas tree out front video game asset 2d blank background Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
overhead view of drab house with giant prohibition symbol snowy lawn video game asset 2d blank background Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
overhead view of charred remains of a completely burned down box house snowy lawn video game asset 2d blank background Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Santa on sleigh pulled by reindeer blank background no shadows flying forward away straight top down Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
simple red christmas ornament 2d blank background high contrast no shadows in game asset Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
simple snowflake In-Game asset. 2d. Blank background. High contrast. No shadows. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
old white scroll unfurled blank no shadows Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
top down simple wrapped red present with gold bow. In-Game asset. 2d. Blank background. High contrast. No shadows. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
top down plate of cookies glass of milk. In-Game asset. Blank background. No shadows. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.