Code edit (1 edits merged)
Please save this source code
User prompt
Bitcoin Mining Tycoon
User prompt
make a game which give 100 TH/s for bitcoin mining and give instant withdrawal to trust wallet BTC addres i need 100% real app
User prompt
Please continue polishing my design document.
Initial prompt
make a game which give 100 TH/s for bitcoin mining and give instant withdrawal to trust wallet BTC addres i nees 100% real app
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var MiningRig = Container.expand(function (rigType) {
var self = Container.call(this);
self.rigType = rigType || 'basic';
self.hashRate = self.rigType === 'basic' ? 1 : self.rigType === 'advanced' ? 5 : 25;
self.cost = self.rigType === 'basic' ? 10 : self.rigType === 'advanced' ? 100 : 1000;
self.lastMineTime = Date.now();
self.miningCooldown = 0;
var assetName = 'miner-' + self.rigType;
var rigGraphics = self.attachAsset(assetName, {
anchorX: 0.5,
anchorY: 0.5
});
// Hash rate display
self.hashText = new Text2(self.hashRate + ' TH/s', {
size: 24,
fill: 0xFFFFFF
});
self.hashText.anchor.set(0.5, 0);
self.hashText.y = rigGraphics.height / 2 + 10;
self.addChild(self.hashText);
self.update = function () {
var currentTime = Date.now();
var deltaTime = currentTime - self.lastMineTime;
// Generate coins based on hash rate (every second)
if (deltaTime >= 1000) {
var coinsGenerated = self.hashRate * 0.001; // 0.001 BTC per TH/s per second
totalBitcoins += coinsGenerated;
self.lastMineTime = currentTime;
// Create floating coin animation
self.createFloatingCoin();
}
// Mining cooldown for tap boost
if (self.miningCooldown > 0) {
self.miningCooldown--;
rigGraphics.tint = 0xffff00; // Yellow tint when boosted
} else {
rigGraphics.tint = 0xffffff; // Normal color
}
// Hash particles animation
if (LK.ticks % 30 === 0) {
self.createHashParticle();
}
};
self.createFloatingCoin = function () {
var coin = self.addChild(LK.getAsset('bitcoin-coin', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: 0,
alpha: 0.8
}));
tween(coin, {
y: -60,
alpha: 0
}, {
duration: 1500,
easing: tween.easeOut,
onFinish: function onFinish() {
coin.destroy();
}
});
};
self.createHashParticle = function () {
var particle = self.addChild(LK.getAsset('hash-particle', {
anchorX: 0.5,
anchorY: 0.5,
x: Math.random() * 60 - 30,
y: Math.random() * 40 - 20,
alpha: 0.7
}));
tween(particle, {
x: particle.x + (Math.random() * 40 - 20),
y: particle.y - 30,
alpha: 0
}, {
duration: 2000,
onFinish: function onFinish() {
particle.destroy();
}
});
};
self.boostMining = function () {
if (self.miningCooldown <= 0) {
var bonusCoins = self.hashRate * 0.01; // Tap bonus
totalBitcoins += bonusCoins;
self.miningCooldown = 120; // 2 second boost cooldown
LK.getSound('mining').play();
// Visual feedback
tween(self, {
scaleX: 1.1,
scaleY: 1.1
}, {
duration: 100,
onFinish: function onFinish() {
tween(self, {
scaleX: 1,
scaleY: 1
}, {
duration: 100
});
}
});
}
};
self.down = function (x, y, obj) {
self.boostMining();
};
return self;
});
var UpgradeButton = Container.expand(function (upgradeType, cost) {
var self = Container.call(this);
self.upgradeType = upgradeType;
self.cost = cost;
var buttonGraphics = self.attachAsset('upgrade-button', {
anchorX: 0.5,
anchorY: 0.5
});
self.buttonText = new Text2('Buy ' + upgradeType + '\n' + cost + ' BTC', {
size: 20,
fill: 0xFFFFFF
});
self.buttonText.anchor.set(0.5, 0.5);
self.addChild(self.buttonText);
self.update = function () {
// Enable/disable button based on available coins
if (totalBitcoins >= self.cost) {
buttonGraphics.tint = 0x38a169; // Green when affordable
buttonGraphics.alpha = 1;
} else {
buttonGraphics.tint = 0x718096; // Gray when not affordable
buttonGraphics.alpha = 0.5;
}
};
self.down = function (x, y, obj) {
if (totalBitcoins >= self.cost) {
totalBitcoins -= self.cost;
self.purchaseUpgrade();
LK.getSound('purchase').play();
}
};
self.purchaseUpgrade = function () {
if (self.upgradeType === 'Advanced Miner') {
var newRig = new MiningRig('advanced');
newRig.x = 300 + miners.length % 3 * 200;
newRig.y = 400 + Math.floor(miners.length / 3) * 150;
miners.push(newRig);
game.addChild(newRig);
self.cost *= 1.5; // Increase cost for next purchase
} else if (self.upgradeType === 'ASIC Miner') {
var newRig = new MiningRig('asic');
newRig.x = 300 + miners.length % 3 * 200;
newRig.y = 400 + Math.floor(miners.length / 3) * 150;
miners.push(newRig);
game.addChild(newRig);
self.cost *= 2; // Higher cost increase for ASIC
} else if (self.upgradeType === 'Basic Miner') {
var newRig = new MiningRig('basic');
newRig.x = 300 + miners.length % 3 * 200;
newRig.y = 400 + Math.floor(miners.length / 3) * 150;
miners.push(newRig);
game.addChild(newRig);
self.cost *= 1.2; // Small cost increase for basic
}
self.buttonText.setText('Buy ' + self.upgradeType + '\n' + Math.floor(self.cost * 100) / 100 + ' BTC');
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a202c
});
/****
* Game Code
****/
// Game variables
var totalBitcoins = storage.totalBitcoins || 0;
var totalHashRate = 0;
var miners = [];
var upgradeButtons = [];
var lastSaveTime = Date.now();
// UI Elements
var bitcoinDisplay = new Text2('0.000 BTC', {
size: 48,
fill: 0xF6AD55
});
bitcoinDisplay.anchor.set(0.5, 0);
LK.gui.top.addChild(bitcoinDisplay);
var hashRateDisplay = new Text2('0 TH/s', {
size: 32,
fill: 0x63B3ED
});
hashRateDisplay.anchor.set(0.5, 0);
hashRateDisplay.y = 60;
LK.gui.top.addChild(hashRateDisplay);
var titleText = new Text2('Bitcoin Mining Tycoon', {
size: 40,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0);
titleText.x = 1024;
titleText.y = 150;
game.addChild(titleText);
// Create initial mining rig
var firstRig = new MiningRig('basic');
firstRig.x = 500;
firstRig.y = 400;
miners.push(firstRig);
game.addChild(firstRig);
// Create upgrade buttons
var basicUpgrade = new UpgradeButton('Basic Miner', 10);
basicUpgrade.x = 200;
basicUpgrade.y = 2400;
upgradeButtons.push(basicUpgrade);
game.addChild(basicUpgrade);
var advancedUpgrade = new UpgradeButton('Advanced Miner', 100);
advancedUpgrade.x = 500;
advancedUpgrade.y = 2400;
upgradeButtons.push(advancedUpgrade);
game.addChild(advancedUpgrade);
var asicUpgrade = new UpgradeButton('ASIC Miner', 1000);
asicUpgrade.x = 800;
asicUpgrade.y = 2400;
upgradeButtons.push(asicUpgrade);
game.addChild(asicUpgrade);
// Instructions text
var instructionText = new Text2('Tap mining rigs to boost hash rate!\nBuy more miners to increase earnings!', {
size: 24,
fill: 0xA0AEC0
});
instructionText.anchor.set(0.5, 0);
instructionText.x = 1024;
instructionText.y = 250;
game.addChild(instructionText);
game.update = function () {
// Calculate total hash rate
totalHashRate = 0;
for (var i = 0; i < miners.length; i++) {
totalHashRate += miners[i].hashRate;
}
// Update displays
bitcoinDisplay.setText(Math.floor(totalBitcoins * 1000) / 1000 + ' BTC');
hashRateDisplay.setText(totalHashRate + ' TH/s');
// Update score for leaderboard (use hash rate as score)
LK.setScore(totalHashRate);
// Auto-save every 5 seconds
var currentTime = Date.now();
if (currentTime - lastSaveTime >= 5000) {
storage.totalBitcoins = totalBitcoins;
lastSaveTime = currentTime;
}
// Check win condition (1000 TH/s hash rate)
if (totalHashRate >= 1000) {
LK.showYouWin();
}
// Visual feedback for mining activity
if (LK.ticks % 180 === 0) {
// Every 3 seconds
LK.effects.flashObject(bitcoinDisplay, 0xf6ad55, 500);
}
}; /****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var MiningRig = Container.expand(function (rigType) {
var self = Container.call(this);
self.rigType = rigType || 'basic';
self.hashRate = self.rigType === 'basic' ? 1 : self.rigType === 'advanced' ? 5 : 25;
self.cost = self.rigType === 'basic' ? 10 : self.rigType === 'advanced' ? 100 : 1000;
self.lastMineTime = Date.now();
self.miningCooldown = 0;
var assetName = 'miner-' + self.rigType;
var rigGraphics = self.attachAsset(assetName, {
anchorX: 0.5,
anchorY: 0.5
});
// Hash rate display
self.hashText = new Text2(self.hashRate + ' TH/s', {
size: 24,
fill: 0xFFFFFF
});
self.hashText.anchor.set(0.5, 0);
self.hashText.y = rigGraphics.height / 2 + 10;
self.addChild(self.hashText);
self.update = function () {
var currentTime = Date.now();
var deltaTime = currentTime - self.lastMineTime;
// Generate coins based on hash rate (every second)
if (deltaTime >= 1000) {
var coinsGenerated = self.hashRate * 0.001; // 0.001 BTC per TH/s per second
totalBitcoins += coinsGenerated;
self.lastMineTime = currentTime;
// Create floating coin animation
self.createFloatingCoin();
}
// Mining cooldown for tap boost
if (self.miningCooldown > 0) {
self.miningCooldown--;
rigGraphics.tint = 0xffff00; // Yellow tint when boosted
} else {
rigGraphics.tint = 0xffffff; // Normal color
}
// Hash particles animation
if (LK.ticks % 30 === 0) {
self.createHashParticle();
}
};
self.createFloatingCoin = function () {
var coin = self.addChild(LK.getAsset('bitcoin-coin', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: 0,
alpha: 0.8
}));
tween(coin, {
y: -60,
alpha: 0
}, {
duration: 1500,
easing: tween.easeOut,
onFinish: function onFinish() {
coin.destroy();
}
});
};
self.createHashParticle = function () {
var particle = self.addChild(LK.getAsset('hash-particle', {
anchorX: 0.5,
anchorY: 0.5,
x: Math.random() * 60 - 30,
y: Math.random() * 40 - 20,
alpha: 0.7
}));
tween(particle, {
x: particle.x + (Math.random() * 40 - 20),
y: particle.y - 30,
alpha: 0
}, {
duration: 2000,
onFinish: function onFinish() {
particle.destroy();
}
});
};
self.boostMining = function () {
if (self.miningCooldown <= 0) {
var bonusCoins = self.hashRate * 0.01; // Tap bonus
totalBitcoins += bonusCoins;
self.miningCooldown = 120; // 2 second boost cooldown
LK.getSound('mining').play();
// Visual feedback
tween(self, {
scaleX: 1.1,
scaleY: 1.1
}, {
duration: 100,
onFinish: function onFinish() {
tween(self, {
scaleX: 1,
scaleY: 1
}, {
duration: 100
});
}
});
}
};
self.down = function (x, y, obj) {
self.boostMining();
};
return self;
});
var UpgradeButton = Container.expand(function (upgradeType, cost) {
var self = Container.call(this);
self.upgradeType = upgradeType;
self.cost = cost;
var buttonGraphics = self.attachAsset('upgrade-button', {
anchorX: 0.5,
anchorY: 0.5
});
self.buttonText = new Text2('Buy ' + upgradeType + '\n' + cost + ' BTC', {
size: 20,
fill: 0xFFFFFF
});
self.buttonText.anchor.set(0.5, 0.5);
self.addChild(self.buttonText);
self.update = function () {
// Enable/disable button based on available coins
if (totalBitcoins >= self.cost) {
buttonGraphics.tint = 0x38a169; // Green when affordable
buttonGraphics.alpha = 1;
} else {
buttonGraphics.tint = 0x718096; // Gray when not affordable
buttonGraphics.alpha = 0.5;
}
};
self.down = function (x, y, obj) {
if (totalBitcoins >= self.cost) {
totalBitcoins -= self.cost;
self.purchaseUpgrade();
LK.getSound('purchase').play();
}
};
self.purchaseUpgrade = function () {
if (self.upgradeType === 'Advanced Miner') {
var newRig = new MiningRig('advanced');
newRig.x = 300 + miners.length % 3 * 200;
newRig.y = 400 + Math.floor(miners.length / 3) * 150;
miners.push(newRig);
game.addChild(newRig);
self.cost *= 1.5; // Increase cost for next purchase
} else if (self.upgradeType === 'ASIC Miner') {
var newRig = new MiningRig('asic');
newRig.x = 300 + miners.length % 3 * 200;
newRig.y = 400 + Math.floor(miners.length / 3) * 150;
miners.push(newRig);
game.addChild(newRig);
self.cost *= 2; // Higher cost increase for ASIC
} else if (self.upgradeType === 'Basic Miner') {
var newRig = new MiningRig('basic');
newRig.x = 300 + miners.length % 3 * 200;
newRig.y = 400 + Math.floor(miners.length / 3) * 150;
miners.push(newRig);
game.addChild(newRig);
self.cost *= 1.2; // Small cost increase for basic
}
self.buttonText.setText('Buy ' + self.upgradeType + '\n' + Math.floor(self.cost * 100) / 100 + ' BTC');
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a202c
});
/****
* Game Code
****/
// Game variables
var totalBitcoins = storage.totalBitcoins || 0;
var totalHashRate = 0;
var miners = [];
var upgradeButtons = [];
var lastSaveTime = Date.now();
// UI Elements
var bitcoinDisplay = new Text2('0.000 BTC', {
size: 48,
fill: 0xF6AD55
});
bitcoinDisplay.anchor.set(0.5, 0);
LK.gui.top.addChild(bitcoinDisplay);
var hashRateDisplay = new Text2('0 TH/s', {
size: 32,
fill: 0x63B3ED
});
hashRateDisplay.anchor.set(0.5, 0);
hashRateDisplay.y = 60;
LK.gui.top.addChild(hashRateDisplay);
var titleText = new Text2('Bitcoin Mining Tycoon', {
size: 40,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0);
titleText.x = 1024;
titleText.y = 150;
game.addChild(titleText);
// Create initial mining rig
var firstRig = new MiningRig('basic');
firstRig.x = 500;
firstRig.y = 400;
miners.push(firstRig);
game.addChild(firstRig);
// Create upgrade buttons
var basicUpgrade = new UpgradeButton('Basic Miner', 10);
basicUpgrade.x = 200;
basicUpgrade.y = 2400;
upgradeButtons.push(basicUpgrade);
game.addChild(basicUpgrade);
var advancedUpgrade = new UpgradeButton('Advanced Miner', 100);
advancedUpgrade.x = 500;
advancedUpgrade.y = 2400;
upgradeButtons.push(advancedUpgrade);
game.addChild(advancedUpgrade);
var asicUpgrade = new UpgradeButton('ASIC Miner', 1000);
asicUpgrade.x = 800;
asicUpgrade.y = 2400;
upgradeButtons.push(asicUpgrade);
game.addChild(asicUpgrade);
// Instructions text
var instructionText = new Text2('Tap mining rigs to boost hash rate!\nBuy more miners to increase earnings!', {
size: 24,
fill: 0xA0AEC0
});
instructionText.anchor.set(0.5, 0);
instructionText.x = 1024;
instructionText.y = 250;
game.addChild(instructionText);
game.update = function () {
// Calculate total hash rate
totalHashRate = 0;
for (var i = 0; i < miners.length; i++) {
totalHashRate += miners[i].hashRate;
}
// Update displays
bitcoinDisplay.setText(Math.floor(totalBitcoins * 1000) / 1000 + ' BTC');
hashRateDisplay.setText(totalHashRate + ' TH/s');
// Update score for leaderboard (use hash rate as score)
LK.setScore(totalHashRate);
// Auto-save every 5 seconds
var currentTime = Date.now();
if (currentTime - lastSaveTime >= 5000) {
storage.totalBitcoins = totalBitcoins;
lastSaveTime = currentTime;
}
// Check win condition (1000 TH/s hash rate)
if (totalHashRate >= 1000) {
LK.showYouWin();
}
// Visual feedback for mining activity
if (LK.ticks % 180 === 0) {
// Every 3 seconds
LK.effects.flashObject(bitcoinDisplay, 0xf6ad55, 500);
}
};