/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var Coin = Container.expand(function () {
var self = Container.call(this);
var coinGraphics = self.attachAsset('coin', {
anchorX: 0.5,
anchorY: 0.5
});
self.animate = function () {
tween(self, {
scaleX: 1.5,
scaleY: 1.5
}, {
duration: 300,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(self, {
scaleX: 1,
scaleY: 1
}, {
duration: 200
});
}
});
};
return self;
});
var LevelButton = Container.expand(function (levelNum, cost) {
var self = Container.call(this);
var buttonGraphics = self.attachAsset('levelButton', {
anchorX: 0.5,
anchorY: 0.5
});
var buttonText = new Text2('Level ' + levelNum + '\n' + cost + ' BTC', {
size: 45,
fill: 0xFFFFFF
});
buttonText.anchor.set(0.5, 0.5);
self.addChild(buttonText);
self.cost = cost;
self.levelNum = levelNum;
self.down = function (x, y, obj) {
if (coins >= self.cost && currentLevel < self.levelNum) {
coins -= self.cost;
currentLevel = self.levelNum;
LK.getSound('levelUp').play();
setupLevel();
updateUI();
}
};
return self;
});
var MiningRig = Container.expand(function () {
var self = Container.call(this);
var rigGraphics = self.attachAsset('miningRig', {
anchorX: 0.5,
anchorY: 0.5
});
self.level = 1;
self.efficiency = 1;
self.animate = function () {
tween(rigGraphics, {
tint: 0x555555
}, {
duration: 200,
onFinish: function onFinish() {
tween(rigGraphics, {
tint: 0x333333
}, {
duration: 200
});
}
});
};
return self;
});
var TaskButton = Container.expand(function (taskType, reward) {
var self = Container.call(this);
var buttonGraphics = self.attachAsset('taskButton', {
anchorX: 0.5,
anchorY: 0.5
});
var buttonText = new Text2(taskType + '\n+' + reward + ' BTC', {
size: 50,
fill: 0xFFFFFF
});
buttonText.anchor.set(0.5, 0.5);
self.addChild(buttonText);
self.taskType = taskType;
self.reward = reward;
self.cooldown = 0;
self.down = function (x, y, obj) {
if (self.cooldown <= 0) {
self.performTask();
}
};
self.performTask = function () {
var earnedCoins = self.reward * miningEfficiency;
coins += earnedCoins;
LK.getSound('coinEarn').play();
// Show coin animation
var coin = new Coin();
coin.x = self.x;
coin.y = self.y - 100;
game.addChild(coin);
coin.animate();
tween(coin, {
y: coin.y - 200,
alpha: 0
}, {
duration: 1000,
onFinish: function onFinish() {
coin.destroy();
}
});
self.cooldown = 60; // 1 second cooldown at 60fps
updateUI();
};
self.update = function () {
if (self.cooldown > 0) {
self.cooldown--;
buttonGraphics.alpha = 0.5;
} else {
buttonGraphics.alpha = 1;
}
};
return self;
});
var UpgradeButton = Container.expand(function (text, cost) {
var self = Container.call(this);
var buttonGraphics = self.attachAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5
});
var buttonText = new Text2(text + '\n' + cost + ' BTC', {
size: 40,
fill: 0xFFFFFF
});
buttonText.anchor.set(0.5, 0.5);
self.addChild(buttonText);
self.cost = cost;
self.text = text;
self.updateText = function (newCost) {
self.cost = newCost;
buttonText.setText(self.text + '\n' + newCost + ' BTC');
};
self.down = function (x, y, obj) {
if (coins >= self.cost) {
coins -= self.cost;
LK.getSound('upgrade').play();
self.onPurchase();
updateUI();
}
};
self.onPurchase = function () {
// Override in implementation
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a2e
});
/****
* Game Code
****/
// Game variables
var coins = storage.coins || 0;
var currentLevel = storage.currentLevel || 1;
var miningRigLevel = storage.miningRigLevel || 1;
var miningEfficiency = storage.miningEfficiency || 1;
// UI elements
var coinsText, levelText;
var miningRigs = [];
var upgradeButtons = [];
var levelButtons = [];
var taskButtons = [];
// Background
var bg = game.attachAsset('background', {
x: 0,
y: 0
});
// Setup UI
function setupUI() {
// Coins display
coinsText = new Text2(coins.toFixed(2) + ' BTC', {
size: 80,
fill: 0xFFD700
});
coinsText.anchor.set(0.5, 0);
LK.gui.top.addChild(coinsText);
// Level display
levelText = new Text2('Level ' + currentLevel, {
size: 60,
fill: 0xFFFFFF
});
levelText.anchor.set(0, 0);
levelText.x = 120;
levelText.y = 20;
LK.gui.topLeft.addChild(levelText);
}
function setupLevel() {
// Clear existing elements
for (var i = 0; i < miningRigs.length; i++) {
miningRigs[i].destroy();
}
for (var i = 0; i < upgradeButtons.length; i++) {
upgradeButtons[i].destroy();
}
for (var i = 0; i < levelButtons.length; i++) {
levelButtons[i].destroy();
}
for (var i = 0; i < taskButtons.length; i++) {
taskButtons[i].destroy();
}
miningRigs = [];
upgradeButtons = [];
levelButtons = [];
taskButtons = [];
// Create mining rigs based on level
var rigsToShow = Math.min(currentLevel, 3);
for (var i = 0; i < rigsToShow; i++) {
var rig = new MiningRig();
rig.x = 400 + i * 400;
rig.y = 400;
game.addChild(rig);
miningRigs.push(rig);
}
// Create task buttons
var taskTypes = ['Quick Mine', 'Deep Mine', 'Hash Puzzle'];
var taskRewards = [1, 2, 5];
for (var i = 0; i < currentLevel && i < 3; i++) {
var task = new TaskButton(taskTypes[i], taskRewards[i]);
task.x = 1024;
task.y = 800 + i * 200;
game.addChild(task);
taskButtons.push(task);
}
// Create upgrade button
var upgradeCost = miningRigLevel * 50;
var upgradeBtn = new UpgradeButton('Upgrade Rig', upgradeCost);
upgradeBtn.x = 1024;
upgradeBtn.y = 1600;
upgradeBtn.onPurchase = function () {
miningRigLevel++;
miningEfficiency = miningRigLevel * 0.5 + 0.5;
// Animate rigs
for (var i = 0; i < miningRigs.length; i++) {
miningRigs[i].animate();
}
upgradeBtn.updateText(miningRigLevel * 50);
saveGame();
};
game.addChild(upgradeBtn);
upgradeButtons.push(upgradeBtn);
// Create level buttons
if (currentLevel < 5) {
var nextLevel = currentLevel + 1;
var levelCosts = [0, 100, 500, 2000, 10000];
var levelBtn = new LevelButton(nextLevel, levelCosts[nextLevel - 1]);
levelBtn.x = 1024;
levelBtn.y = 1800;
game.addChild(levelBtn);
levelButtons.push(levelBtn);
}
}
function updateUI() {
coinsText.setText(coins.toFixed(2) + ' BTC');
levelText.setText('Level ' + currentLevel);
saveGame();
}
function saveGame() {
storage.coins = coins;
storage.currentLevel = currentLevel;
storage.miningRigLevel = miningRigLevel;
storage.miningEfficiency = miningEfficiency;
}
// Initialize game
setupUI();
setupLevel();
// Game update loop
game.update = function () {
// Update task buttons
for (var i = 0; i < taskButtons.length; i++) {
taskButtons[i].update();
}
// Auto-mine every 3 seconds
if (LK.ticks % 180 === 0) {
var autoEarn = miningRigs.length * miningEfficiency * 0.1;
coins += autoEarn;
// Animate rigs
for (var i = 0; i < miningRigs.length; i++) {
miningRigs[i].animate();
}
updateUI();
}
}; ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,308 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+var storage = LK.import("@upit/storage.v1");
+
+/****
+* Classes
+****/
+var Coin = Container.expand(function () {
+ var self = Container.call(this);
+ var coinGraphics = self.attachAsset('coin', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.animate = function () {
+ tween(self, {
+ scaleX: 1.5,
+ scaleY: 1.5
+ }, {
+ duration: 300,
+ easing: tween.easeOut,
+ onFinish: function onFinish() {
+ tween(self, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 200
+ });
+ }
+ });
+ };
+ return self;
+});
+var LevelButton = Container.expand(function (levelNum, cost) {
+ var self = Container.call(this);
+ var buttonGraphics = self.attachAsset('levelButton', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var buttonText = new Text2('Level ' + levelNum + '\n' + cost + ' BTC', {
+ size: 45,
+ fill: 0xFFFFFF
+ });
+ buttonText.anchor.set(0.5, 0.5);
+ self.addChild(buttonText);
+ self.cost = cost;
+ self.levelNum = levelNum;
+ self.down = function (x, y, obj) {
+ if (coins >= self.cost && currentLevel < self.levelNum) {
+ coins -= self.cost;
+ currentLevel = self.levelNum;
+ LK.getSound('levelUp').play();
+ setupLevel();
+ updateUI();
+ }
+ };
+ return self;
+});
+var MiningRig = Container.expand(function () {
+ var self = Container.call(this);
+ var rigGraphics = self.attachAsset('miningRig', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.level = 1;
+ self.efficiency = 1;
+ self.animate = function () {
+ tween(rigGraphics, {
+ tint: 0x555555
+ }, {
+ duration: 200,
+ onFinish: function onFinish() {
+ tween(rigGraphics, {
+ tint: 0x333333
+ }, {
+ duration: 200
+ });
+ }
+ });
+ };
+ return self;
+});
+var TaskButton = Container.expand(function (taskType, reward) {
+ var self = Container.call(this);
+ var buttonGraphics = self.attachAsset('taskButton', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var buttonText = new Text2(taskType + '\n+' + reward + ' BTC', {
+ size: 50,
+ fill: 0xFFFFFF
+ });
+ buttonText.anchor.set(0.5, 0.5);
+ self.addChild(buttonText);
+ self.taskType = taskType;
+ self.reward = reward;
+ self.cooldown = 0;
+ self.down = function (x, y, obj) {
+ if (self.cooldown <= 0) {
+ self.performTask();
+ }
+ };
+ self.performTask = function () {
+ var earnedCoins = self.reward * miningEfficiency;
+ coins += earnedCoins;
+ LK.getSound('coinEarn').play();
+ // Show coin animation
+ var coin = new Coin();
+ coin.x = self.x;
+ coin.y = self.y - 100;
+ game.addChild(coin);
+ coin.animate();
+ tween(coin, {
+ y: coin.y - 200,
+ alpha: 0
+ }, {
+ duration: 1000,
+ onFinish: function onFinish() {
+ coin.destroy();
+ }
+ });
+ self.cooldown = 60; // 1 second cooldown at 60fps
+ updateUI();
+ };
+ self.update = function () {
+ if (self.cooldown > 0) {
+ self.cooldown--;
+ buttonGraphics.alpha = 0.5;
+ } else {
+ buttonGraphics.alpha = 1;
+ }
+ };
+ return self;
+});
+var UpgradeButton = Container.expand(function (text, cost) {
+ var self = Container.call(this);
+ var buttonGraphics = self.attachAsset('upgradeButton', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var buttonText = new Text2(text + '\n' + cost + ' BTC', {
+ size: 40,
+ fill: 0xFFFFFF
+ });
+ buttonText.anchor.set(0.5, 0.5);
+ self.addChild(buttonText);
+ self.cost = cost;
+ self.text = text;
+ self.updateText = function (newCost) {
+ self.cost = newCost;
+ buttonText.setText(self.text + '\n' + newCost + ' BTC');
+ };
+ self.down = function (x, y, obj) {
+ if (coins >= self.cost) {
+ coins -= self.cost;
+ LK.getSound('upgrade').play();
+ self.onPurchase();
+ updateUI();
+ }
+ };
+ self.onPurchase = function () {
+ // Override in implementation
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x1a1a2e
+});
+
+/****
+* Game Code
+****/
+// Game variables
+var coins = storage.coins || 0;
+var currentLevel = storage.currentLevel || 1;
+var miningRigLevel = storage.miningRigLevel || 1;
+var miningEfficiency = storage.miningEfficiency || 1;
+// UI elements
+var coinsText, levelText;
+var miningRigs = [];
+var upgradeButtons = [];
+var levelButtons = [];
+var taskButtons = [];
+// Background
+var bg = game.attachAsset('background', {
+ x: 0,
+ y: 0
+});
+// Setup UI
+function setupUI() {
+ // Coins display
+ coinsText = new Text2(coins.toFixed(2) + ' BTC', {
+ size: 80,
+ fill: 0xFFD700
+ });
+ coinsText.anchor.set(0.5, 0);
+ LK.gui.top.addChild(coinsText);
+ // Level display
+ levelText = new Text2('Level ' + currentLevel, {
+ size: 60,
+ fill: 0xFFFFFF
+ });
+ levelText.anchor.set(0, 0);
+ levelText.x = 120;
+ levelText.y = 20;
+ LK.gui.topLeft.addChild(levelText);
+}
+function setupLevel() {
+ // Clear existing elements
+ for (var i = 0; i < miningRigs.length; i++) {
+ miningRigs[i].destroy();
+ }
+ for (var i = 0; i < upgradeButtons.length; i++) {
+ upgradeButtons[i].destroy();
+ }
+ for (var i = 0; i < levelButtons.length; i++) {
+ levelButtons[i].destroy();
+ }
+ for (var i = 0; i < taskButtons.length; i++) {
+ taskButtons[i].destroy();
+ }
+ miningRigs = [];
+ upgradeButtons = [];
+ levelButtons = [];
+ taskButtons = [];
+ // Create mining rigs based on level
+ var rigsToShow = Math.min(currentLevel, 3);
+ for (var i = 0; i < rigsToShow; i++) {
+ var rig = new MiningRig();
+ rig.x = 400 + i * 400;
+ rig.y = 400;
+ game.addChild(rig);
+ miningRigs.push(rig);
+ }
+ // Create task buttons
+ var taskTypes = ['Quick Mine', 'Deep Mine', 'Hash Puzzle'];
+ var taskRewards = [1, 2, 5];
+ for (var i = 0; i < currentLevel && i < 3; i++) {
+ var task = new TaskButton(taskTypes[i], taskRewards[i]);
+ task.x = 1024;
+ task.y = 800 + i * 200;
+ game.addChild(task);
+ taskButtons.push(task);
+ }
+ // Create upgrade button
+ var upgradeCost = miningRigLevel * 50;
+ var upgradeBtn = new UpgradeButton('Upgrade Rig', upgradeCost);
+ upgradeBtn.x = 1024;
+ upgradeBtn.y = 1600;
+ upgradeBtn.onPurchase = function () {
+ miningRigLevel++;
+ miningEfficiency = miningRigLevel * 0.5 + 0.5;
+ // Animate rigs
+ for (var i = 0; i < miningRigs.length; i++) {
+ miningRigs[i].animate();
+ }
+ upgradeBtn.updateText(miningRigLevel * 50);
+ saveGame();
+ };
+ game.addChild(upgradeBtn);
+ upgradeButtons.push(upgradeBtn);
+ // Create level buttons
+ if (currentLevel < 5) {
+ var nextLevel = currentLevel + 1;
+ var levelCosts = [0, 100, 500, 2000, 10000];
+ var levelBtn = new LevelButton(nextLevel, levelCosts[nextLevel - 1]);
+ levelBtn.x = 1024;
+ levelBtn.y = 1800;
+ game.addChild(levelBtn);
+ levelButtons.push(levelBtn);
+ }
+}
+function updateUI() {
+ coinsText.setText(coins.toFixed(2) + ' BTC');
+ levelText.setText('Level ' + currentLevel);
+ saveGame();
+}
+function saveGame() {
+ storage.coins = coins;
+ storage.currentLevel = currentLevel;
+ storage.miningRigLevel = miningRigLevel;
+ storage.miningEfficiency = miningEfficiency;
+}
+// Initialize game
+setupUI();
+setupLevel();
+// Game update loop
+game.update = function () {
+ // Update task buttons
+ for (var i = 0; i < taskButtons.length; i++) {
+ taskButtons[i].update();
+ }
+ // Auto-mine every 3 seconds
+ if (LK.ticks % 180 === 0) {
+ var autoEarn = miningRigs.length * miningEfficiency * 0.1;
+ coins += autoEarn;
+ // Animate rigs
+ for (var i = 0; i < miningRigs.length; i++) {
+ miningRigs[i].animate();
+ }
+ updateUI();
+ }
+};
\ No newline at end of file