User prompt
герой стреляет снарядами в 2 ряда
User prompt
бонус скорости не рабоате
User prompt
шанс выпадения бонуса скорости 1 к 15
User prompt
не работает бонус стрельбы
User prompt
с каждой волной метеориты двигаются быстрее
User prompt
бонус жизни добавляет герою 1 жизнь
User prompt
не работает бонусная жизнь
User prompt
не работает механика бонуса стрельбы
User prompt
добавь "бонус стрельбы", он выпадает с убитых врагов с шансом 1 к 15, время действия бонуса 10 секунд, во время действия "бонуса стрельбы" герой стреляет еще в два дополнительных направлении по диагонали влево вверх, вправо вверх; после поднятия "бонуса стрельбы" он пропадает с экрана и активируется
User prompt
из врагов может выпадать дополнительная жизнь с шансом 1 к 50, после поднятия жизни она пропадает с карты и добавляется 1 жизнь
User prompt
уменьши скорость героя
User prompt
уменьши скорость героя на 30%
User prompt
добавь физику герою
User prompt
следующая волна врагов появляется когда остается 2 врага из предыдущей волны
User prompt
количество врагов увеличивается постепенно
User prompt
добавь счетчик жизней
User prompt
интерфейс не выходит за границы эрана
User prompt
добавь в интерфейс счетчик очков и жизней
User prompt
добавь систему очков за убийство врагов
User prompt
отображать количестве жизней на экране в верхней части
User prompt
во врагов разного типа нужно разное количество попаданий для их уничтожения
User prompt
враги целятся в героя
User prompt
враги стреляю в героя, пуля летит прямо
User prompt
добобавь стреляющих врагов
User prompt
ускорь звезды на фоне
===================================================================
--- original.js
+++ change.js
@@ -47,8 +47,10 @@
y: 0
};
self.maxSpeed = 2.5;
self.lives = 6; // Space Ranger starts with 6 lives
+ self.shootingBonusActive = false;
+ self.shootingBonusEndTime = 0;
self.applyPhysics = function () {
self.velocity.x += self.acceleration.x;
self.velocity.y += self.acceleration.y;
self.velocity.x = Math.max(-self.maxSpeed, Math.min(self.maxSpeed, self.velocity.x));
@@ -170,8 +172,19 @@
}
self.y += self.speed / 2;
};
});
+var ShootingPowerUp = Container.expand(function () {
+ var self = Container.call(this);
+ var powerUpGraphics = self.createAsset('shootingPowerUp', 'Shooting Power Up', 0.5, 0.5);
+ self.speed = 2;
+ self.move = function () {
+ self.y += self.speed;
+ if (self.y > 2732 + self.height / 2) {
+ self.destroy();
+ }
+ };
+});
// Define the WaveDisplay class
var WaveDisplay = Container.expand(function () {
var self = Container.call(this);
self.waveCount = 1;
@@ -371,14 +384,14 @@
// Update score for destroying an alien
LK.setScore(LK.getScore() + 100);
scoreDisplay.updateScore(LK.getScore());
// Chance to drop a life power-up
- if (Math.random() < 0.02) {
- // 1 in 50 chance
- var lifePowerUp = new LifePowerUp();
- lifePowerUp.x = aliens[m].x;
- lifePowerUp.y = aliens[m].y;
- game.addChild(lifePowerUp);
+ if (Math.random() < 0.0667) {
+ // 1 in 15 chance
+ var shootingPowerUp = new ShootingPowerUp();
+ shootingPowerUp.x = aliens[m].x;
+ shootingPowerUp.y = aliens[m].y;
+ game.addChild(shootingPowerUp);
}
aliens[m].destroy();
aliens.splice(m, 1);
}
@@ -414,8 +427,17 @@
aliens[o].destroy();
aliens.splice(o, 1);
}
}
+ // Pick up ShootingPowerUp
+ for (var p = 0; p < game.children.length; p++) {
+ var obj = game.children[p];
+ if (obj instanceof ShootingPowerUp && spaceRanger.intersects(obj)) {
+ spaceRanger.shootingBonusActive = true;
+ spaceRanger.shootingBonusEndTime = LK.ticks + 600; // 10 seconds at 60FPS
+ obj.destroy();
+ }
+ }
// Pick up LifePowerUp
for (var p = 0; p < game.children.length; p++) {
var obj = game.children[p];
if (obj instanceof LifePowerUp && spaceRanger.intersects(obj)) {
@@ -455,6 +477,30 @@
newHeroBullet.x = spaceRanger.x;
newHeroBullet.y = spaceRanger.y - spaceRanger.height / 2;
heroBullets.push(newHeroBullet);
game.addChild(newHeroBullet);
+ if (spaceRanger.shootingBonusActive) {
+ var leftDiagonalBullet = new HeroBullet();
+ leftDiagonalBullet.x = spaceRanger.x;
+ leftDiagonalBullet.y = spaceRanger.y - spaceRanger.height / 2;
+ leftDiagonalBullet.move = function () {
+ this.x -= Math.cos(Math.PI / 4) * this.speed;
+ this.y += Math.sin(Math.PI / 4) * this.speed;
+ };
+ var rightDiagonalBullet = new HeroBullet();
+ rightDiagonalBullet.x = spaceRanger.x;
+ rightDiagonalBullet.y = spaceRanger.y - spaceRanger.height / 2;
+ rightDiagonalBullet.move = function () {
+ this.x += Math.cos(Math.PI / 4) * this.speed;
+ this.y += Math.sin(Math.PI / 4) * this.speed;
+ };
+ heroBullets.push(leftDiagonalBullet);
+ heroBullets.push(rightDiagonalBullet);
+ game.addChild(leftDiagonalBullet);
+ game.addChild(rightDiagonalBullet);
+ }
+ // Deactivate shooting bonus if time has expired
+ if (spaceRanger.shootingBonusEndTime && LK.ticks > spaceRanger.shootingBonusEndTime) {
+ spaceRanger.shootingBonusActive = false;
+ }
}
});
\ No newline at end of file
military spaceship flies upward. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
meteorite. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
ракета, снаряд летит вверх. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
energy ball. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
alien ship, flying saucer. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
alien spaceship heading down. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
alien spaceship heading down. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
alien spaceship heading down. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
alien spaceship heading down. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
сердце. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
lightning. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.