User prompt
make circle around start
Code edit (1 edits merged)
Please save this source code
User prompt
Migrate to the latest version of LK
User prompt
Fix Bug: 'Uncaught TypeError: Graphics is not a constructor' in this line: 'var startButton = new Graphics();' Line Number: 341
User prompt
Fix Bug: 'Uncaught TypeError: Graphics is not a constructor' in this line: 'var levelProgress = new Graphics();' Line Number: 274
User prompt
Fix Bug: 'Uncaught TypeError: Graphics is not a constructor' in this line: 'var levelBar = new Graphics();' Line Number: 268
User prompt
Fix Bug: 'Uncaught TypeError: Graphics is not a constructor' in this line: 'var modalBackground = new Graphics();' Line Number: 30
User prompt
Fix Bug: 'Uncaught TypeError: Graphics is not a constructor' in this line: 'var gridGraphics = new Graphics();' Line Number: 126
Code edit (1 edits merged)
Please save this source code
User prompt
Add stars to the background
User prompt
Remove everything from the game
Initial prompt
Rogue Defuse
/**** * Classes ****/ var ActiveBomb = Container.expand(function () { var self = Container.call(this); var bombGraphics = LK.getAsset('activeBomb', { anchorX: 0.5, anchorY: 0.5 }); var cellSize = 2048 * 0.7 / 4; bombGraphics.width = cellSize * 0.9; bombGraphics.height = cellSize * 0.9; self.addChild(bombGraphics); self.isAnimating = false; self.visible = false; self.on('down', function () { if (self.visible) { self.hide(); LK.score += 20; LK.experience += 100; if (LK.experience >= LK.experienceToNextLevel) { LK.level++; if (LK.level <= 35) { LK.experienceToNextLevel += 150; } else { LK.experienceToNextLevel += 180; } LK.experience = 0; var levelUpModal = self.parent.parent.parent.children.find(function (child) { return child instanceof LevelUpModal; }); if (levelUpModal) { levelUpModal.visible = true; } } LK.gui.top.children[0].setText(LK.score.toString()); self.parent.children.forEach(function (child) { if (child instanceof IdleBomb && typeof child.show === 'function') { child.show(); } }); } }); self.show = function () { self.visible = true; }; self.hide = function () { self.visible = false; }; }); var CriticalChance = Container.expand(function () { var self = Container.call(this); self.attachAsset('criticalChance', { anchorX: 0.5, anchorY: 0.5 }); self.on('down', function () { LK.criticalChance += 0.1; self.visible = false; }); }); var DeadBomb = Container.expand(function () { var self = Container.call(this); var bombGraphics = LK.getAsset('deadBomb', { anchorX: 0.5, anchorY: 0.5 }); var cellSize = 2048 * 0.7 / 4; bombGraphics.width = cellSize * 0.9; bombGraphics.height = cellSize * 0.9; self.addChild(bombGraphics); self.visible = false; self.show = function () { if (LK.gameState === 'LOST') { self.visible = true; } }; self.hide = function () { self.visible = false; }; }); var Grid = Container.expand(function () { var self = Container.call(this); this.columns = 4; this.rows = 3; var cellSize = 2048 * 0.7 / this.columns; var cellWidth = cellSize * 0.9; var cellHeight = cellSize * 0.9; var cellSpacing = cellSize * 0.35; for (var i = 0; i < this.columns; i++) { for (var j = 0; j < this.rows; j++) { var gridGraphics = LK.getAsset('gridCell', { anchorX: 0.5, anchorY: 0.5 }); gridGraphics.width = cellWidth; gridGraphics.height = cellHeight; gridGraphics.tint = i % 2 === 0 ? 0x808080 : 0xFFFFFF; gridGraphics.x = (2048 - (this.columns * cellWidth + (this.columns - 1) * cellSpacing)) / 2 + i * (cellWidth + cellSpacing); gridGraphics.y = (2732 - this.rows * cellHeight) / 2 + j * (cellHeight + cellSpacing) + 200; self.addChild(gridGraphics); var cellLabel = new Text2(i + '.' + j, { size: cellSize * 0.2, fill: '#000000' }); cellLabel.x = (2048 - (this.columns * cellWidth + (this.columns - 1) * cellSpacing)) / 2 + i * (cellWidth + cellSpacing) + cellWidth / 2; cellLabel.y = (2732 - this.rows * cellHeight) / 2 + j * (cellHeight + cellSpacing) + cellHeight / 2 + 200; cellLabel.anchor.set(0.5, 0.5); cellLabel.visible = LK.testMode; gridGraphics.addChild(cellLabel); var idleBomb = new IdleBomb(); idleBomb.x = cellLabel.x; idleBomb.y = cellLabel.y; gridGraphics.addChild(idleBomb); var activeBomb = new ActiveBomb(); activeBomb.x = cellLabel.x; activeBomb.y = cellLabel.y; gridGraphics.addChild(activeBomb); var deadBomb = new DeadBomb(); deadBomb.x = cellLabel.x; deadBomb.y = cellLabel.y; gridGraphics.addChild(deadBomb); } } }); var Health = Container.expand(function () { var self = Container.call(this); self.attachAsset('health', { anchorX: 0.5, anchorY: 0.5 }); self.on('down', function () { LK.health += 100; self.visible = false; }); }); var IdleBomb = Container.expand(function () { var self = Container.call(this); var bombGraphics = LK.getAsset('idleBomb', { anchorX: 0.5, anchorY: 0.5 }); var cellSize = 2048 * 0.7 / 4; bombGraphics.width = cellSize * 0.9; bombGraphics.height = cellSize * 0.9; self.addChild(bombGraphics); self.isAnimating = false; self.visibilityTimeout = null; self.on('down', function () { if (!self.isAnimating) { self.isAnimating = true; var originalScale = self.scale.x; var tweenScale = originalScale * 1.05; var interval = LK.setInterval(function () { if (self.scale.x < tweenScale) { self.scale.x += 0.01; self.scale.y += 0.01; } else { LK.clearInterval(interval); interval = LK.setInterval(function () { if (self.scale.x > originalScale) { self.scale.x -= 0.01; self.scale.y -= 0.01; } else { LK.clearInterval(interval); self.isAnimating = false; } }, 1000 / 60); } }, 1000 / 60); } }); self.hide = function () { self.visible = false; }; self.show = function () { if (self.visibilityTimeout) { LK.clearTimeout(self.visibilityTimeout); self.visibilityTimeout = null; } self.visible = true; }; }); var LevelUpModal = Container.expand(function () { var self = Container.call(this); self.rewards = [new ScoreMultiplier(), new Health(), new CriticalChance()]; var rewardHeight = self.rewards[0].height; var modalHeight = rewardHeight * 1.15; var modalBackground = self.attachAsset('modalBackground', { anchorX: 0.5, anchorY: 0.5 }); modalBackground.width = 2048; modalBackground.height = modalHeight; modalBackground.alpha = 0.8; modalBackground.y = (2732 - modalHeight) / 2; self.addChild(modalBackground); self.visible = false; var totalWidth = self.rewards.reduce(function (total, reward) { return total + reward.width + 20; }, -20); var rewardSpacing = 20; var totalRewardWidth = self.rewards.reduce(function (total, reward) { return total + reward.width; }, 0); var startRewardX = (2048 - totalRewardWidth - rewardSpacing * (self.rewards.length - 1)) / 2; var gridWidth = (self.rewards[0].width + rewardSpacing) * self.rewards.length - rewardSpacing; var gridStartX = (2048 - gridWidth) / 2; self.rewards.forEach(function (reward, index) { reward.x = gridStartX + index * (reward.width + rewardSpacing); reward.y = (2732 - modalHeight) / 2 + modalHeight / 2; reward.on('down', function () { self.visible = false; }); self.addChild(reward); }); }); var ScoreMultiplier = Container.expand(function () { var self = Container.call(this); self.attachAsset('scoreMultiplier', { anchorX: 0.5, anchorY: 0.5 }); self.on('down', function () { LK.score *= 2; self.visible = false; }); }); var StarField = Container.expand(function () { var self = Container.call(this); var starGraphics = LK.getAsset('star', { anchorX: 0.5, anchorY: 0.5 }); self.addChild(starGraphics); self._move_migrated = function () { self.y += 1; if (self.y > 2732) { self.y = 0; } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ LK.gameState = 'IDLE'; LK.testMode = true; var grid = new Grid(); var lastBombActivated = null; var levelUpModal = new LevelUpModal(); game.addChild(grid); game.addChild(levelUpModal); var starField = []; for (var i = 0; i < 100; i++) { var star = new StarField(); star.x = Math.random() * 2048; star.y = Math.random() * 2732; starField.push(star); game.addChildAt(star, 0); } function handleTick() { if (LK.gameState === 'START') { starField.forEach(function (star) { star._move_migrated(); }); levelProgress.width = LK.experience / LK.experienceToNextLevel * levelBar.width; } else if (LK.gameState === 'LOST') { grid.children.forEach(function (cell) { cell.children.forEach(function (child) { if (child instanceof DeadBomb) { child.show(); } }); }); } else if (LK.gameState === 'START' || LK.gameState === 'IDLE') { grid.children.forEach(function (cell) { cell.children.forEach(function (child) { if (child instanceof DeadBomb) { child.hide(); } }); }); } } game.scoreTxt = new Text2('0', { size: 100, fill: '#ffff00' }); game.scoreTxt.anchor.set(0.5, 0.5); game.scoreTxt.x = LK.width / 2; game.scoreTxt.y = 200; LK.gui.top.addChild(game.scoreTxt); LK.score = 0; LK.level = 1; LK.experience = 0; LK.experienceToNextLevel = 50; var levelUpModal = new LevelUpModal(); game.addChild(levelUpModal); var levelBar = LK.getAsset('levelBar', {}); levelBar.width = game.width * 0.8; levelBar.height = 100; levelBar.y = 0; levelBar.x = 2048 / 2 - levelBar.width / 2; LK.gui.topLeft.addChild(levelBar); var levelProgress = LK.getAsset('levelProgress', {}); levelProgress.width = 1; levelProgress.height = 100; levelProgress.y = 0; levelProgress.x = 2048 / 2 - levelBar.width / 2; LK.gui.topLeft.addChild(levelProgress); var testButton = LK.getAsset('testButton', { anchorX: 0.5, anchorY: 0.5 }); testButton.x = 0; testButton.y = LK.height - testButton.height; LK.gui.bottomLeft.addChild(testButton); testButton.on('down', function () { LK.testMode = !LK.testMode; console.log('Test Mode is: ', LK.testMode); testButton.alpha = LK.testMode ? 1 : 0; grid.children.forEach(function (cell) { cell.children.forEach(function (child) { if (child instanceof Text2) { child.visible = LK.testMode; } if (!LK.testMode) { cell.alpha = 0; } else { cell.alpha = 1; } }); }); }); LK.on('tick', handleTick); game.activateBomb = function () { if (LK.gameState === 'START') { var idleBombs = []; grid.children.forEach(function (cell) { cell.children.forEach(function (child) { if (child instanceof IdleBomb && child.visible) { var hasActiveBomb = false; child.parent.children.forEach(function (sibling) { if (sibling instanceof ActiveBomb && sibling.visible) { hasActiveBomb = true; } }); if (!hasActiveBomb) { idleBombs.push(child); } } }); }); if (idleBombs.length > 0) { var bombToActivate; do { bombToActivate = idleBombs[Math.floor(Math.random() * idleBombs.length)]; } while (bombToActivate === lastBombActivated); lastBombActivated = bombToActivate; bombToActivate.hide(); bombToActivate.parent.children.forEach(function (child) { if (child instanceof ActiveBomb) { child.show(); bombToActivate.visibilityTimeout = LK.setTimeout(function () { child.hide(); bombToActivate.visibilityTimeout = null; bombToActivate.visible = true; }, 2000); } }); } } }; LK.setInterval(game.activateBomb, 450); var startButton = LK.getAsset('startButton', { anchorX: 0.5, anchorY: 0.5 }); startButton.width = 200; startButton.height = 100; startButton.x = 2048 / 2 - startButton.width / 2; startButton.y = 2732 - startButton.height; game.addChild(startButton); var startText = new Text2('Start', { size: 50, fill: '#f6ba41' }); startText.anchor.set(0.5, 0.5); startText.x = startButton.width / 2; startText.y = startButton.height / 2; startButton.addChild(startText); startButton.on('down', function () { if (LK.gameState === 'IDLE') { LK.gameState = 'START'; var originalScale = startButton.scale.x; var tweenScale = originalScale * 1.05; var interval = LK.setInterval(function () { if (startButton.scale.x < tweenScale) { startButton.scale.x += 0.01; startButton.scale.y += 0.01; } else { LK.clearInterval(interval); interval = LK.setInterval(function () { if (startButton.scale.x > originalScale) { startButton.scale.x -= 0.01; startButton.scale.y -= 0.01; } else { LK.clearInterval(interval); var fadeOutInterval = LK.setInterval(function () { if (startButton.alpha > 0) { startButton.alpha -= 0.0668; } else { LK.clearInterval(fadeOutInterval); startButton.visible = false; } }, 1000 / 60); } }, 1000 / 60); } }, 1000 / 60); } }); var angle = 0; var radius = 50; var centerX = 2048 / 2; var centerY = 2732 - startButton.height - radius; var circularInterval = LK.setInterval(function () { startButton.x = centerX + radius * Math.cos(angle); startButton.y = centerY + radius * Math.sin(angle); angle += 0.05; if (angle >= 2 * Math.PI) { angle = 0; } }, 1000 / 60);
===================================================================
--- original.js
+++ change.js
@@ -427,20 +427,16 @@
}
}, 1000 / 60);
}
});
-var bounceUp = true;
-var bounceInterval = LK.setInterval(function () {
- if (bounceUp) {
- if (startButton.y > 2732 - startButton.height - 10) {
- startButton.y -= 1;
- } else {
- bounceUp = false;
- }
- } else {
- if (startButton.y < 2732 - startButton.height) {
- startButton.y += 1;
- } else {
- bounceUp = true;
- }
+var angle = 0;
+var radius = 50;
+var centerX = 2048 / 2;
+var centerY = 2732 - startButton.height - radius;
+var circularInterval = LK.setInterval(function () {
+ startButton.x = centerX + radius * Math.cos(angle);
+ startButton.y = centerY + radius * Math.sin(angle);
+ angle += 0.05;
+ if (angle >= 2 * Math.PI) {
+ angle = 0;
}
}, 1000 / 60);
\ No newline at end of file