User prompt
новые враги непоявляются пока живы предыдущие
User prompt
спавни 10 враго за волну
User prompt
Fix Bug: 'Uncaught ReferenceError: Star is not defined' in this line: 'var starType = Math.random() < 0.5 ? Star : DimStar; // 50% chance to be DimStar' Line Number: 196
User prompt
сделай звезды на фоне разной яркости, некоторые минающие
User prompt
оптимизируй количество врагов
User prompt
добавь на фоне бесконечно движущие звезды
User prompt
не работает отображение жизни и волн врагов - исправь
User prompt
выведи на экран жизни и волны надвиписью белого цвета в верхней части экрана
User prompt
покажи счетчик волн врагов
User prompt
Fix Bug: 'Uncaught ReferenceError: livesCounter is not defined' in this line: 'self.addChild(livesCounter);' Line Number: 125
User prompt
добавь на кран жизни
User prompt
Fix Bug: 'TypeError: livesCounter.setText is not a function' in this line: 'livesCounter.setText(lives.toString());' Line Number: 122
User prompt
добавь три жизни
User prompt
Fix Bug: 'TypeError: livesCounter.setText is not a function' in this line: 'livesCounter.setText(lives.toString());' Line Number: 122
User prompt
увеличь скорость передвижения игрока
User prompt
ограничь скорость передвижения игрока
User prompt
add a life counter to the screen
User prompt
добавь на экран счетчик жиней
User prompt
отобрази жизни на экране
User prompt
добавь жизни
User prompt
враги спавняться волнами, с каждой новой количество врагов увеличивается
User prompt
добавь 5 разных типов врагов
User prompt
снаряды убивают врагов
User prompt
присвой количество жизни врагам
User prompt
снаряды убивают врагов с нескольких выстрелов
/**** * Classes ****/ // Define the Space Ranger class var SpaceRanger = Container.expand(function () { var self = Container.call(this); var rangerGraphics = self.createAsset('spaceRanger', 'Space Ranger', 0.5, 0.5); self.speed = 5; self.lives = 3; // Space Ranger starts with 3 lives self.moveLeft = function () { self.x = Math.max(self.width / 2, self.x - self.speed); }; self.moveRight = function () { self.x = Math.min(2048 - self.width / 2, self.x + self.speed); }; self.moveUp = function () { self.y = Math.max(self.height / 2, self.y - self.speed); }; self.moveDown = function () { self.y = Math.min(2732 - self.height / 2, self.y + self.speed); }; }); // Define the Meteor class var Meteor = Container.expand(function () { var self = Container.call(this); var meteorGraphics = self.createAsset('meteor', 'Meteor', 0.5, 0.5); self.speed = 3; self.move = function () { self.y += self.speed; }; }); // Define the Alien class var Alien = Container.expand(function () { var self = Container.call(this); var alienGraphics = self.createAsset('alien', 'Alien', 0.5, 0.5); self.speed = 2; self.health = 5; // Aliens can take 5 hits before being destroyed self.move = function () { self.y += self.speed; }; }); // Define the HeroBullet class var HeroBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.createAsset('heroBullet', 'Hero Bullet', 0.5, 0.5); self.speed = -10; self.move = function () { self.y += self.speed; }; }); // Define the EnemyType1 class var EnemyType1 = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('enemyType1', 'Enemy Type 1', 0.5, 0.5); self.speed = 2; self.health = 3; self.move = function () { self.y += self.speed; }; }); // Define the EnemyType2 class var EnemyType2 = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('enemyType2', 'Enemy Type 2', 0.5, 0.5); self.speed = 4; self.health = 2; self.move = function () { self.y += self.speed; }; }); // Define the EnemyType3 class var EnemyType3 = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('enemyType3', 'Enemy Type 3', 0.5, 0.5); self.speed = 1; self.health = 7; self.move = function () { self.y += self.speed; }; }); // Define the EnemyType4 class var EnemyType4 = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('enemyType4', 'Enemy Type 4', 0.5, 0.5); self.speed = 3; self.health = 4; self.move = function () { self.x += Math.sin(self.y / 100) * 10; // Sine wave movement self.y += self.speed; }; }); // Define the EnemyType5 class var EnemyType5 = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('enemyType5', 'Enemy Type 5', 0.5, 0.5); self.speed = 5; self.health = 1; self.move = function () { if (self.x < 1024) { self.x += self.speed; } else { self.x -= self.speed; } self.y += self.speed / 2; }; }); // Define the LivesDisplay class var LivesDisplay = Container.expand(function () { var self = Container.call(this); var livesText = new Text2('Lives: 3', { size: 100, fill: "#ffffff" }); var livesCounter = self.createAsset('livesCounter', 'Lives Counter', 0, 0); livesCounter.x = livesText.width + 10; livesCounter.y = livesText.height / 2; livesText.anchor.set(0.5, 0); self.addChild(livesText); self.addChild(livesCounter); self.updateLives = function (lives) { livesText.setText('Lives: ' + lives); livesCounter.setText(lives.toString()); }; self.positionAtTopCenter = function () { self.x = 2048 / 2; self.y = 50; }; self.positionAtTopCenter(); }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 // Init game with black background }); /**** * Game Code ****/ // Instantiate LivesDisplay var livesDisplay = new LivesDisplay(); // Add lives display to the GUI overlay at the top center of the screen LK.gui.top.addChild(livesDisplay); // Initialize important asset arrays var meteors = []; var aliens = []; var heroBullets = []; // Create the Space Ranger var spaceRanger = game.addChild(new SpaceRanger()); spaceRanger.x = 2048 / 2; spaceRanger.y = 2732 - 200; // Start position near the bottom of the screen // Touch event handling function handleTouchMove(obj) { var touchPos = obj.event.getLocalPosition(game); var deltaX = touchPos.x - spaceRanger.x; var deltaY = touchPos.y - spaceRanger.y; var maxSpeed = 5; if (Math.abs(deltaX) > maxSpeed) { deltaX = maxSpeed * Math.sign(deltaX); } if (Math.abs(deltaY) > maxSpeed) { deltaY = maxSpeed * Math.sign(deltaY); } spaceRanger.x += deltaX; spaceRanger.y += deltaY; } game.on('move', handleTouchMove); // Game tick event LK.on('tick', function () { // Move all meteors for (var i = meteors.length - 1; i >= 0; i--) { meteors[i].move(); if (meteors[i].y > 2732 + meteors[i].height / 2) { meteors[i].destroy(); meteors.splice(i, 1); } } // Move all aliens for (var j = aliens.length - 1; j >= 0; j--) { aliens[j].move(); if (aliens[j].y > 2732 + aliens[j].height / 2) { aliens[j].destroy(); aliens.splice(j, 1); } } // Move all hero bullets for (var k = heroBullets.length - 1; k >= 0; k--) { heroBullets[k].move(); if (heroBullets[k].y < -heroBullets[k].height / 2) { heroBullets[k].destroy(); heroBullets.splice(k, 1); } } // Collision detection between hero bullets and aliens for (var l = heroBullets.length - 1; l >= 0; l--) { for (var m = aliens.length - 1; m >= 0; m--) { if (heroBullets[l].intersects(aliens[m])) { // Aliens are now destroyed immediately upon collision with a hero bullet aliens[m].destroy(); aliens.splice(m, 1); heroBullets[l].destroy(); heroBullets.splice(l, 1); break; } } } // Collision detection between space ranger and meteors/aliens for (var n = 0; n < meteors.length; n++) { if (spaceRanger.intersects(meteors[n])) { spaceRanger.lives--; livesDisplay.updateLives(spaceRanger.lives); LK.effects.flashScreen(0xff0000, 500); if (spaceRanger.lives <= 0) { LK.showGameOver(); return; } meteors[n].destroy(); meteors.splice(n, 1); } } for (var o = 0; o < aliens.length; o++) { if (spaceRanger.intersects(aliens[o])) { spaceRanger.lives--; LK.effects.flashScreen(0xff0000, 500); if (spaceRanger.lives <= 0) { LK.showGameOver(); return; } aliens[o].destroy(); aliens.splice(o, 1); } } // Initialize wave properties var waveCount = 1; var waveInterval = 600; // Initial interval for spawning waves var enemiesPerWave = 5; // Initial number of enemies per wave // Spawn enemies in waves if (LK.ticks % waveInterval === 0) { for (var i = 0; i < enemiesPerWave; i++) { var enemyTypes = [Meteor, Alien, EnemyType1, EnemyType2, EnemyType3, EnemyType4, EnemyType5]; var randomTypeIndex = Math.floor(Math.random() * enemyTypes.length); var EnemyClass = enemyTypes[randomTypeIndex]; var newEnemy = new EnemyClass(); newEnemy.x = Math.random() * 2048; newEnemy.y = -newEnemy.height / 2; game.addChild(newEnemy); if (newEnemy instanceof Meteor) { meteors.push(newEnemy); } else { aliens.push(newEnemy); } } // Increase the number of enemies for the next wave enemiesPerWave += Math.floor(waveCount * 0.5); // Decrease the interval between waves to a minimum of 300 ticks waveInterval = Math.max(300, waveInterval - 50); // Increment wave count waveCount++; } // Fire hero bullets if (LK.ticks % 30 == 0) { var newHeroBullet = new HeroBullet(); newHeroBullet.x = spaceRanger.x; newHeroBullet.y = spaceRanger.y - spaceRanger.height / 2; heroBullets.push(newHeroBullet); game.addChild(newHeroBullet); } });
===================================================================
--- original.js
+++ change.js
@@ -152,10 +152,19 @@
spaceRanger.y = 2732 - 200; // Start position near the bottom of the screen
// Touch event handling
function handleTouchMove(obj) {
var touchPos = obj.event.getLocalPosition(game);
- spaceRanger.x = touchPos.x;
- spaceRanger.y = touchPos.y;
+ var deltaX = touchPos.x - spaceRanger.x;
+ var deltaY = touchPos.y - spaceRanger.y;
+ var maxSpeed = 5;
+ if (Math.abs(deltaX) > maxSpeed) {
+ deltaX = maxSpeed * Math.sign(deltaX);
+ }
+ if (Math.abs(deltaY) > maxSpeed) {
+ deltaY = maxSpeed * Math.sign(deltaY);
+ }
+ spaceRanger.x += deltaX;
+ spaceRanger.y += deltaY;
}
game.on('move', handleTouchMove);
// Game tick event
LK.on('tick', function () {
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.