Code edit (4 edits merged)
Please save this source code
User prompt
remove the bar says 10/10
User prompt
remove health bar from top side and make it bigger the down side one. Do more attractive and good number text style
User prompt
Increase your health bar too
User prompt
Enlarge the monsters to fit the screen. Make it look nice on the eye
User prompt
use backgorund as a background
User prompt
change monster2,3,4,5 height to 600
User prompt
Change monster2,3,4,5, width to 400
Code edit (1 edits merged)
Please save this source code
User prompt
fix the problem
User prompt
it have to switch when a monster dies. Do not use any monster prefab just use monster1 monster2 monster3 monster4 monster5 in assets section.
User prompt
Use the monsters I call monsters in the Assets section and when each one dies, the other one takes its place.
User prompt
when i killed a monster it should be spawn different mosnter
Code edit (1 edits merged)
Please save this source code
User prompt
Monster Tap Frenzy
Initial prompt
make me a clicker game. make an area in the middle of the screen and have monsters spawn there. Every time a spawn occurs, a new one will spawn when killed. Add hit animation and add health to monsters.
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Monster class
var Monster = Container.expand(function () {
var self = Container.call(this);
// Monster main body
var monsterBody = self.attachAsset('monster', {
anchorX: 0.5,
anchorY: 0.5
});
// Monster hit overlay (hidden by default)
var monsterHit = self.attachAsset('monsterHit', {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0
});
// Health bar background
var healthBarBg = self.attachAsset('healthBarBg', {
anchorX: 0.5,
anchorY: 1,
y: 240 // 400/2 + 40
});
// Health bar foreground
var healthBarFg = self.attachAsset('healthBarFg', {
anchorX: 0.5,
anchorY: 1,
y: 240
});
// Health values
self.maxHealth = 10;
self.health = self.maxHealth;
// Update health bar width
self.updateHealthBar = function () {
// Clamp health
if (self.health < 0) self.health = 0;
if (self.health > self.maxHealth) self.health = self.maxHealth;
// Set width proportional to health
healthBarFg.width = 300 * (self.health / self.maxHealth);
};
// Hit animation
self.hitAnim = function () {
// Show hit overlay quickly, then fade out
monsterHit.alpha = 0.6;
tween(monsterHit, {
alpha: 0
}, {
duration: 180,
easing: tween.linear
});
// Slight scale pop
tween.stop(monsterBody, {
scaleX: true,
scaleY: true
});
monsterBody.scaleX = 1.1;
monsterBody.scaleY = 1.1;
tween(monsterBody, {
scaleX: 1,
scaleY: 1
}, {
duration: 120,
easing: tween.easeOut
});
};
// Take damage
self.takeDamage = function (amount) {
self.health -= amount;
if (self.health < 0) self.health = 0;
self.updateHealthBar();
self.hitAnim();
LK.getSound('hit').play();
};
// Reset monster health
self.resetHealth = function (newMax) {
self.maxHealth = newMax;
self.health = self.maxHealth;
self.updateHealthBar();
};
// On tap/click
self.down = function (x, y, obj) {
self.takeDamage(1);
};
// Initialize health bar
self.updateHealthBar();
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x181818
});
/****
* Game Code
****/
// Sound for hit
// Health bar foreground: green box
// Health bar background: gray box
// Monster hit overlay: red ellipse, same size, for hit flash
// Monster asset: a big green ellipse
// Score
var score = 0;
// Score text
var scoreTxt = new Text2('0', {
size: 120,
fill: "#fff"
});
scoreTxt.anchor.set(0.5, 0);
// Place at top center, but not in top 100px (avoid menu)
scoreTxt.y = 20;
LK.gui.top.addChild(scoreTxt);
// Center position for monster
var centerX = 2048 / 2;
var centerY = 2732 / 2;
// Current monster
var monster = null;
// Function to spawn a new monster
function spawnMonster() {
// Remove old monster if exists
if (monster) {
monster.destroy();
monster = null;
}
// Increase difficulty: every 10 monsters, +2 health
var baseHealth = 10 + Math.floor(score / 10) * 2;
monster = new Monster();
monster.x = centerX;
monster.y = centerY;
monster.resetHealth(baseHealth);
game.addChild(monster);
}
// Game update loop
game.update = function () {
if (!monster) return;
// If monster is dead, increment score and spawn new
if (monster.health <= 0) {
score += 1;
scoreTxt.setText(score);
spawnMonster();
}
};
// Start first monster
spawnMonster(); ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,151 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+// Monster class
+var Monster = Container.expand(function () {
+ var self = Container.call(this);
+ // Monster main body
+ var monsterBody = self.attachAsset('monster', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Monster hit overlay (hidden by default)
+ var monsterHit = self.attachAsset('monsterHit', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ alpha: 0
+ });
+ // Health bar background
+ var healthBarBg = self.attachAsset('healthBarBg', {
+ anchorX: 0.5,
+ anchorY: 1,
+ y: 240 // 400/2 + 40
+ });
+ // Health bar foreground
+ var healthBarFg = self.attachAsset('healthBarFg', {
+ anchorX: 0.5,
+ anchorY: 1,
+ y: 240
+ });
+ // Health values
+ self.maxHealth = 10;
+ self.health = self.maxHealth;
+ // Update health bar width
+ self.updateHealthBar = function () {
+ // Clamp health
+ if (self.health < 0) self.health = 0;
+ if (self.health > self.maxHealth) self.health = self.maxHealth;
+ // Set width proportional to health
+ healthBarFg.width = 300 * (self.health / self.maxHealth);
+ };
+ // Hit animation
+ self.hitAnim = function () {
+ // Show hit overlay quickly, then fade out
+ monsterHit.alpha = 0.6;
+ tween(monsterHit, {
+ alpha: 0
+ }, {
+ duration: 180,
+ easing: tween.linear
+ });
+ // Slight scale pop
+ tween.stop(monsterBody, {
+ scaleX: true,
+ scaleY: true
+ });
+ monsterBody.scaleX = 1.1;
+ monsterBody.scaleY = 1.1;
+ tween(monsterBody, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 120,
+ easing: tween.easeOut
+ });
+ };
+ // Take damage
+ self.takeDamage = function (amount) {
+ self.health -= amount;
+ if (self.health < 0) self.health = 0;
+ self.updateHealthBar();
+ self.hitAnim();
+ LK.getSound('hit').play();
+ };
+ // Reset monster health
+ self.resetHealth = function (newMax) {
+ self.maxHealth = newMax;
+ self.health = self.maxHealth;
+ self.updateHealthBar();
+ };
+ // On tap/click
+ self.down = function (x, y, obj) {
+ self.takeDamage(1);
+ };
+ // Initialize health bar
+ self.updateHealthBar();
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x181818
+});
+
+/****
+* Game Code
+****/
+// Sound for hit
+// Health bar foreground: green box
+// Health bar background: gray box
+// Monster hit overlay: red ellipse, same size, for hit flash
+// Monster asset: a big green ellipse
+// Score
+var score = 0;
+// Score text
+var scoreTxt = new Text2('0', {
+ size: 120,
+ fill: "#fff"
+});
+scoreTxt.anchor.set(0.5, 0);
+// Place at top center, but not in top 100px (avoid menu)
+scoreTxt.y = 20;
+LK.gui.top.addChild(scoreTxt);
+// Center position for monster
+var centerX = 2048 / 2;
+var centerY = 2732 / 2;
+// Current monster
+var monster = null;
+// Function to spawn a new monster
+function spawnMonster() {
+ // Remove old monster if exists
+ if (monster) {
+ monster.destroy();
+ monster = null;
+ }
+ // Increase difficulty: every 10 monsters, +2 health
+ var baseHealth = 10 + Math.floor(score / 10) * 2;
+ monster = new Monster();
+ monster.x = centerX;
+ monster.y = centerY;
+ monster.resetHealth(baseHealth);
+ game.addChild(monster);
+}
+// Game update loop
+game.update = function () {
+ if (!monster) return;
+ // If monster is dead, increment score and spawn new
+ if (monster.health <= 0) {
+ score += 1;
+ scoreTxt.setText(score);
+ spawnMonster();
+ }
+};
+// Start first monster
+spawnMonster();
\ No newline at end of file