User prompt
Replace "Rank: N" with "Rank: N (A/B)" where N is your current rank, A is your current XP, and B is the total amount of XP you need to reach the next rank.
User prompt
Each time the rank increases, the amount of XP needed to achieve the next rank increases by 20% rounded down
User prompt
Rank increases every 6 XP
User prompt
Score can never go below 0
User prompt
Players earn 1 XP every time their score increases by 1. They do not XP if their score goes down. Every 5 XP earned increases the rank by 1.
User prompt
Increase Rank every time score increases by 10
User prompt
Slightly lower the countdown timer so that it's top is aligned with the top of the score indicator.
User prompt
Double the amount of padding above the countdown timer
User prompt
Directly below Score: add "Rank:" which starts at 1
User prompt
I still can't see the Rank UI element
User prompt
Why can't I see the Rank UI element?
User prompt
On the top right edge of the screen, create a "Rank: XX" ui element where XX starts at 1 and increases every 10 points.
User prompt
Similar to the Score indicator but on the right edge, create a Rank indicator that starts at 1 and increases every time the player's score reaches an increment of 10
User prompt
Why can't I see the rank indicator?
User prompt
Between the timer and the right edge of the screen is "Rank: XX" in a font that is half as big as the timer. The "XX" starts at 1 and increases every time the player scores 10 points.
User prompt
Move the Rank indicator to the right edge of the screen at the same height as the Score indicator
User prompt
Between the timer and the left edge of the screen is "Rank: XX" in a font that is half as big as the timer. The "XX" starts at 1 and increases every time the player scores 10 points.
User prompt
Why isn't the progress bar visible?
User prompt
There is a progress bar in the top right corner with space for 10 ticks of progress. Every time the player gains a point, fill in a tick. The progress bar cannot have more than 10 or less than 0 ticks filled in.
User prompt
If losing points would cause the player's score to go below 0, do not lose those points.
User prompt
The player loses 2 points every time a present touches a naughty house.
User prompt
The player gains 2 points every time a nice house turns into a happy house.
User prompt
The player gains 1 point every time a present touches a nice house.
User prompt
triple the amount of padding around the score UI element
User prompt
Add a small amount of padding above and to the left of the score UI element
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); var countdown = 60; var score = 0; var scoreTxt = new Text2('Score: ' + score, { size: 75, fill: "#ffffff" }); scoreTxt.anchor.set(0, 0); scoreTxt.x += 30; 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 rank = 1; var rankTxt = new Text2('Rank: ' + rank, { size: 75, fill: "#ffffff" }); rankTxt.anchor.set(1, 0); rankTxt.x = 2048 - 30; rankTxt.y = 120; LK.gui.topRight.addChild(rankTxt); var timer = LK.setInterval(function () { countdown--; timerTxt.setText(countdown.toString()); if (countdown <= 0) { LK.clearInterval(timer); LK.showGameOver(); } }, 1000); var houses = []; 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(); if (score > 1) { score -= 2; scoreTxt.setText('Score: ' + score); if (score % 10 === 0) { rank = Math.floor(score / 10) + 1; rankTxt.setText('Rank: ' + rank); } } presents.splice(i, 1); break; } else if (house instanceof NiceHouse && present.intersects(house)) { house.hitCount++; score++; 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
@@ -110,9 +110,9 @@
fill: "#ffffff"
});
rankTxt.anchor.set(1, 0);
rankTxt.x = 2048 - 30;
- rankTxt.y = 30;
+ rankTxt.y = 120;
LK.gui.topRight.addChild(rankTxt);
var timer = LK.setInterval(function () {
countdown--;
timerTxt.setText(countdown.toString());
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.