User prompt
NOW THE CHARACTER OPTION WILL TAKE YOU TO ANOTHER MENU WHERE THERE WILL BE MORE ROBOTS APART FROM THE ONE WE HAVE
User prompt
NOW PUT AN OPTION TO CHANGE CHARACTERS IN THE MAIN MENU
User prompt
HAVE A START MENU
User prompt
LET THE BOSS BE AN ENEMY APART FROM THE NORMAL ONES
User prompt
NOW SPAWNS A BOSS EVERY 5 WAVES
User prompt
The light blue cube will be a robot and the yellow balls will recharge a super ability and leave a score bar.
User prompt
that the blue cube is a robot and that you earn points by killing viruses
User prompt
Please fix the bug: 'TypeError: LK.effects.shakeScreen is not a function' in or related to this line: 'LK.effects.shakeScreen(5, 100);' Line Number: 413
User prompt
that the blue cube is a robot and that you earn points by killing viruses
User prompt
Please fix the bug: 'ReferenceError: playerMech is not defined' in or related to this line: 'if (playerMech) {' Line Number: 36
User prompt
You can make characters that are robots and enemies that are viruses.
User prompt
Generate the first version of the source code of my game: Mech Arena Battle. βͺπ‘ Consider importing and using the following plugins: @upit/tween.v1
User prompt
Mech Arena Battle
Initial prompt
robot fight
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var BossVirus = Container.expand(function () { var self = Container.call(this); var bossGraphics = self.attachAsset('bossVirus', { anchorX: 0.5, anchorY: 0.5 }); self.health = 300; self.maxHealth = 300; self.speed = 0.8; self.damage = 30; self.lastX = 0; self.lastY = 0; self.isBoss = true; // Tint boss dark red to distinguish from regular viruses bossGraphics.tint = 0x880000; self.update = function () { self.lastX = self.x; self.lastY = self.y; // Move towards player if (playerRobot) { var dx = playerRobot.x - self.x; var dy = playerRobot.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 0) { self.x += dx / distance * self.speed; self.y += dy / distance * self.speed; } // Attack player if close enough if (distance < 150) { playerRobot.takeDamage(self.damage * 0.15); // More damage per frame when close } } }; self.takeDamage = function (damage) { self.health -= damage; tween(bossGraphics, { tint: 0xff0000 }, { duration: 100, onFinish: function onFinish() { tween(bossGraphics, { tint: 0x880000 }, { duration: 100 }); } }); if (self.health <= 0) { self.destroy(); return true; // Boss destroyed } return false; }; return self; }); var EnemyVirus = Container.expand(function () { var self = Container.call(this); var virusGraphics = self.attachAsset('enemyVirus', { anchorX: 0.5, anchorY: 0.5 }); self.health = 30; self.speed = 2; self.damage = 10; self.lastX = 0; self.lastY = 0; self.update = function () { self.lastX = self.x; self.lastY = self.y; // Move towards player if (playerRobot) { var dx = playerRobot.x - self.x; var dy = playerRobot.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 0) { self.x += dx / distance * self.speed; self.y += dy / distance * self.speed; } // Attack player if close enough if (distance < 100) { playerRobot.takeDamage(self.damage * 0.1); // Damage per frame when close } } }; self.takeDamage = function (damage) { self.health -= damage; tween(virusGraphics, { tint: 0xff0000 }, { duration: 100, onFinish: function onFinish() { tween(virusGraphics, { tint: 0xffffff }, { duration: 100 }); } }); if (self.health <= 0) { self.destroy(); return true; // Virus destroyed } return false; }; return self; }); var Laser = Container.expand(function () { var self = Container.call(this); var laserGraphics = self.attachAsset('laser', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 15; self.damage = 25; self.targetX = 0; self.targetY = 0; self.directionX = 0; self.directionY = 0; self.setTarget = function (targetX, targetY) { var dx = targetX - self.x; var dy = targetY - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 0) { self.directionX = dx / distance; self.directionY = dy / distance; } // Rotate laser to face target laserGraphics.rotation = Math.atan2(dy, dx); }; self.update = function () { self.x += self.directionX * self.speed; self.y += self.directionY * self.speed; // Remove laser if it goes off screen if (self.x < -50 || self.x > 2098 || self.y < -50 || self.y > 2782) { self.destroy(); } }; return self; }); var PlayerRobot = Container.expand(function () { var self = Container.call(this); var robotGraphics = self.attachAsset('playerRobot', { anchorX: 0.5, anchorY: 0.5 }); self.health = 100; self.maxHealth = 100; self.fireRate = 20; // Fire every 20 ticks self.fireCooldown = 0; self.superAbility = 0; // Super ability charge (0-100) self.maxSuperAbility = 100; self.update = function () { if (self.fireCooldown > 0) { self.fireCooldown--; } }; self.takeDamage = function (damage) { self.health -= damage; // Flash red when taking damage tween(robotGraphics, { tint: 0xff0000 }, { duration: 200, onFinish: function onFinish() { tween(robotGraphics, { tint: 0xffffff }, { duration: 200 }); } }); if (self.health <= 0) { LK.showGameOver(); } }; self.canFire = function () { return self.fireCooldown <= 0; }; self.fire = function () { if (self.canFire()) { self.fireCooldown = self.fireRate; return true; } return false; }; self.useSuperAbility = function () { if (self.superAbility >= 100) { self.superAbility = 0; return true; } return false; }; return self; }); var TankRobot = PlayerRobot.expand(function () { var self = PlayerRobot.call(this); var robotGraphics = self.attachAsset('tankRobot', { anchorX: 0.5, anchorY: 0.5 }); self.health = 150; self.maxHealth = 150; self.fireRate = 30; // Slower firing self.speed = 0.7; // Slower movement robotGraphics.tint = 0x808080; // Gray tint return self; }); var SpeedRobot = PlayerRobot.expand(function () { var self = PlayerRobot.call(this); var robotGraphics = self.attachAsset('speedRobot', { anchorX: 0.5, anchorY: 0.5 }); self.health = 75; self.maxHealth = 75; self.fireRate = 15; // Faster firing self.speed = 1.5; // Faster movement robotGraphics.tint = 0x00FF80; // Green-blue tint return self; }); var NinjaRobot = PlayerRobot.expand(function () { var self = PlayerRobot.call(this); var robotGraphics = self.attachAsset('ninjaRobot', { anchorX: 0.5, anchorY: 0.5 }); self.health = 60; self.maxHealth = 60; self.fireRate = 10; // Very fast firing self.speed = 2.0; // Very fast movement robotGraphics.tint = 0x4040FF; // Purple tint return self; }); var HeavyRobot = PlayerRobot.expand(function () { var self = PlayerRobot.call(this); var robotGraphics = self.attachAsset('heavyRobot', { anchorX: 0.5, anchorY: 0.5 }); self.health = 200; self.maxHealth = 200; self.fireRate = 40; // Much slower firing self.speed = 0.5; // Much slower movement robotGraphics.tint = 0xFF8000; // Orange tint return self; }); var PowerUp = Container.expand(function () { var self = Container.call(this); var powerGraphics = self.attachAsset('powerUp', { anchorX: 0.5, anchorY: 0.5 }); self.type = 'health'; // 'health', 'weapon', 'shield' self.collected = false; // Floating animation tween(powerGraphics, { y: powerGraphics.y - 20 }, { duration: 1000, easing: tween.easeInOut, onFinish: function onFinish() { tween(powerGraphics, { y: powerGraphics.y + 20 }, { duration: 1000, easing: tween.easeInOut, onFinish: function onFinish() { if (!self.collected) { // Restart floating animation tween(powerGraphics, { y: powerGraphics.y - 20 }, { duration: 1000, easing: tween.easeInOut }); } } }); } }); self.collect = function () { if (!self.collected) { self.collected = true; LK.getSound('power_up').play(); // Recharge super ability playerRobot.superAbility = Math.min(playerRobot.superAbility + 25, playerRobot.maxSuperAbility); // Scale up and fade out effect tween(powerGraphics, { scaleX: 2, scaleY: 2, alpha: 0 }, { duration: 300, onFinish: function onFinish() { self.destroy(); } }); } }; return self; }); /**** * Initialize Game ****/ // Game variables var game = new LK.Game({ backgroundColor: 0x111111 }); /**** * Game Code ****/ // Game variables // Initialize assets for the robot vs virus battle game var playerRobot; var enemies = []; var lasers = []; var powerUps = []; var dragNode = null; var wave = 1; var enemySpawnTimer = 0; var powerUpSpawnTimer = 0; var lastBossWave = 0; var bossActive = false; var gameState = 'menu'; // 'menu', 'characterSelect', or 'playing' var startButton; var titleText; var instructionText; var characterSelectText; var character1Button; var character2Button; var character3Button; var backButton; var selectedCharacter = 'playerRobot'; // Default character // Create arena background var arena = game.addChild(LK.getAsset('arena', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366 })); // Create start menu elements titleText = new Text2('ROBOT vs VIRUS', { size: 120, fill: 0x00FF00 }); titleText.anchor.set(0.5, 0.5); titleText.x = 1024; titleText.y = 800; game.addChild(titleText); instructionText = new Text2('Tap to Start\nCharacter Select\n\nDrag robot to move\nKill viruses to earn points\nCollect yellow orbs for super ability', { size: 60, fill: 0xFFFFFF }); instructionText.anchor.set(0.5, 0.5); instructionText.x = 1024; instructionText.y = 1400; game.addChild(instructionText); // Create character selection screen elements (hidden initially) characterSelectText = new Text2('SELECT CHARACTER', { size: 100, fill: 0x00FF00 }); characterSelectText.anchor.set(0.5, 0.5); characterSelectText.x = 1024; characterSelectText.y = 500; characterSelectText.visible = false; game.addChild(characterSelectText); character1Button = new Text2('STANDARD ROBOT\nBalanced Stats', { size: 60, fill: 0x0080FF }); character1Button.anchor.set(0.5, 0.5); character1Button.x = 1024; character1Button.y = 800; character1Button.visible = false; game.addChild(character1Button); character2Button = new Text2('SPEED ROBOT\nFast & Agile', { size: 60, fill: 0x00FF80 }); character2Button.anchor.set(0.5, 0.5); character2Button.x = 1024; character2Button.y = 950; character2Button.visible = false; game.addChild(character2Button); character3Button = new Text2('TANK ROBOT\nHigh Health', { size: 60, fill: 0x808080 }); character3Button.anchor.set(0.5, 0.5); character3Button.x = 1024; character3Button.y = 1100; character3Button.visible = false; game.addChild(character3Button); var character4Button = new Text2('NINJA ROBOT\nSuper Fast', { size: 60, fill: 0x4040FF }); character4Button.anchor.set(0.5, 0.5); character4Button.x = 1024; character4Button.y = 1250; character4Button.visible = false; game.addChild(character4Button); var character5Button = new Text2('HEAVY ROBOT\nMaximum Armor', { size: 60, fill: 0xFF8000 }); character5Button.anchor.set(0.5, 0.5); character5Button.x = 1024; character5Button.y = 1400; character5Button.visible = false; game.addChild(character5Button); backButton = new Text2('BACK', { size: 60, fill: 0xFFFFFF }); backButton.anchor.set(0.5, 0.5); backButton.x = 1024; backButton.y = 1600; backButton.visible = false; game.addChild(backButton); // Player robot will be created when game starts playerRobot = null; // Create UI elements (hidden initially) var scoreText = new Text2('Robot Score: 0', { size: 60, fill: 0x00FF00 }); scoreText.anchor.set(0, 0); scoreText.visible = false; LK.gui.topRight.addChild(scoreText); var healthText = new Text2('Health: 100', { size: 60, fill: 0xFF0000 }); healthText.anchor.set(0, 0); healthText.y = 70; healthText.visible = false; LK.gui.topRight.addChild(healthText); var waveText = new Text2('Wave: 1', { size: 60, fill: 0xFFFFFF }); waveText.anchor.set(0.5, 0); waveText.visible = false; LK.gui.top.addChild(waveText); var superAbilityText = new Text2('Super: 0%', { size: 60, fill: 0xFFFF00 }); superAbilityText.anchor.set(0, 0); superAbilityText.y = 140; superAbilityText.visible = false; LK.gui.topRight.addChild(superAbilityText); // Touch/mouse controls function handleMove(x, y, obj) { if (dragNode && playerRobot) { // Keep player within arena bounds var newX = Math.max(200, Math.min(1848, x)); var newY = Math.max(200, Math.min(2532, y)); playerRobot.x = newX; playerRobot.y = newY; } } game.move = handleMove; game.down = function (x, y, obj) { if (gameState === 'menu') { // Check if tapping on character select option var localPos = game.toLocal({ x: x, y: y }); if (localPos.y > 1300 && localPos.y < 1400 && localPos.x > 500 && localPos.x < 1500) { // Show character selection gameState = 'characterSelect'; titleText.visible = false; instructionText.visible = false; characterSelectText.visible = true; character1Button.visible = true; character2Button.visible = true; character3Button.visible = true; character4Button.visible = true; character5Button.visible = true; backButton.visible = true; } else { // Start the game with default character startGame(); } } else if (gameState === 'characterSelect') { var localPos = game.toLocal({ x: x, y: y }); // Check character button taps if (localPos.y > 750 && localPos.y < 850 && localPos.x > 500 && localPos.x < 1500) { selectedCharacter = 'standard'; startGame(); } else if (localPos.y > 900 && localPos.y < 1000 && localPos.x > 500 && localPos.x < 1500) { selectedCharacter = 'speed'; startGame(); } else if (localPos.y > 1050 && localPos.y < 1150 && localPos.x > 500 && localPos.x < 1500) { selectedCharacter = 'tank'; startGame(); } else if (localPos.y > 1200 && localPos.y < 1300 && localPos.x > 500 && localPos.x < 1500) { selectedCharacter = 'ninja'; startGame(); } else if (localPos.y > 1350 && localPos.y < 1450 && localPos.x > 500 && localPos.x < 1500) { selectedCharacter = 'heavy'; startGame(); } else if (localPos.y > 1550 && localPos.y < 1650 && localPos.x > 500 && localPos.x < 1500) { // Back button gameState = 'menu'; characterSelectText.visible = false; character1Button.visible = false; character2Button.visible = false; character3Button.visible = false; character4Button.visible = false; character5Button.visible = false; backButton.visible = false; titleText.visible = true; instructionText.visible = true; } } else if (gameState === 'playing') { dragNode = playerRobot; handleMove(x, y, obj); } }; // Function to start the game function startGame() { gameState = 'playing'; titleText.visible = false; instructionText.visible = false; characterSelectText.visible = false; character1Button.visible = false; character2Button.visible = false; character3Button.visible = false; character4Button.visible = false; character5Button.visible = false; backButton.visible = false; // Create the selected robot type if (playerRobot) { playerRobot.destroy(); } if (selectedCharacter === 'standard') { playerRobot = game.addChild(new PlayerRobot()); } else if (selectedCharacter === 'speed') { playerRobot = game.addChild(new SpeedRobot()); } else if (selectedCharacter === 'tank') { playerRobot = game.addChild(new TankRobot()); } else if (selectedCharacter === 'ninja') { playerRobot = game.addChild(new NinjaRobot()); } else if (selectedCharacter === 'heavy') { playerRobot = game.addChild(new HeavyRobot()); } else { playerRobot = game.addChild(new PlayerRobot()); } playerRobot.x = 1024; playerRobot.y = 1366; playerRobot.visible = true; scoreText.visible = true; healthText.visible = true; waveText.visible = true; superAbilityText.visible = true; } game.up = function (x, y, obj) { dragNode = null; }; // Helper function to find closest virus function findClosestEnemy() { var closestEnemy = null; var closestDistance = Infinity; for (var i = 0; i < enemies.length; i++) { var enemy = enemies[i]; var dx = enemy.x - playerRobot.x; var dy = enemy.y - playerRobot.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance < closestDistance) { closestDistance = distance; closestEnemy = enemy; } } return closestEnemy; } // Spawn virus function function spawnEnemy() { var enemy = new EnemyVirus(); // Spawn at random edge of arena var side = Math.floor(Math.random() * 4); switch (side) { case 0: // Top enemy.x = 200 + Math.random() * 1648; enemy.y = 100; break; case 1: // Right enemy.x = 1948; enemy.y = 200 + Math.random() * 2332; break; case 2: // Bottom enemy.x = 200 + Math.random() * 1648; enemy.y = 2632; break; case 3: // Left enemy.x = 100; enemy.y = 200 + Math.random() * 2332; break; } enemies.push(enemy); game.addChild(enemy); } // Spawn power-up function function spawnPowerUp() { var powerUp = new PowerUp(); powerUp.x = 300 + Math.random() * 1448; powerUp.y = 300 + Math.random() * 2132; powerUps.push(powerUp); game.addChild(powerUp); } // Spawn boss function function spawnBoss() { var boss = new BossVirus(); // Spawn boss at top center boss.x = 1024; boss.y = 100; enemies.push(boss); game.addChild(boss); bossActive = true; } // Main game update loop game.update = function () { // Only update game logic when playing if (gameState !== 'playing') { return; } // Update UI scoreText.setText('Robot Kills: ' + LK.getScore()); healthText.setText('Health: ' + Math.max(0, playerRobot.health)); waveText.setText('Wave: ' + wave); superAbilityText.setText('Super: ' + Math.floor(playerRobot.superAbility) + '%'); // Robot auto-fire at closest virus if (playerRobot.canFire()) { var target = findClosestEnemy(); if (target) { if (playerRobot.fire()) { var laser = new Laser(); laser.x = playerRobot.x; laser.y = playerRobot.y; laser.setTarget(target.x, target.y); lasers.push(laser); game.addChild(laser); LK.getSound('laser_fire').play(); } } } // Use super ability when fully charged if (playerRobot.superAbility >= 100 && enemies.length > 0) { if (playerRobot.useSuperAbility()) { // Fire lasers at all enemies for (var k = 0; k < enemies.length; k++) { var superLaser = new Laser(); superLaser.x = playerRobot.x; superLaser.y = playerRobot.y; superLaser.setTarget(enemies[k].x, enemies[k].y); lasers.push(superLaser); game.addChild(superLaser); } LK.getSound('laser_fire').play(); // Flash robot yellow to show super ability used tween(playerRobot.children[0], { tint: 0xffff00 }, { duration: 200, onFinish: function onFinish() { tween(playerRobot.children[0], { tint: 0xffffff }, { duration: 200 }); } }); } } // Update and check laser collisions for (var i = lasers.length - 1; i >= 0; i--) { var laser = lasers[i]; if (laser.destroyed) { lasers.splice(i, 1); continue; } // Check laser vs enemy collisions for (var j = enemies.length - 1; j >= 0; j--) { var enemy = enemies[j]; if (laser.intersects(enemy)) { if (enemy.takeDamage(laser.damage)) { // Virus destroyed - award points to robot var points = enemy.isBoss ? 200 : 10; // Boss gives 200 points, regular virus gives 10 LK.setScore(LK.getScore() + points); LK.getSound('enemy_destroy').play(); // Check if boss was destroyed if (enemy.isBoss) { bossActive = false; } // Flash robot blue to show successful kill tween(playerRobot.children[0], { tint: 0x00ffff }, { duration: 150, onFinish: function onFinish() { tween(playerRobot.children[0], { tint: 0xffffff }, { duration: 150 }); } }); enemies.splice(j, 1); } laser.destroy(); lasers.splice(i, 1); break; } } } // Check power-up collection for (var i = powerUps.length - 1; i >= 0; i--) { var powerUp = powerUps[i]; if (powerUp.intersects(playerRobot)) { powerUp.collect(); powerUps.splice(i, 1); } else if (powerUp.destroyed) { powerUps.splice(i, 1); } } // Remove destroyed enemies for (var i = enemies.length - 1; i >= 0; i--) { if (enemies[i].destroyed) { enemies.splice(i, 1); } } // Spawn enemies based on wave enemySpawnTimer++; var spawnRate = Math.max(60 - wave * 5, 20); // Faster spawning each wave if (enemySpawnTimer >= spawnRate) { spawnEnemy(); enemySpawnTimer = 0; } // Spawn power-ups occasionally powerUpSpawnTimer++; if (powerUpSpawnTimer >= 600) { // Every 10 seconds spawnPowerUp(); powerUpSpawnTimer = 0; } // Check wave progression if (LK.ticks % 1800 === 0) { // Every 30 seconds wave++; // Spawn boss every 5 waves if (wave - lastBossWave >= 5 && !bossActive) { spawnBoss(); lastBossWave = wave; } } // Low health warning effect (removed screen shake as LK.effects.shakeScreen doesn't exist) if (playerRobot.health < 30 && LK.ticks % 10 === 0) { // Flash the player robot red to indicate low health tween(playerRobot.children[0], { tint: 0xff0000 }, { duration: 100, onFinish: function onFinish() { tween(playerRobot.children[0], { tint: 0xffffff }, { duration: 100 }); } }); } };
===================================================================
--- original.js
+++ change.js
@@ -199,8 +199,60 @@
return false;
};
return self;
});
+var TankRobot = PlayerRobot.expand(function () {
+ var self = PlayerRobot.call(this);
+ var robotGraphics = self.attachAsset('tankRobot', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.health = 150;
+ self.maxHealth = 150;
+ self.fireRate = 30; // Slower firing
+ self.speed = 0.7; // Slower movement
+ robotGraphics.tint = 0x808080; // Gray tint
+ return self;
+});
+var SpeedRobot = PlayerRobot.expand(function () {
+ var self = PlayerRobot.call(this);
+ var robotGraphics = self.attachAsset('speedRobot', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.health = 75;
+ self.maxHealth = 75;
+ self.fireRate = 15; // Faster firing
+ self.speed = 1.5; // Faster movement
+ robotGraphics.tint = 0x00FF80; // Green-blue tint
+ return self;
+});
+var NinjaRobot = PlayerRobot.expand(function () {
+ var self = PlayerRobot.call(this);
+ var robotGraphics = self.attachAsset('ninjaRobot', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.health = 60;
+ self.maxHealth = 60;
+ self.fireRate = 10; // Very fast firing
+ self.speed = 2.0; // Very fast movement
+ robotGraphics.tint = 0x4040FF; // Purple tint
+ return self;
+});
+var HeavyRobot = PlayerRobot.expand(function () {
+ var self = PlayerRobot.call(this);
+ var robotGraphics = self.attachAsset('heavyRobot', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.health = 200;
+ self.maxHealth = 200;
+ self.fireRate = 40; // Much slower firing
+ self.speed = 0.5; // Much slower movement
+ robotGraphics.tint = 0xFF8000; // Orange tint
+ return self;
+});
var PowerUp = Container.expand(function () {
var self = Container.call(this);
var powerGraphics = self.attachAsset('powerUp', {
anchorX: 0.5,
@@ -266,10 +318,10 @@
/****
* Game Code
****/
-// Initialize assets for the robot vs virus battle game
// Game variables
+// Initialize assets for the robot vs virus battle game
var playerRobot;
var enemies = [];
var lasers = [];
var powerUps = [];
@@ -319,52 +371,67 @@
fill: 0x00FF00
});
characterSelectText.anchor.set(0.5, 0.5);
characterSelectText.x = 1024;
-characterSelectText.y = 600;
+characterSelectText.y = 500;
characterSelectText.visible = false;
game.addChild(characterSelectText);
-character1Button = new Text2('BLUE ROBOT', {
- size: 80,
+character1Button = new Text2('STANDARD ROBOT\nBalanced Stats', {
+ size: 60,
fill: 0x0080FF
});
character1Button.anchor.set(0.5, 0.5);
character1Button.x = 1024;
-character1Button.y = 1000;
+character1Button.y = 800;
character1Button.visible = false;
game.addChild(character1Button);
-character2Button = new Text2('RED ROBOT', {
- size: 80,
- fill: 0xFF4040
+character2Button = new Text2('SPEED ROBOT\nFast & Agile', {
+ size: 60,
+ fill: 0x00FF80
});
character2Button.anchor.set(0.5, 0.5);
character2Button.x = 1024;
-character2Button.y = 1200;
+character2Button.y = 950;
character2Button.visible = false;
game.addChild(character2Button);
-character3Button = new Text2('GREEN ROBOT', {
- size: 80,
- fill: 0x40FF40
+character3Button = new Text2('TANK ROBOT\nHigh Health', {
+ size: 60,
+ fill: 0x808080
});
character3Button.anchor.set(0.5, 0.5);
character3Button.x = 1024;
-character3Button.y = 1400;
+character3Button.y = 1100;
character3Button.visible = false;
game.addChild(character3Button);
+var character4Button = new Text2('NINJA ROBOT\nSuper Fast', {
+ size: 60,
+ fill: 0x4040FF
+});
+character4Button.anchor.set(0.5, 0.5);
+character4Button.x = 1024;
+character4Button.y = 1250;
+character4Button.visible = false;
+game.addChild(character4Button);
+var character5Button = new Text2('HEAVY ROBOT\nMaximum Armor', {
+ size: 60,
+ fill: 0xFF8000
+});
+character5Button.anchor.set(0.5, 0.5);
+character5Button.x = 1024;
+character5Button.y = 1400;
+character5Button.visible = false;
+game.addChild(character5Button);
backButton = new Text2('BACK', {
size: 60,
fill: 0xFFFFFF
});
backButton.anchor.set(0.5, 0.5);
backButton.x = 1024;
-backButton.y = 1800;
+backButton.y = 1600;
backButton.visible = false;
game.addChild(backButton);
-// Create player robot (hidden initially)
-playerRobot = game.addChild(new PlayerRobot());
-playerRobot.x = 1024;
-playerRobot.y = 1366;
-playerRobot.visible = false;
+// Player robot will be created when game starts
+playerRobot = null;
// Create UI elements (hidden initially)
var scoreText = new Text2('Robot Score: 0', {
size: 60,
fill: 0x00FF00
@@ -421,8 +488,10 @@
characterSelectText.visible = true;
character1Button.visible = true;
character2Button.visible = true;
character3Button.visible = true;
+ character4Button.visible = true;
+ character5Button.visible = true;
backButton.visible = true;
} else {
// Start the game with default character
startGame();
@@ -432,24 +501,32 @@
x: x,
y: y
});
// Check character button taps
- if (localPos.y > 950 && localPos.y < 1050 && localPos.x > 500 && localPos.x < 1500) {
- selectedCharacter = 'playerRobot';
+ if (localPos.y > 750 && localPos.y < 850 && localPos.x > 500 && localPos.x < 1500) {
+ selectedCharacter = 'standard';
startGame();
- } else if (localPos.y > 1150 && localPos.y < 1250 && localPos.x > 500 && localPos.x < 1500) {
- selectedCharacter = 'playerRobot';
+ } else if (localPos.y > 900 && localPos.y < 1000 && localPos.x > 500 && localPos.x < 1500) {
+ selectedCharacter = 'speed';
startGame();
+ } else if (localPos.y > 1050 && localPos.y < 1150 && localPos.x > 500 && localPos.x < 1500) {
+ selectedCharacter = 'tank';
+ startGame();
+ } else if (localPos.y > 1200 && localPos.y < 1300 && localPos.x > 500 && localPos.x < 1500) {
+ selectedCharacter = 'ninja';
+ startGame();
} else if (localPos.y > 1350 && localPos.y < 1450 && localPos.x > 500 && localPos.x < 1500) {
- selectedCharacter = 'playerRobot';
+ selectedCharacter = 'heavy';
startGame();
- } else if (localPos.y > 1750 && localPos.y < 1850 && localPos.x > 500 && localPos.x < 1500) {
+ } else if (localPos.y > 1550 && localPos.y < 1650 && localPos.x > 500 && localPos.x < 1500) {
// Back button
gameState = 'menu';
characterSelectText.visible = false;
character1Button.visible = false;
character2Button.visible = false;
character3Button.visible = false;
+ character4Button.visible = false;
+ character5Button.visible = false;
backButton.visible = false;
titleText.visible = true;
instructionText.visible = true;
}
@@ -466,22 +543,35 @@
characterSelectText.visible = false;
character1Button.visible = false;
character2Button.visible = false;
character3Button.visible = false;
+ character4Button.visible = false;
+ character5Button.visible = false;
backButton.visible = false;
+ // Create the selected robot type
+ if (playerRobot) {
+ playerRobot.destroy();
+ }
+ if (selectedCharacter === 'standard') {
+ playerRobot = game.addChild(new PlayerRobot());
+ } else if (selectedCharacter === 'speed') {
+ playerRobot = game.addChild(new SpeedRobot());
+ } else if (selectedCharacter === 'tank') {
+ playerRobot = game.addChild(new TankRobot());
+ } else if (selectedCharacter === 'ninja') {
+ playerRobot = game.addChild(new NinjaRobot());
+ } else if (selectedCharacter === 'heavy') {
+ playerRobot = game.addChild(new HeavyRobot());
+ } else {
+ playerRobot = game.addChild(new PlayerRobot());
+ }
+ playerRobot.x = 1024;
+ playerRobot.y = 1366;
playerRobot.visible = true;
scoreText.visible = true;
healthText.visible = true;
waveText.visible = true;
superAbilityText.visible = true;
- // Apply character tinting based on selection
- if (selectedCharacter === 'playerRobot') {
- playerRobot.children[0].tint = 0x0080FF; // Blue
- } else if (selectedCharacter === 'redRobot') {
- playerRobot.children[0].tint = 0xFF4040; // Red
- } else if (selectedCharacter === 'greenRobot') {
- playerRobot.children[0].tint = 0x40FF40; // Green
- }
}
game.up = function (x, y, obj) {
dragNode = null;
};
robot. In-Game asset. 2d. High contrast. No shadows
VIRUS TECNOLOGICO. In-Game asset. 2d. High contrast. No shadows
chispa de energia. In-Game asset. 2d. High contrast. No shadows
BALA LASER. In-Game asset. 2d. High contrast. No shadows
piso tecnologico neon. In-Game asset. 2d. High contrast. No shadows