User prompt
aumenta un poco la velocidad de movimiento de los enemigos
User prompt
hacer q los enemigos disparen un poco mas rapido y que salgan mas rapido
User prompt
Modificar la condición de victoria del juego: - El juego terminará y el jugador ganará al **superar la fase 10**. Y corregir un bug que hace que el enemigo que dispara directo al jugador lo haga pero la bala no llega a el, que dispare a su ubicacion
User prompt
1. Frecuencia de disparo de enemigos: - Aumentar ligeramente la velocidad de ataque de todos los enemigos, pero sin saturar la pantalla de balas. 2. Power-up de disparo triple: - Cambiar la mecánica para que ahora el disparo triple sea **ilimitado**. - El disparo se mantendrá activo hasta que el jugador reciba daño.
User prompt
Corrige y ajusta el balance de mi videojuego tipo shooter espacial: 1. Probabilidad de aparición de power-ups: - Reducir la probabilidad de aparición del power-up de corazón. - Reducir la probabilidad de aparición del power-up de disparo triple. - Evitar que estos power-ups aparezcan con demasiada frecuencia. - Mantenerlos como recompensas valiosas y no como ayudas constantes. 2. Vida del enemigo con disparo triple: - Aumentar la vida del enemigo que dispara 3 balas. - Ajustar su resistencia para que necesite **3 impactos de bala** para ser derrotado. - Mantenerlo como un enemigo especial y más peligroso.
User prompt
reducir mas la velocidad de disparo de los enemigos
User prompt
corrige que las balas caen del cielo
User prompt
Corrige el error que provoca que los proyectiles de los enemigos aparezcan cayendo desde el cielo. Asegúrate de que cada bala se genere en la posición del enemigo que dispara (origen del proyectil = posición del enemigo o su punto de disparo) y que mantenga la dirección correcta hacia el jugador.
User prompt
Revierte la lógica actual donde los enemigos solo pueden volver a disparar cuando su proyectil anterior sale completamente de la pantalla. Sustituye ese comportamiento por un temporizador de ataque, haciendo que los enemigos tarden el doble del tiempo actual en volver a disparar, independientemente de si el proyectil anterior sigue en pantalla.
User prompt
Corrige y ajusta los siguientes aspectos en mi videojuego tipo shooter espacial: 1. Frecuencia de disparo de enemigos: - Ajustar la frecuencia de disparo para que todos los enemigos disparen el doble de lento que antes. - Mantener pocas balas en pantalla. 2. Bug del enemigo de 3 balas: - Corregir el error donde el enemigo que dispara 3 balas ejecuta el disparo triple varias veces seguidas. - Asegurar que cada disparo genere solo un único disparo triple y respete su tiempo de recarga. 3. Invulnerabilidad al recibir daño: - Al recibir daño, el jugador debe volverse **inmortal durante 3 segundos**. - Durante ese tiempo: - No puede perder más vidas. - Los impactos enemigos no causan daño. - Pasados los 3 segundos, el jugador vuelve a ser vulnerable normalmente.
User prompt
1. Frecuencia de disparo de enemigos: - Reducir la frecuencia de disparo de todos los enemigos para que disparen **el doble de lento que antes**. - Asegurar que haya muy pocas balas en pantalla en todo momento. 2. Enemigos especiales con disparos avanzados: - Solo pueden existir al mismo tiempo: - 2 enemigos que disparan 3 balas. - 2 enemigos que disparan apuntando directamente al jugador. - No pueden aparecer más enemigos de estos tipos hasta que los actuales sean derrotados. - Cuando vuelvan a aparecer, solo deben salir nuevamente 2 de cada tipo. 3. Ajustes específicos de disparo: - Reducir aún más la frecuencia de disparo del enemigo que dispara 3 balas. - Reducir aún más la frecuencia de disparo del enemigo que dispara apuntando al jugador. - Mantener estos enemigos como amenazas especiales sin desbalancear el juego.
User prompt
Corrige los siguientes problemas y ajustes en mi videojuego tipo shooter espacial: 1. Frecuencia de disparo de enemigos: - Reducir **drásticamente** la frecuencia de disparo de todos los enemigos para que haya muchas menos balas en pantalla. - Asegurar que la pantalla no se sature de proyectiles. 2. Enemigos especiales con disparos avanzados: - Solo pueden existir al mismo tiempo: - 2 enemigos que disparan 3 balas. - 2 enemigos que disparan apuntando directamente al jugador. - No pueden aparecer más enemigos de estos tipos hasta que los actuales sean derrotados. - Una vez derrotados, pueden volver a aparecer, pero nuevamente **solo 2 de cada tipo**. 3. Ajustes específicos de disparo: - Reducir **un poco más** la frecuencia de disparo del enemigo que dispara 3 balas. - Reducir **un poco más** la frecuencia de disparo del enemigo que dispara apuntando al jugador. - Mantener estos enemigos como amenazas especiales, pero sin desbalancear el juego.
User prompt
Corrige los siguientes problemas y ajustes en mi videojuego tipo shooter espacial y tambien añade las siguientes cosas: separar mas a los enemigos, que no esten en la misma linea y separarles un poco porque si no las balas se acumulan y llega a ser injusto, tambien que las balas sean mas rapidas pero q tarden mas en disparar y corregir un error q hace q algunas balas salgan de arriba de la nada sin nadie que las dispare. Tambien crear otro enemigo q dispare triple disparo como nosotros cuando agarramos ese poder y se mueve en zig-zag y otro enemigo que nos dispare hacia nuestra ubicacion, que sobreviva a 2 balas pero dispare mas lento q los demas
User prompt
hay un error en las balas, salen lineas y quisiera revertir el ultimo cambio
User prompt
Corrige los siguientes problemas y ajustes en mi videojuego tipo shooter espacial:Disparo de enemigos: - Las balas deben originarse **desde la posición actual de cada enemigo**, no desde arriba de la pantalla. - Las balas tienen alta velocidad. - Cada enemigo solo puede volver a disparar cuando su proyectil anterior haya salido completamente de la pantalla.
User prompt
Corrige los siguientes problemas y ajustes en mi videojuego tipo shooter espacial: 1. Aparición de enemigos: - Cada enemigo debe generarse en una posición vertical única (eje Y) que no coincida con la de ningún otro enemigo presente en pantalla. - Debe haber una distancia mínima entre enemigos para que no estén demasiado cerca. - Si la posición calculada está ocupada o demasiado cerca de otro enemigo, generar otra posición aleatoria hasta que cumpla estas condiciones. - Los enemigos siguen apareciendo desde la parte superior de la pantalla. - Esto garantiza que todos los enemigos puedan disparar correctamente sin interferencias. 2. Disparo de enemigos: - Las balas deben originarse **desde la posición actual de cada enemigo**, no desde arriba de la pantalla. - Las balas tienen alta velocidad. - Cada enemigo solo puede volver a disparar cuando su proyectil anterior haya salido completamente de la pantalla.
User prompt
Corrige los siguientes aspectos en mi videojuego: 1. Aparición de enemigos: - No existan dos o más enemigos en la misma línea horizontal (mismo eje Y). - Cada enemigo aparezca en una posición vertical distinta al generarse. - Los enemigos sigan apareciendo desde la parte superior de la pantalla. 2. Power-up de disparo triple: - El disparo central vaya recto hacia adelante. - Los dos disparos laterales salgan en forma diagonal: - Lateral izquierdo: diagonal hacia la izquierda. - Lateral derecho: diagonal hacia la derecha. - Mantener una separación equilibrada para limpiar mejor la pantalla sin desbalancear el juego.
User prompt
Revisa y corrige los siguientes problemas y ajustes en mi videojuego tipo shooter espacial desarrollado en UPIT: 1. Balas enemigas: - Aumentar significativamente la velocidad de las balas enemigas. - Ajustar la lógica de disparo para que: - Los enemigos SOLO puedan volver a disparar cuando su proyectil anterior haya salido completamente de la pantalla. - Esto reduzca la frecuencia de disparo sin usar temporizadores artificiales. 2. Aparición de enemigos: - Corregir el sistema de aparición para que los enemigos: - No aparezcan en la misma línea o eje horizontal. - Aparezcan desde la parte superior en posiciones separadas y equilibradas. 3. Power-ups: - Escudo: - Ajustar la duración del escudo para que dure 5 segundos. - Triple disparo: - Separar ligeramente las tres líneas de balas para cubrir mejor la pantalla.
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'x')' in or related to this line: 'createPowerUp(enemies[j].x, enemies[j].y);' Line Number: 335
Code edit (1 edits merged)
Please save this source code
Initial prompt
Cosmic Defender
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2;
self.canShoot = true;
self.lastBulletY = 0;
self.lastY = 0;
self.currentBulletId = -1;
self.shootInterval = 240;
self.shootTimer = 0;
self.update = function () {
self.y += self.speed;
};
return self;
});
var EnemyBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('enemyBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocityX = 0;
self.velocityY = 20;
self.update = function () {
self.y += self.velocityY;
self.x += self.velocityX;
};
return self;
});
var PlayerBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('playerBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -15;
self.velocityX = 0;
self.update = function () {
self.y += self.speed;
self.x += self.velocityX;
};
return self;
});
var PowerUp = Container.expand(function () {
var self = Container.call(this);
self.type = 'life';
self.speed = 3;
self.lastY = 0;
var powerUpGraphics = self.attachAsset('powerUpLife', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
self.y += self.speed;
};
self.setType = function (type) {
self.type = type;
if (self.children && self.children.length > 0) {
self.removeChildAt(0);
}
var assetId = 'powerUpLife';
if (type === 'shield') {
assetId = 'powerUpShield';
} else if (type === 'tripleshot') {
assetId = 'powerUpTripleShot';
}
var newGraphics = self.attachAsset(assetId, {
anchorX: 0.5,
anchorY: 0.5
});
self.type = type;
};
return self;
});
var Spaceship = Container.expand(function () {
var self = Container.call(this);
var shipGraphics = self.attachAsset('spaceship', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 8;
self.shieldActive = false;
self.shieldTime = 0;
self.tripleShot = false;
self.tripleShotTime = 0;
self.tripleShotUnlimited = false;
self.invulnerable = false;
self.invulnerabilityTime = 0;
self.update = function () {
if (self.invulnerable) {
self.invulnerabilityTime--;
if (self.invulnerabilityTime <= 0) {
self.invulnerable = false;
shipGraphics.tint = 0xffffff;
}
}
if (self.shieldActive) {
self.shieldTime--;
if (self.shieldTime <= 0) {
self.shieldActive = false;
shipGraphics.tint = 0xffffff;
}
}
if (self.tripleShot && !self.tripleShotUnlimited) {
self.tripleShotTime--;
if (self.tripleShotTime <= 0) {
self.tripleShot = false;
}
}
};
self.activateShield = function (duration) {
self.shieldActive = true;
self.shieldTime = duration;
shipGraphics.tint = 0x0099ff;
};
self.activateTripleShot = function (duration) {
self.tripleShot = true;
self.tripleShotTime = 999999;
self.tripleShotUnlimited = true;
};
self.activateInvulnerability = function (duration) {
self.invulnerable = true;
self.invulnerabilityTime = duration;
shipGraphics.tint = 0x00ff00;
};
return self;
});
var TargetingEnemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
enemyGraphics.tint = 0xff6600;
self.speed = 2;
self.canShoot = true;
self.lastBulletY = 0;
self.lastY = 0;
self.health = 2;
self.currentBulletId = -1;
self.shootInterval = 320;
self.shootTimer = 0;
self.update = function () {
self.y += self.speed;
};
return self;
});
var TripleShotEnemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2;
self.canShoot = true;
self.lastBulletY = 0;
self.lastY = 0;
self.health = 3;
self.currentBulletIds = [-1, -1, -1];
self.zigzagOffset = 0;
self.zigzagDirection = 1;
self.shootInterval = 360;
self.shootTimer = 0;
self.update = function () {
self.y += self.speed;
self.zigzagOffset += self.zigzagDirection * 1.5;
if (Math.abs(self.zigzagOffset) > 80) {
self.zigzagDirection *= -1;
}
self.x += self.zigzagDirection * 0.8;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000033
});
/****
* Game Code
****/
var spaceship = game.addChild(new Spaceship());
spaceship.x = 1024;
spaceship.y = 2500;
var playerBullets = [];
var enemies = [];
var enemyBullets = [];
var powerUps = [];
var lives = 3;
var currentPhase = 1;
var enemiesDefeated = 0;
var totalEnemiesInPhase = 20 + (currentPhase - 1) * 10;
var shootTimer = 0;
var shootInterval = 20;
var spawnTimer = 0;
var spawnInterval = 40;
var gameOver = false;
var activeTripleShotEnemies = 0;
var activeTargetingEnemies = 0;
var livesText = new Text2('Lives: 3', {
size: 80,
fill: 0xFFFFFF
});
livesText.anchor.set(0, 0);
LK.gui.topLeft.addChild(livesText);
var phaseText = new Text2('Phase 1', {
size: 80,
fill: 0xFFFFFF
});
phaseText.anchor.set(0.5, 0);
LK.gui.top.addChild(phaseText);
var enemyCountText = new Text2('Enemies: 20', {
size: 80,
fill: 0xFFFFFF
});
enemyCountText.anchor.set(1, 0);
LK.gui.topRight.addChild(enemyCountText);
var positionText = new Text2('X: 0 Y: 0', {
size: 60,
fill: 0xFFFFFF
});
positionText.anchor.set(1, 1);
LK.gui.bottomRight.addChild(positionText);
function updateUI() {
livesText.setText('Lives: ' + lives);
phaseText.setText('Phase ' + currentPhase);
enemyCountText.setText('Enemies: ' + (totalEnemiesInPhase - enemiesDefeated));
positionText.setText('X: ' + Math.round(spaceship.x) + ' Y: ' + Math.round(spaceship.y));
}
function spawnEnemy() {
var enemyType = Math.random();
var enemy;
if (enemyType < 0.7) {
enemy = game.addChild(new Enemy());
} else if (enemyType < 0.85 && activeTripleShotEnemies < 2) {
enemy = game.addChild(new TripleShotEnemy());
activeTripleShotEnemies++;
} else if (activeTargetingEnemies < 2) {
enemy = game.addChild(new TargetingEnemy());
activeTargetingEnemies++;
} else {
enemy = game.addChild(new Enemy());
}
var spawnPositions = [164, 410, 656, 902, 1148, 1394, 1640, 1886];
var randomIndex = Math.floor(Math.random() * spawnPositions.length);
enemy.x = spawnPositions[randomIndex];
var usedYPositions = [];
for (var k = 0; k < enemies.length; k++) {
usedYPositions.push(enemies[k].y);
}
var spawnY = -60;
var validSpawn = false;
var attempts = 0;
var minDistance = 200;
while (!validSpawn && attempts < 20) {
spawnY = -60 - Math.floor(Math.random() * 10) * 80;
var isUsed = false;
for (var m = 0; m < usedYPositions.length; m++) {
if (Math.abs(spawnY - usedYPositions[m]) < minDistance) {
isUsed = true;
break;
}
}
if (!isUsed) {
validSpawn = true;
}
attempts++;
}
enemy.y = spawnY;
enemy.speed = 3 + (currentPhase - 1) * 0.45;
enemy.lastY = enemy.y;
if (enemy instanceof TripleShotEnemy) {
enemy.shootInterval = 1620;
enemy.shootTimer = 0;
} else if (enemy instanceof TargetingEnemy) {
enemy.shootInterval = 1440;
enemy.shootTimer = 0;
} else {
enemy.shootInterval = 1080;
enemy.shootTimer = 0;
}
enemies.push(enemy);
}
function damagePlayer() {
if (spaceship.invulnerable) {
return;
}
if (!spaceship.shieldActive) {
lives--;
spaceship.tripleShot = false;
spaceship.tripleShotUnlimited = false;
spaceship.activateInvulnerability(180);
LK.effects.flashObject(spaceship, 0xff0000, 500);
LK.getSound('explosion').play();
if (lives <= 0) {
LK.showGameOver();
gameOver = true;
return;
}
} else {
spaceship.shieldActive = false;
spaceship.tripleShot = false;
spaceship.tripleShotUnlimited = false;
spaceship.children[0].tint = 0xffffff;
LK.effects.flashObject(spaceship, 0xff00ff, 300);
}
updateUI();
}
function createPowerUp(x, y) {
var powerUp = game.addChild(new PowerUp());
powerUp.x = x;
powerUp.y = y;
powerUp.lastY = y;
var rand = Math.random();
var type = 'life';
if (rand < 0.5) {
type = 'shield';
} else if (rand < 0.75) {
type = 'tripleshot';
}
powerUp.setType(type);
powerUps.push(powerUp);
}
function advancePhase() {
currentPhase++;
if (currentPhase > 10) {
LK.showYouWin();
return;
}
enemiesDefeated = 0;
totalEnemiesInPhase = 20 + (currentPhase - 1) * 10;
activeTripleShotEnemies = 0;
activeTargetingEnemies = 0;
for (var i = enemies.length - 1; i >= 0; i--) {
enemies[i].destroy();
enemies.splice(i, 1);
}
for (var i = enemyBullets.length - 1; i >= 0; i--) {
enemyBullets[i].destroy();
enemyBullets.splice(i, 1);
}
updateUI();
}
game.down = function (x, y, obj) {
spaceship.x = x;
spaceship.y = y;
};
game.move = function (x, y, obj) {
spaceship.x = x;
spaceship.y = y;
};
game.update = function () {
if (gameOver) return;
updateUI();
shootTimer++;
if (shootTimer >= shootInterval) {
shootTimer = 0;
var bullet = game.addChild(new PlayerBullet());
bullet.x = spaceship.x;
bullet.y = spaceship.y - 40;
bullet.lastY = bullet.y;
playerBullets.push(bullet);
LK.getSound('shoot').play();
if (spaceship.tripleShot) {
var bulletLeft = game.addChild(new PlayerBullet());
bulletLeft.x = spaceship.x - 80;
bulletLeft.y = spaceship.y - 40;
bulletLeft.lastY = bulletLeft.y;
bulletLeft.velocityX = -8;
playerBullets.push(bulletLeft);
var bulletRight = game.addChild(new PlayerBullet());
bulletRight.x = spaceship.x + 80;
bulletRight.y = spaceship.y - 40;
bulletRight.lastY = bulletRight.y;
bulletRight.velocityX = 8;
playerBullets.push(bulletRight);
}
}
spawnTimer++;
if (spawnTimer >= spawnInterval && enemies.length < totalEnemiesInPhase) {
spawnTimer = 0;
spawnEnemy();
}
for (var i = enemies.length - 1; i >= 0; i--) {
var enemy = enemies[i];
var currentY = enemy.y;
if (enemy.lastY < 2800 && currentY >= 2800) {
if (enemy instanceof TripleShotEnemy) {
activeTripleShotEnemies--;
} else if (enemy instanceof TargetingEnemy) {
activeTargetingEnemies--;
}
enemy.destroy();
enemies.splice(i, 1);
continue;
}
enemy.lastY = currentY;
if (enemy.shootTimer !== undefined) {
enemy.shootTimer++;
}
if (enemy.shootInterval !== undefined && enemy.shootTimer >= enemy.shootInterval) {
enemy.shootTimer = 0;
enemy.canShoot = true;
}
if (enemy.canShoot) {
if (enemy instanceof TripleShotEnemy) {
var centerBullet = game.addChild(new EnemyBullet());
centerBullet.x = enemy.x;
centerBullet.y = enemy.y;
centerBullet.lastY = centerBullet.y;
centerBullet.bulletId = enemyBullets.length;
enemyBullets.push(centerBullet);
enemy.currentBulletIds[0] = centerBullet.bulletId;
var leftBullet = game.addChild(new EnemyBullet());
leftBullet.x = enemy.x;
leftBullet.y = enemy.y;
leftBullet.lastY = leftBullet.y;
leftBullet.velocityX = -6;
leftBullet.bulletId = enemyBullets.length;
enemyBullets.push(leftBullet);
enemy.currentBulletIds[1] = leftBullet.bulletId;
var rightBullet = game.addChild(new EnemyBullet());
rightBullet.x = enemy.x;
rightBullet.y = enemy.y;
rightBullet.lastY = rightBullet.y;
rightBullet.velocityX = 6;
rightBullet.bulletId = enemyBullets.length;
enemyBullets.push(rightBullet);
enemy.currentBulletIds[2] = rightBullet.bulletId;
LK.getSound('enemyShoot').play();
enemy.canShoot = false;
} else if (enemy instanceof TargetingEnemy) {
var dx = spaceship.x - enemy.x;
var dy = spaceship.y - enemy.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 0) {
var targetBullet = game.addChild(new EnemyBullet());
targetBullet.x = enemy.x;
targetBullet.y = enemy.y;
targetBullet.lastY = targetBullet.y;
targetBullet.velocityX = dx / distance * 10;
targetBullet.velocityY = dy / distance * 10;
targetBullet.bulletId = enemyBullets.length;
enemyBullets.push(targetBullet);
enemy.currentBulletId = targetBullet.bulletId;
LK.getSound('enemyShoot').play();
} //{3g_fix}
enemy.canShoot = false;
} else {
var eBullet = game.addChild(new EnemyBullet());
eBullet.x = enemy.x;
eBullet.y = enemy.y;
eBullet.lastY = eBullet.y;
eBullet.bulletId = enemyBullets.length;
enemyBullets.push(eBullet);
enemy.currentBulletId = eBullet.bulletId;
LK.getSound('enemyShoot').play();
enemy.canShoot = false;
}
}
if (enemy.intersects(spaceship)) {
damagePlayer();
if (enemy instanceof TripleShotEnemy) {
activeTripleShotEnemies--;
} else if (enemy instanceof TargetingEnemy) {
activeTargetingEnemies--;
}
enemy.destroy();
enemies.splice(i, 1);
LK.getSound('explosion').play();
continue;
}
}
for (var i = playerBullets.length - 1; i >= 0; i--) {
var bullet = playerBullets[i];
var currentY = bullet.y;
if (bullet.lastY >= -30 && currentY < -30) {
bullet.destroy();
playerBullets.splice(i, 1);
continue;
}
bullet.lastY = currentY;
for (var j = enemies.length - 1; j >= 0; j--) {
if (bullet.intersects(enemies[j])) {
var enemyX = enemies[j].x;
var enemyY = enemies[j].y;
bullet.destroy();
playerBullets.splice(i, 1);
LK.effects.flashObject(enemies[j], 0xffff00, 200);
var shouldDestroy = true;
if (enemies[j] instanceof TargetingEnemy) {
enemies[j].health--;
if (enemies[j].health > 0) {
shouldDestroy = false;
LK.effects.flashObject(enemies[j], 0xff9900, 100);
} //{2g_te}
} else if (enemies[j] instanceof TripleShotEnemy) {
enemies[j].health--;
if (enemies[j].health > 0) {
shouldDestroy = false;
LK.effects.flashObject(enemies[j], 0xff6600, 100);
} //{2g_tse}
} //{2g_te2}
if (shouldDestroy) {
if (enemies[j] instanceof TripleShotEnemy) {
activeTripleShotEnemies--;
} else if (enemies[j] instanceof TargetingEnemy) {
activeTargetingEnemies--;
}
enemies[j].destroy();
enemies.splice(j, 1);
enemiesDefeated++;
LK.getSound('explosion').play();
if (Math.random() < 0.1) {
createPowerUp(enemyX, enemyY);
}
if (enemiesDefeated >= totalEnemiesInPhase) {
advancePhase();
}
} //{2g_te3}
break;
}
}
}
for (var i = enemyBullets.length - 1; i >= 0; i--) {
var eBullet = enemyBullets[i];
var currentY = eBullet.y;
if (eBullet.lastY < 2850 && currentY >= 2850) {
eBullet.destroy();
enemyBullets.splice(i, 1);
continue;
}
eBullet.lastY = currentY;
if (eBullet.intersects(spaceship)) {
damagePlayer();
eBullet.destroy();
enemyBullets.splice(i, 1);
continue;
}
}
for (var i = powerUps.length - 1; i >= 0; i--) {
var powerUp = powerUps[i];
var currentY = powerUp.y;
if (powerUp.lastY <= 2800 && currentY > 2800) {
powerUp.destroy();
powerUps.splice(i, 1);
continue;
}
powerUp.lastY = currentY;
if (powerUp.intersects(spaceship)) {
LK.getSound('powerUp').play();
if (powerUp.type === 'life') {
lives++;
} else if (powerUp.type === 'shield') {
spaceship.activateShield(300);
} else if (powerUp.type === 'tripleshot') {
spaceship.activateTripleShot(300);
}
powerUp.destroy();
powerUps.splice(i, 1);
updateUI();
continue;
}
}
};
LK.playMusic('bgmusic');
updateUI(); ===================================================================
--- original.js
+++ change.js
@@ -281,9 +281,9 @@
}
attempts++;
}
enemy.y = spawnY;
- enemy.speed = 2 + (currentPhase - 1) * 0.3;
+ enemy.speed = 3 + (currentPhase - 1) * 0.45;
enemy.lastY = enemy.y;
if (enemy instanceof TripleShotEnemy) {
enemy.shootInterval = 1620;
enemy.shootTimer = 0;