Code edit (1 edits merged)
Please save this source code
Code edit (2 edits merged)
Please save this source code
User prompt
когда пуля игрока и пуля врага касаются друг друга, то они должны исчезнуть.
User prompt
когда враги начинают вращаться, то пули игрока должны повернутся в направление врагов
User prompt
когда враги начинают вращаться, пули игрока должны повернутся на этих врагов.
User prompt
сделай чтобы астероиды спавнились с разным размером.
User prompt
когда игрок стреляет, то был звук.
User prompt
сделай врагам и игроку шкалу здоровья.
User prompt
сделай чтобы когда игрок стрелял то пуля поворачивалась в направление врага
User prompt
сделай чтобы пули игрока летели в врагов.
User prompt
сделай пули врага медленее
User prompt
сделай чтобы когда враг стрелял то пуля повернулась в направлении игрока.
User prompt
сделай чтобы пули врага летели в направление игрока
User prompt
когда враги начали вращаться, то они стреляли в направление игрока.
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'update')' in or related to this line: 'asteroids[k].update();' Line Number: 180
User prompt
когда пуля игрока касается астероида, то пуля игрока исчезает.
User prompt
Сделай, чтобы, когда враг почти долетел до середины экрана, он перестал двигаться и начал вращаться по синусу и косинусу.
User prompt
Сделай, чтобы когда враги почти долетели до экрана, он перестал двигаться и начал вращаться по синусу и косинусу.
User prompt
сделай чтобы когда враги почти долетел до середины экрана то он перестал двигаться и начал вращаться.
User prompt
реши это.
User prompt
сделай счётчик более красивым
User prompt
когда враг умрёт, увеличь счёт на 10.
Code edit (1 edits merged)
Please save this source code
User prompt
когда враг касается пули игрока, то он умирает
/**** * Classes ****/ // Asteroid class var Asteroid = Container.expand(function () { var self = Container.call(this); var asteroidGraphics = self.attachAsset('asteroid', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 7; self.scale.set(0.5 + Math.random() * 1.5); self.update = function () { self.y += self.speed; if (self.y > 2732 + asteroidGraphics.height) { self.destroy(); asteroids.splice(asteroids.indexOf(self), 1); } }; }); // Enemy class var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.update = function () { if (self.y < 2732 / 2) { self.y += self.speed; } else { self.x += Math.sin(LK.ticks / 10) * 5; self.y += Math.cos(LK.ticks / 10) * 5; // Shoot bullet towards hero if (LK.ticks % 100 == 0) { var bullet = new EnemyBullet(); bullet.x = self.x; bullet.y = self.y + enemyGraphics.height / 2; // Calculate angle towards hero var angle = Math.atan2(hero.y - bullet.y, hero.x - bullet.x); bullet.rotation = angle; // Rotate bullet towards hero bullet.vx = Math.cos(angle) * bullet.speed; bullet.vy = Math.sin(angle) * bullet.speed; game.addChild(bullet); enemyBullets.push(bullet); } } if (self.y > 2732 + enemyGraphics.height) { self.destroy(); enemies.splice(enemies.indexOf(self), 1); } }; }); // EnemyBullet class var EnemyBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('heroBullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.update = function () { self.x += self.vx; self.y += self.vy; if (self.y > 2732 + bulletGraphics.height) { self.destroy(); enemyBullets.splice(enemyBullets.indexOf(self), 1); } }; }); //<Assets used in the game will automatically appear here> // Hero class var Hero = Container.expand(function () { var self = Container.call(this); var heroGraphics = self.attachAsset('hero', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 10; self.update = function () { // Hero update logic }; self.shoot = function () { var bullet = new HeroBullet(); bullet.x = self.x; bullet.y = self.y - heroGraphics.height / 2; game.addChild(bullet); heroBullets.push(bullet); // Play shooting sound LK.getSound('shoot').play(); }; }); // HeroBullet class var HeroBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('heroBullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -15; self.update = function () { self.y += self.speed; if (self.y < -bulletGraphics.height) { self.destroy(); heroBullets.splice(heroBullets.indexOf(self), 1); } }; }); var StarBackground = Container.expand(function () { var self = Container.call(this); var background = self.attachAsset('starBackground', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 2; self.update = function () { self.y += self.speed; if (self.y > 2732) { self.y = 0; } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ // Initialize star background var starBackground = new StarBackground(); starBackground.x = 2048 / 2; starBackground.y = 0; game.addChild(starBackground); // Initialize arrays and variables var hero; var heroBullets = []; var enemies = []; var asteroids = []; var enemyBullets = []; var score = 0; var scoreTxt = new Text2('0', { size: 150, fill: "#ffffff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Initialize hero hero = new Hero(); hero.x = 2048 / 2; hero.y = 2732 - 200; game.addChild(hero); // Handle game events game.down = function (x, y, obj) { hero.x = x; hero.y = y; }; game.move = function (x, y, obj) { hero.x = x; hero.y = y; }; game.update = function () { // Update star background starBackground.update(); // Update hero bullets for (var i = heroBullets.length - 1; i >= 0; i--) { heroBullets[i].update(); // Check for collision between hero bullets and enemies for (var i = heroBullets.length - 1; i >= 0; i--) { for (var j = enemies.length - 1; j >= 0; j--) { if (heroBullets[i].intersects(enemies[j])) { enemies[j].destroy(); enemies.splice(j, 1); heroBullets[i].destroy(); heroBullets.splice(i, 1); score += 10; // Increase score by 10 break; } } } } // Update enemies for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].update(); if (hero.intersects(enemies[j])) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } } // Update enemy bullets for (var i = enemyBullets.length - 1; i >= 0; i--) { enemyBullets[i].update(); if (hero.intersects(enemyBullets[i])) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } for (var j = heroBullets.length - 1; j >= 0; j--) { if (enemyBullets[i] && heroBullets[j] && enemyBullets[i].intersects(heroBullets[j])) { enemyBullets[i].destroy(); heroBullets[j].destroy(); enemyBullets.splice(i, 1); heroBullets.splice(j, 1); break; } } } for (var k = asteroids.length - 1; k >= 0; k--) { if (asteroids[k]) { asteroids[k].update(); for (var i = heroBullets.length - 1; i >= 0; i--) { if (heroBullets[i].intersects(asteroids[k])) { heroBullets[i].destroy(); heroBullets.splice(i, 1); break; } } if (hero.intersects(asteroids[k])) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } } } // Spawn enemies if (LK.ticks % 30 == 0) { var enemy = new Enemy(); enemy.x = Math.random() * 2048; enemy.y = -enemy.height; game.addChild(enemy); enemies.push(enemy); } // Spawn asteroids if (LK.ticks % 280 == 0) { var asteroid = new Asteroid(); asteroid.x = Math.random() * 2048; asteroid.y = -asteroid.height; // Set random scale for the asteroid var scale = 0.5 + Math.random() * 1.5; asteroid.scale.set(scale, scale); game.addChild(asteroid); asteroids.push(asteroid); } // Update score scoreTxt.setText(score); }; // Shoot bullets game.down = function (x, y, obj) { hero.shoot(); };
===================================================================
--- original.js
+++ change.js
@@ -32,9 +32,9 @@
} else {
self.x += Math.sin(LK.ticks / 10) * 5;
self.y += Math.cos(LK.ticks / 10) * 5;
// Shoot bullet towards hero
- if (LK.ticks % 60 == 0) {
+ if (LK.ticks % 100 == 0) {
var bullet = new EnemyBullet();
bullet.x = self.x;
bullet.y = self.y + enemyGraphics.height / 2;
// Calculate angle towards hero