User prompt
Molti che seguono a me impongono infiniti
User prompt
Ora fai i motti che seguono eroi!
User prompt
mettono un pò di motoni infiniti
User prompt
aggiungere i motri 2
User prompt
potete aggiungere i morti ridossi eh 3
User prompt
Aggiungi motri, 4 motri
User prompt
Rimuovi i motri che mi seguono.
User prompt
Please fix the bug: 'ReferenceError: enemies is not defined' in or related to this line: 'for (var i = enemies.length - 1; i >= 0; i--) {' Line Number: 51
User prompt
Ti levarei i motri per favore di mo-
User prompt
...di rimuovere quelli che sono buggati i motri.
User prompt
I motri blu saranno pariti da eroi.
User prompt
potenti e inoltre quelli blu potenti, no no, dissutti però da eroi.
User prompt
levare enemy2
User prompt
con goddmotl del roie che attacca con motli saranno pariti, due motli e danno
User prompt
Eroi, attacca i motri, sono pariti due motri rosso e blu, grazie.
User prompt
Oltre ci saranno confitti, pariti, i due motri rosso e blu
User prompt
Tutti sono confitti dai eroi tanto spaditi
User prompt
I eroi, admetek i modi me te sonno parītīt i eroese tāk.
User prompt
Bonare in infinito ai motri, grazie.
User prompt
I motti saranno confetti, però saranno ponati.
User prompt
I motri putano fuoco con eroi.
User prompt
Aggiungi un eroe giocatore
User prompt
Potete cancellare tutto questo gioco, per favore.
User prompt
I motricoli ne ho due, ne ho uno... cioè, i motri sono pariti con l'errore che c'è sul pulsante che dice motri ripariti.
User prompt
clicca con un pulsante che usa God Motors
/**** * Classes ****/ // AxeAttack class representing the hero's axe attack var AxeAttack = Container.expand(function () { var self = Container.call(this); var axeGraphics = self.attachAsset('hero', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 10; self.update = function () { self.y -= self.speed; }; }); // Bullet class for projectiles var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 10; self.update = function () { self.y -= self.speed; }; }); // DmgAttack class representing the hero's attack with monsters var DmgAttack = Container.expand(function () { var self = Container.call(this); var dmgGraphics = self.attachAsset('goodMonster', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 10; self.update = function () { self.y -= self.speed; // Check for collision with enemies for (var i = enemies.length - 1; i >= 0; i--) { var enemy = enemies[i]; if (self.intersects(enemy)) { enemy.health -= hero.attack; self.destroy(); if (enemy.health <= 0) { enemy.destroy(); enemies.splice(i, 1); } break; } } }; }); // Enemy class representing foes in the game var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.health = 50; self.attack = 5; self.update = function () { // Update logic for enemy // Move towards the hero var dx = hero.x - self.x; var dy = hero.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 0) { self.x += dx / distance * 1.5; // Move towards hero at speed 1.5 self.y += dy / distance * 1.5; } // Check for collision with hero if (self.intersects(hero)) { hero.health -= self.attack; if (hero.health <= 0) { LK.showGameOver(); } } }; }); // Enemy2 class representing a new type of enemy var Enemy2 = Container.expand(function () { var self = Container.call(this); var enemy2Graphics = self.attachAsset('enemy2', { anchorX: 0.5, anchorY: 0.5 }); self.health = 75; self.attack = 10; self.update = function () { // Update logic for enemy2 // Move towards the hero var dx = hero.x - self.x; var dy = hero.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 0) { self.x += dx / distance * 1.0; // Move towards hero at speed 1.0 self.y += dy / distance * 1.0; } // Check for collision with hero if (self.intersects(hero)) { hero.health -= self.attack; if (hero.health <= 0) { LK.showGameOver(); } } }; }); // FireAttack class representing enemy2's fire attack var FireAttack = Container.expand(function () { var self = Container.call(this); var fireGraphics = self.attachAsset('fire', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.update = function () { self.y += self.speed; // Check for collision with hero if (self.intersects(hero)) { hero.health -= 5; // Damage hero self.destroy(); if (hero.health <= 0) { LK.showGameOver(); } } }; }); //<Assets used in the game will automatically appear here> //<Write imports for supported plugins here> // Hero class representing the player's character var Hero = Container.expand(function () { var self = Container.call(this); var heroGraphics = self.attachAsset('hero', { anchorX: 0.5, anchorY: 0.5 }); self.health = 100; self.attack = 10; self.update = function () { // Update logic for hero }; }); // HeroAttack class representing the hero's attack var HeroAttack = Container.expand(function () { var self = Container.call(this); var attackGraphics = self.attachAsset('hero', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 10; self.update = function () { self.y -= self.speed; }; }); // NeneMaie class representing a new type of enemy var NeneMaie = Container.expand(function () { var self = Container.call(this); var neneMaieGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.health = 60; self.attack = 8; self.update = function () { // Update logic for NeneMaie // Move towards the hero var dx = hero.x - self.x; var dy = hero.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 0) { self.x += dx / distance * 1.2; // Move towards hero at speed 1.2 self.y += dy / distance * 1.2; } // Check for collision with hero if (self.intersects(hero)) { hero.health -= self.attack; if (hero.health <= 0) { LK.showGameOver(); } } }; }); // PunzanteAttack class representing the hero's special attack var PunzanteAttack = Container.expand(function () { var self = Container.call(this); var punzanteGraphics = self.attachAsset('hero', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 15; self.update = function () { self.y -= self.speed; // Check for collision with enemies for (var i = enemies.length - 1; i >= 0; i--) { var enemy = enemies[i]; if (self.intersects(enemy)) { enemy.health -= hero.attack * 2; // Double damage self.destroy(); if (enemy.health <= 0) { enemy.destroy(); enemies.splice(i, 1); } break; } } }; }); // TraiRossi class representing a new type of enemy var TraiRossi = Container.expand(function () { var self = Container.call(this); var traiRossiGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.health = 70; self.attack = 7; self.update = function () { // Update logic for TraiRossi // Move towards the hero var dx = hero.x - self.x; var dy = hero.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 0) { self.x += dx / distance * 1.3; // Move towards hero at speed 1.3 self.y += dy / distance * 1.3; } // Check for collision with hero if (self.intersects(hero)) { hero.health -= self.attack; if (hero.health <= 0) { LK.showGameOver(); } } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ // Add background image to the game var background = LK.getAsset('background', { anchorX: 0.5, anchorY: 0.5 }); background.x = 2048 / 2; background.y = 2732 / 2; game.addChild(background); // Add button to trigger God Motors attack var godMotorsButton = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5 }); godMotorsButton.x = 2048 / 2; godMotorsButton.y = 2732 - 100; game.addChild(godMotorsButton); godMotorsButton.down = function (x, y, obj) { // Trigger God Motors attack var newDmgAttack = new DmgAttack(); newDmgAttack.x = hero.x; newDmgAttack.y = hero.y - hero.height / 2; heroAttacks.push(newDmgAttack); game.addChild(newDmgAttack); }; // Initialize hero, enemies, and enemy2 var hero = game.addChild(new Hero()); hero.x = 2048 / 2; hero.y = 2732 - 200; var enemies = []; for (var i = 0; i < 5; i++) { var enemy = new Enemy(); enemy.x = 400 + i * 300; enemy.y = 200; enemies.push(enemy); game.addChild(enemy); } var enemies2 = []; for (var j = 0; j < 3; j++) { var enemy2 = new Enemy2(); enemy2.x = 500 + j * 400; enemy2.y = 300; enemies2.push(enemy2); game.addChild(enemy2); } // Initialize NeneMaie instances var neneMaies = []; for (var k = 0; k < 4; k++) { var neneMaie = new NeneMaie(); neneMaie.x = 600 + k * 350; neneMaie.y = 250; neneMaies.push(neneMaie); game.addChild(neneMaie); } // Initialize TraiRossi instances var traiRossi = []; for (var l = 0; l < 3; l++) { var traiRosso = new TraiRossi(); traiRosso.x = 700 + l * 300; traiRosso.y = 350; traiRossi.push(traiRosso); game.addChild(traiRosso); } // Initialize hero's attack array var heroAttacks = []; // Initialize goodMonsters array var goodMonsters = []; // Handle game updates game.update = function () { // Update enemies hero.update(); // Update enemies for (var i = enemies.length - 1; i >= 0; i--) { var enemy = enemies[i]; enemy.update(); // Check for collision with hero if (hero.intersects(enemy)) { hero.health -= enemy.attack; enemy.health -= hero.attack; if (hero.health <= 0) { LK.showGameOver(); } if (enemy.health <= 0) { enemy.destroy(); enemies.splice(i, 1); } } } // Update enemies2 for (var j = enemies2.length - 1; j >= 0; j--) { var enemy2 = enemies2[j]; enemy2.update(); // Check for collision with hero if (hero.intersects(enemy2)) { hero.health -= enemy2.attack; enemy2.health -= hero.attack; if (hero.health <= 0) { LK.showGameOver(); } if (enemy2.health <= 0) { enemy2.destroy(); enemies2.splice(j, 1); } } // Fire attack from enemy2 if (LK.ticks % 60 == 0) { var fireAttack = new FireAttack(); fireAttack.x = enemy2.x; fireAttack.y = enemy2.y + enemy2.height / 2; game.addChild(fireAttack); } } // Update hero's attack on all monsters for (var j = heroAttacks.length - 1; j >= 0; j--) { var attack = heroAttacks[j]; attack.update(); // Check for collision with enemies for (var i = enemies.length - 1; i >= 0; i--) { var enemy = enemies[i]; if (attack.intersects(enemy)) { enemy.health -= hero.attack; attack.destroy(); heroAttacks.splice(j, 1); if (enemy.health <= 0) { enemy.destroy(); enemies.splice(i, 1); } break; } } // Check for collision with enemy2 for (var k = enemies2.length - 1; k >= 0; k--) { var enemy2 = enemies2[k]; if (attack.intersects(enemy2)) { enemy2.health -= hero.attack; attack.destroy(); heroAttacks.splice(j, 1); if (enemy2.health <= 0) { enemy2.destroy(); enemies2.splice(k, 1); } break; } } // Check for collision with NeneMaies for (var m = neneMaies.length - 1; m >= 0; m--) { var neneMaie = neneMaies[m]; if (attack.intersects(neneMaie)) { neneMaie.health -= hero.attack; attack.destroy(); heroAttacks.splice(j, 1); if (neneMaie.health <= 0) { neneMaie.destroy(); neneMaies.splice(m, 1); } break; } } // Check for collision with TraiRossi for (var n = traiRossi.length - 1; n >= 0; n--) { var traiRosso = traiRossi[n]; if (attack.intersects(traiRosso)) { traiRosso.health -= hero.attack; attack.destroy(); heroAttacks.splice(j, 1); if (traiRosso.health <= 0) { traiRosso.destroy(); traiRossi.splice(n, 1); } break; } } // Check for collision with good monsters for (var p = goodMonsters.length - 1; p >= 0; p--) { var goodMonster = goodMonsters[p]; if (attack.intersects(goodMonster)) { goodMonster.destroy(); goodMonsters.splice(p, 1); attack.destroy(); heroAttacks.splice(j, 1); break; } } // Remove off-screen attacks if (attack.y < -50) { attack.destroy(); heroAttacks.splice(j, 1); } } // Update NeneMaies for (var k = neneMaies.length - 1; k >= 0; k--) { var neneMaie = neneMaies[k]; neneMaie.update(); // Check for collision with hero if (hero.intersects(neneMaie)) { hero.health -= neneMaie.attack; neneMaie.health -= hero.attack; if (hero.health <= 0) { LK.showGameOver(); } if (neneMaie.health <= 0) { neneMaie.destroy(); neneMaies.splice(k, 1); } } } // Update TraiRossi for (var l = traiRossi.length - 1; l >= 0; l--) { var traiRosso = traiRossi[l]; traiRosso.update(); // Check for collision with hero if (hero.intersects(traiRosso)) { hero.health -= traiRosso.attack; traiRosso.health -= hero.attack; if (hero.health <= 0) { LK.showGameOver(); } if (traiRosso.health <= 0) { traiRosso.destroy(); traiRossi.splice(l, 1); } } // Fire attack from TraiRossi if (LK.ticks % 90 == 0) { var fireAttack = new FireAttack(); fireAttack.x = traiRosso.x; fireAttack.y = traiRosso.y + traiRosso.height / 2; game.addChild(fireAttack); } } // Update hero's PunzanteAttack for (var j = heroAttacks.length - 1; j >= 0; j--) { var attack = heroAttacks[j]; attack.update(); // Remove off-screen attacks if (attack.y < -50) { attack.destroy(); heroAttacks.splice(j, 1); } } // Fire hero's attack if (LK.ticks % 30 == 0) { var newAttack = new HeroAttack(); newAttack.x = hero.x; newAttack.y = hero.y - hero.height / 2; heroAttacks.push(newAttack); game.addChild(newAttack); } }; // Handle touch events for hero movement game.down = function (x, y, obj) { hero.x = x; hero.y = y; // Fire hero's PunzanteAttack on click var newPunzanteAttack = new PunzanteAttack(); newPunzanteAttack.x = hero.x; newPunzanteAttack.y = hero.y - hero.height / 2; heroAttacks.push(newPunzanteAttack); game.addChild(newPunzanteAttack); // Check for collision with good monsters for (var p = goodMonsters.length - 1; p >= 0; p--) { var goodMonster = goodMonsters[p]; if (hero.intersects(goodMonster)) { goodMonster.destroy(); goodMonsters.splice(p, 1); } } }; game.move = function (x, y, obj) { hero.x = x; hero.y = y; }; game.up = function (x, y, obj) { // Handle touch release if needed }; // Display hero health var healthTxt = new Text2('Health: ' + hero.health, { size: 100, fill: 0xFFFFFF }); healthTxt.anchor.set(0.5, 0); LK.gui.top.addChild(healthTxt); // Update health display game.update = function () { healthTxt.setText('Health: ' + hero.health); if (hero.health <= 0) { LK.showGameOver(); } }; // Add the health text to the GUI overlay LK.gui.top.addChild(healthTxt);
/****
* Classes
****/
// AxeAttack class representing the hero's axe attack
var AxeAttack = Container.expand(function () {
var self = Container.call(this);
var axeGraphics = self.attachAsset('hero', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.update = function () {
self.y -= self.speed;
};
});
// Bullet class for projectiles
var Bullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.update = function () {
self.y -= self.speed;
};
});
// DmgAttack class representing the hero's attack with monsters
var DmgAttack = Container.expand(function () {
var self = Container.call(this);
var dmgGraphics = self.attachAsset('goodMonster', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.update = function () {
self.y -= self.speed;
// Check for collision with enemies
for (var i = enemies.length - 1; i >= 0; i--) {
var enemy = enemies[i];
if (self.intersects(enemy)) {
enemy.health -= hero.attack;
self.destroy();
if (enemy.health <= 0) {
enemy.destroy();
enemies.splice(i, 1);
}
break;
}
}
};
});
// Enemy class representing foes in the game
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.health = 50;
self.attack = 5;
self.update = function () {
// Update logic for enemy
// Move towards the hero
var dx = hero.x - self.x;
var dy = hero.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 0) {
self.x += dx / distance * 1.5; // Move towards hero at speed 1.5
self.y += dy / distance * 1.5;
}
// Check for collision with hero
if (self.intersects(hero)) {
hero.health -= self.attack;
if (hero.health <= 0) {
LK.showGameOver();
}
}
};
});
// Enemy2 class representing a new type of enemy
var Enemy2 = Container.expand(function () {
var self = Container.call(this);
var enemy2Graphics = self.attachAsset('enemy2', {
anchorX: 0.5,
anchorY: 0.5
});
self.health = 75;
self.attack = 10;
self.update = function () {
// Update logic for enemy2
// Move towards the hero
var dx = hero.x - self.x;
var dy = hero.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 0) {
self.x += dx / distance * 1.0; // Move towards hero at speed 1.0
self.y += dy / distance * 1.0;
}
// Check for collision with hero
if (self.intersects(hero)) {
hero.health -= self.attack;
if (hero.health <= 0) {
LK.showGameOver();
}
}
};
});
// FireAttack class representing enemy2's fire attack
var FireAttack = Container.expand(function () {
var self = Container.call(this);
var fireGraphics = self.attachAsset('fire', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.update = function () {
self.y += self.speed;
// Check for collision with hero
if (self.intersects(hero)) {
hero.health -= 5; // Damage hero
self.destroy();
if (hero.health <= 0) {
LK.showGameOver();
}
}
};
});
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Hero class representing the player's character
var Hero = Container.expand(function () {
var self = Container.call(this);
var heroGraphics = self.attachAsset('hero', {
anchorX: 0.5,
anchorY: 0.5
});
self.health = 100;
self.attack = 10;
self.update = function () {
// Update logic for hero
};
});
// HeroAttack class representing the hero's attack
var HeroAttack = Container.expand(function () {
var self = Container.call(this);
var attackGraphics = self.attachAsset('hero', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.update = function () {
self.y -= self.speed;
};
});
// NeneMaie class representing a new type of enemy
var NeneMaie = Container.expand(function () {
var self = Container.call(this);
var neneMaieGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.health = 60;
self.attack = 8;
self.update = function () {
// Update logic for NeneMaie
// Move towards the hero
var dx = hero.x - self.x;
var dy = hero.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 0) {
self.x += dx / distance * 1.2; // Move towards hero at speed 1.2
self.y += dy / distance * 1.2;
}
// Check for collision with hero
if (self.intersects(hero)) {
hero.health -= self.attack;
if (hero.health <= 0) {
LK.showGameOver();
}
}
};
});
// PunzanteAttack class representing the hero's special attack
var PunzanteAttack = Container.expand(function () {
var self = Container.call(this);
var punzanteGraphics = self.attachAsset('hero', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 15;
self.update = function () {
self.y -= self.speed;
// Check for collision with enemies
for (var i = enemies.length - 1; i >= 0; i--) {
var enemy = enemies[i];
if (self.intersects(enemy)) {
enemy.health -= hero.attack * 2; // Double damage
self.destroy();
if (enemy.health <= 0) {
enemy.destroy();
enemies.splice(i, 1);
}
break;
}
}
};
});
// TraiRossi class representing a new type of enemy
var TraiRossi = Container.expand(function () {
var self = Container.call(this);
var traiRossiGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.health = 70;
self.attack = 7;
self.update = function () {
// Update logic for TraiRossi
// Move towards the hero
var dx = hero.x - self.x;
var dy = hero.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 0) {
self.x += dx / distance * 1.3; // Move towards hero at speed 1.3
self.y += dy / distance * 1.3;
}
// Check for collision with hero
if (self.intersects(hero)) {
hero.health -= self.attack;
if (hero.health <= 0) {
LK.showGameOver();
}
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
// Add background image to the game
var background = LK.getAsset('background', {
anchorX: 0.5,
anchorY: 0.5
});
background.x = 2048 / 2;
background.y = 2732 / 2;
game.addChild(background);
// Add button to trigger God Motors attack
var godMotorsButton = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5
});
godMotorsButton.x = 2048 / 2;
godMotorsButton.y = 2732 - 100;
game.addChild(godMotorsButton);
godMotorsButton.down = function (x, y, obj) {
// Trigger God Motors attack
var newDmgAttack = new DmgAttack();
newDmgAttack.x = hero.x;
newDmgAttack.y = hero.y - hero.height / 2;
heroAttacks.push(newDmgAttack);
game.addChild(newDmgAttack);
};
// Initialize hero, enemies, and enemy2
var hero = game.addChild(new Hero());
hero.x = 2048 / 2;
hero.y = 2732 - 200;
var enemies = [];
for (var i = 0; i < 5; i++) {
var enemy = new Enemy();
enemy.x = 400 + i * 300;
enemy.y = 200;
enemies.push(enemy);
game.addChild(enemy);
}
var enemies2 = [];
for (var j = 0; j < 3; j++) {
var enemy2 = new Enemy2();
enemy2.x = 500 + j * 400;
enemy2.y = 300;
enemies2.push(enemy2);
game.addChild(enemy2);
}
// Initialize NeneMaie instances
var neneMaies = [];
for (var k = 0; k < 4; k++) {
var neneMaie = new NeneMaie();
neneMaie.x = 600 + k * 350;
neneMaie.y = 250;
neneMaies.push(neneMaie);
game.addChild(neneMaie);
}
// Initialize TraiRossi instances
var traiRossi = [];
for (var l = 0; l < 3; l++) {
var traiRosso = new TraiRossi();
traiRosso.x = 700 + l * 300;
traiRosso.y = 350;
traiRossi.push(traiRosso);
game.addChild(traiRosso);
}
// Initialize hero's attack array
var heroAttacks = [];
// Initialize goodMonsters array
var goodMonsters = [];
// Handle game updates
game.update = function () {
// Update enemies
hero.update();
// Update enemies
for (var i = enemies.length - 1; i >= 0; i--) {
var enemy = enemies[i];
enemy.update();
// Check for collision with hero
if (hero.intersects(enemy)) {
hero.health -= enemy.attack;
enemy.health -= hero.attack;
if (hero.health <= 0) {
LK.showGameOver();
}
if (enemy.health <= 0) {
enemy.destroy();
enemies.splice(i, 1);
}
}
}
// Update enemies2
for (var j = enemies2.length - 1; j >= 0; j--) {
var enemy2 = enemies2[j];
enemy2.update();
// Check for collision with hero
if (hero.intersects(enemy2)) {
hero.health -= enemy2.attack;
enemy2.health -= hero.attack;
if (hero.health <= 0) {
LK.showGameOver();
}
if (enemy2.health <= 0) {
enemy2.destroy();
enemies2.splice(j, 1);
}
}
// Fire attack from enemy2
if (LK.ticks % 60 == 0) {
var fireAttack = new FireAttack();
fireAttack.x = enemy2.x;
fireAttack.y = enemy2.y + enemy2.height / 2;
game.addChild(fireAttack);
}
}
// Update hero's attack on all monsters
for (var j = heroAttacks.length - 1; j >= 0; j--) {
var attack = heroAttacks[j];
attack.update();
// Check for collision with enemies
for (var i = enemies.length - 1; i >= 0; i--) {
var enemy = enemies[i];
if (attack.intersects(enemy)) {
enemy.health -= hero.attack;
attack.destroy();
heroAttacks.splice(j, 1);
if (enemy.health <= 0) {
enemy.destroy();
enemies.splice(i, 1);
}
break;
}
}
// Check for collision with enemy2
for (var k = enemies2.length - 1; k >= 0; k--) {
var enemy2 = enemies2[k];
if (attack.intersects(enemy2)) {
enemy2.health -= hero.attack;
attack.destroy();
heroAttacks.splice(j, 1);
if (enemy2.health <= 0) {
enemy2.destroy();
enemies2.splice(k, 1);
}
break;
}
}
// Check for collision with NeneMaies
for (var m = neneMaies.length - 1; m >= 0; m--) {
var neneMaie = neneMaies[m];
if (attack.intersects(neneMaie)) {
neneMaie.health -= hero.attack;
attack.destroy();
heroAttacks.splice(j, 1);
if (neneMaie.health <= 0) {
neneMaie.destroy();
neneMaies.splice(m, 1);
}
break;
}
}
// Check for collision with TraiRossi
for (var n = traiRossi.length - 1; n >= 0; n--) {
var traiRosso = traiRossi[n];
if (attack.intersects(traiRosso)) {
traiRosso.health -= hero.attack;
attack.destroy();
heroAttacks.splice(j, 1);
if (traiRosso.health <= 0) {
traiRosso.destroy();
traiRossi.splice(n, 1);
}
break;
}
}
// Check for collision with good monsters
for (var p = goodMonsters.length - 1; p >= 0; p--) {
var goodMonster = goodMonsters[p];
if (attack.intersects(goodMonster)) {
goodMonster.destroy();
goodMonsters.splice(p, 1);
attack.destroy();
heroAttacks.splice(j, 1);
break;
}
}
// Remove off-screen attacks
if (attack.y < -50) {
attack.destroy();
heroAttacks.splice(j, 1);
}
}
// Update NeneMaies
for (var k = neneMaies.length - 1; k >= 0; k--) {
var neneMaie = neneMaies[k];
neneMaie.update();
// Check for collision with hero
if (hero.intersects(neneMaie)) {
hero.health -= neneMaie.attack;
neneMaie.health -= hero.attack;
if (hero.health <= 0) {
LK.showGameOver();
}
if (neneMaie.health <= 0) {
neneMaie.destroy();
neneMaies.splice(k, 1);
}
}
}
// Update TraiRossi
for (var l = traiRossi.length - 1; l >= 0; l--) {
var traiRosso = traiRossi[l];
traiRosso.update();
// Check for collision with hero
if (hero.intersects(traiRosso)) {
hero.health -= traiRosso.attack;
traiRosso.health -= hero.attack;
if (hero.health <= 0) {
LK.showGameOver();
}
if (traiRosso.health <= 0) {
traiRosso.destroy();
traiRossi.splice(l, 1);
}
}
// Fire attack from TraiRossi
if (LK.ticks % 90 == 0) {
var fireAttack = new FireAttack();
fireAttack.x = traiRosso.x;
fireAttack.y = traiRosso.y + traiRosso.height / 2;
game.addChild(fireAttack);
}
}
// Update hero's PunzanteAttack
for (var j = heroAttacks.length - 1; j >= 0; j--) {
var attack = heroAttacks[j];
attack.update();
// Remove off-screen attacks
if (attack.y < -50) {
attack.destroy();
heroAttacks.splice(j, 1);
}
}
// Fire hero's attack
if (LK.ticks % 30 == 0) {
var newAttack = new HeroAttack();
newAttack.x = hero.x;
newAttack.y = hero.y - hero.height / 2;
heroAttacks.push(newAttack);
game.addChild(newAttack);
}
};
// Handle touch events for hero movement
game.down = function (x, y, obj) {
hero.x = x;
hero.y = y;
// Fire hero's PunzanteAttack on click
var newPunzanteAttack = new PunzanteAttack();
newPunzanteAttack.x = hero.x;
newPunzanteAttack.y = hero.y - hero.height / 2;
heroAttacks.push(newPunzanteAttack);
game.addChild(newPunzanteAttack);
// Check for collision with good monsters
for (var p = goodMonsters.length - 1; p >= 0; p--) {
var goodMonster = goodMonsters[p];
if (hero.intersects(goodMonster)) {
goodMonster.destroy();
goodMonsters.splice(p, 1);
}
}
};
game.move = function (x, y, obj) {
hero.x = x;
hero.y = y;
};
game.up = function (x, y, obj) {
// Handle touch release if needed
};
// Display hero health
var healthTxt = new Text2('Health: ' + hero.health, {
size: 100,
fill: 0xFFFFFF
});
healthTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(healthTxt);
// Update health display
game.update = function () {
healthTxt.setText('Health: ' + hero.health);
if (hero.health <= 0) {
LK.showGameOver();
}
};
// Add the health text to the GUI overlay
LK.gui.top.addChild(healthTxt);
MG hero red and blu. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
monster dark red. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
monster blu. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
bullet red and blu. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
background red and blu. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
fire red. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows