User prompt
add upward movement to hero bullets
User prompt
add movement to hero bullets
User prompt
bullets shoud be shot upwards
User prompt
invoke hero bullet move withing lk.on
User prompt
hero should shoot upwards
User prompt
add herobullet move into game
User prompt
herobullets should move upwards
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading '0')' in this line: 'if (!grid[gridX][gridY]) grid[gridX][gridY] = [];' Line Number: 169
User prompt
bullets should move upwards
User prompt
enable autoshoot for hero
User prompt
Fix Bug: 'ReferenceError: heroBullets is not defined' in this line: 'heroBullets.push(bullet);' Line Number: 10
User prompt
add shoot action from hero
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'push')' in this line: 'grid[gridX][gridY].push(enemies[i]);' Line Number: 167
User prompt
add herobullet. hero should shoot automatically. if herobullet collides with enemies it should be destroyed.
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'push')' in this line: 'grid[gridX][gridY].push(enemies[i]);' Line Number: 167
User prompt
add spatial partitioning to prevent enemies from colliding with each other
Code edit (4 edits merged)
Please save this source code
User prompt
make enemy wave 2 to spawn from the bottom of the screen
Code edit (1 edits merged)
Please save this source code
Code edit (2 edits merged)
Please save this source code
User prompt
add variable on each wave to define the position where they start spawning from.
Code edit (1 edits merged)
Please save this source code
User prompt
waves should stop spawning when reach maxwavecount
Code edit (2 edits merged)
Please save this source code
User prompt
add max wave count for game
var Hero = Container.expand(function () { var self = Container.call(this); var heroGraphics = self.createAsset('hero', 'Hero character', .5, .5); self.move = function () {}; self.shoot = function () {}; }); var EnemyWave1 = Container.expand(function (enemyCount) { var self = Container.call(this); self.enemyCount = 10; self.spawnX = 0; self.spawnY = 0; var enemyGraphics = self.createAsset('enemyWave1', 'Enemy Wave 1 character', .5, .5); self.move = function (heroX, heroY) { var dx = heroX - this.x; var dy = heroY - this.y; var magnitude = Math.sqrt(dx * dx + dy * dy); this.x += dx / magnitude * 2; this.y += dy / magnitude * 2; }; }); var EnemyWave2 = Container.expand(function (enemyCount) { var self = Container.call(this); self.enemyCount = 3; self.spawnX = 0; self.spawnY = 0; var enemyGraphics = self.createAsset('enemyWave2', 'Enemy Wave 2 character', .5, .5); self.move = function (heroX, heroY) { var dx = heroX - this.x; var dy = heroY - this.y; var magnitude = Math.sqrt(dx * dx + dy * dy); this.x += dx / magnitude * 2; this.y += dy / magnitude * 2; }; }); var EnemyWave3 = Container.expand(function (enemyCount) { var self = Container.call(this); self.enemyCount = 4; self.spawnX = 0; self.spawnY = 0; var enemyGraphics = self.createAsset('enemyWave3', 'Enemy Wave 3 character', .5, .5); self.move = function (heroX, heroY) { var dx = heroX - this.x; var dy = heroY - this.y; var magnitude = Math.sqrt(dx * dx + dy * dy); this.x += dx / magnitude * 2; this.y += dy / magnitude * 2; }; }); var EnemyWave4 = Container.expand(function (enemyCount) { var self = Container.call(this); self.enemyCount = 20; self.spawnX = 0; self.spawnY = 0; var enemyGraphics = self.createAsset('enemyWave4', 'Enemy Wave 4 character', .5, .5); self.move = function (heroX, heroY) { var dx = heroX - this.x; var dy = heroY - this.y; var magnitude = Math.sqrt(dx * dx + dy * dy); this.x += dx / magnitude * 2; this.y += dy / magnitude * 2; }; }); var EnemyWave5 = Container.expand(function (enemyCount) { var self = Container.call(this); self.enemyCount = 1; self.spawnX = 100; self.spawnY = 100; var enemyGraphics = self.createAsset('enemyWave5', 'Enemy Wave 5 character', .5, .5); self.move = function (heroX, heroY) { var dx = heroX - this.x; var dy = heroY - this.y; var magnitude = Math.sqrt(dx * dx + dy * dy); this.x += dx / magnitude * 2; this.y += dy / magnitude * 2; }; }); var HeroBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.createAsset('heroBullet', 'Hero Bullet', .5, .5); self.move = function (heroX, heroY) { var dx = heroX - this.x; var dy = heroY - this.y; var magnitude = Math.sqrt(dx * dx + dy * dy); this.x += dx / magnitude * 2; this.y += dy / magnitude * 2; }; }); var EnemyBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.createAsset('enemyBullet', 'Enemy Bullet', .5, .5); self.move = function (heroX, heroY) { var dx = heroX - this.x; var dy = heroY - this.y; var magnitude = Math.sqrt(dx * dx + dy * dy); this.x += dx / magnitude * 2; this.y += dy / magnitude * 2; }; }); var Game = Container.expand(function () { var self = Container.call(this); self.getEnemyCountForWave = function (waveIndex) { switch (waveIndex % 5) { case 0: return 10; case 1: return 3; case 2: return 4; case 3: return 20; case 4: return 1; } }; var hero = self.addChild(new Hero()); var enemies = []; var waveIndex = 0; var maxWaveCount = 5; var waveTimer = 500; var waveInterval = 500; var heroBullets = []; var enemyBullets = []; hero.x = 2048 / 2; hero.y = 2732 / 2; LK.on('tick', function () { hero.move(); if (waveIndex < maxWaveCount) { waveTimer++; } if (waveTimer >= waveInterval && waveIndex < maxWaveCount) { for (var i = 0; i < self.getEnemyCountForWave(waveIndex); i++) { var newEnemy; var enemyCount = self.getEnemyCountForWave(waveIndex); switch (waveIndex % 5) { case 0: newEnemy = new EnemyWave1(enemyCount); break; case 1: newEnemy = new EnemyWave2(enemyCount); break; case 2: newEnemy = new EnemyWave3(enemyCount); break; case 3: newEnemy = new EnemyWave4(enemyCount); break; case 4: newEnemy = new EnemyWave5(enemyCount); break; } newEnemy.x = Math.random() * 2048; newEnemy.y = -100; enemies.push(newEnemy); self.addChild(newEnemy); } waveIndex++; waveTimer = 0; } for (var i = 0; i < enemies.length; i++) { enemies[i].move(hero.x, hero.y); } for (var i = 0; i < heroBullets.length; i++) { heroBullets[i].move(); } for (var i = 0; i < enemyBullets.length; i++) { enemyBullets[i].move(); } }); stage.on('down', function (obj) { var pos = obj.event.getLocalPosition(self); hero.x = pos.x; hero.y = pos.y; hero.shoot(); }); });
===================================================================
--- original.js
+++ change.js
@@ -62,10 +62,10 @@
});
var EnemyWave5 = Container.expand(function (enemyCount) {
var self = Container.call(this);
self.enemyCount = 1;
- self.spawnX = 0;
- self.spawnY = 0;
+ self.spawnX = 100;
+ self.spawnY = 100;
var enemyGraphics = self.createAsset('enemyWave5', 'Enemy Wave 5 character', .5, .5);
self.move = function (heroX, heroY) {
var dx = heroX - this.x;
var dy = heroY - this.y;