User prompt
Fix Bug: 'ReferenceError: enemySpeedIncrease is not defined' in this line: 'var speed = 1 + enemySpeedIncrease;' Line Number: 53
User prompt
Fix Bug: 'ReferenceError: enemySpeedIncrease is not defined' in this line: 'var speed = 1 + enemySpeedIncrease;' Line Number: 53
User prompt
Fix Bug: 'ReferenceError: enemySpeedIncrease is not defined' in this line: 'var speed = 1 + enemySpeedIncrease;' Line Number: 53
User prompt
Fix Bug: 'ReferenceError: enemySpeedIncrease is not defined' in this line: 'var speed = 1 + enemySpeedIncrease;' Line Number: 53
User prompt
increase enemyy speed every time a score is added
User prompt
increase game speed every time a point is added to the score
User prompt
Fix Bug: 'ReferenceError: score is not defined' in this line: 'var speed = 1 + score / 100;' Line Number: 53
User prompt
increase game dificulty as player adds more score
Code edit (2 edits merged)
Please save this source code
User prompt
keep the current independent enemy speed, but multiply them by a editable number every time the player adds a point in score
User prompt
add option to hardcode a diffeerent messagetext for each wave
Code edit (4 edits merged)
Please save this source code
User prompt
wavemessage text should be below the wavemessageimage
Code edit (1 edits merged)
Please save this source code
User prompt
Fix Bug: 'ReferenceError: waveMessage is not defined' in this line: 'var messageText = new Text2(waveMessage, {' Line Number: 3
User prompt
allow the option to customize independetly the message for each wave
User prompt
wave message should appear 500 pixels away from hero
User prompt
each wavemessage will be diferent and i need to be able to define it by code for every wave
User prompt
add a variable for every wave message to introduce custom message
User prompt
add a different random text for every wavemessage.
User prompt
how do I show a wave specific message before every wave. this message should also show an image which will be different for every wave.
Code edit (2 edits merged)
Please save this source code
User prompt
show wavemesage in the center of the screen
User prompt
Within the 'Game' class, at the point where a new wave is about to spawn (right before the enemies are created and added to the game), instantiate the message class or call the function you created. This should be done inside the tick event listener, where you check if the waveTimer has reached the waveInterval.
User prompt
Create a new class or function that will handle the display of the message and image. This class should create a container that includes both the text message and the image asset.
var WaveMessage = Container.expand(function (waveIndex) { var self = Container.call(this); var messageImage = self.createAsset('wave' + waveIndex, 'Wave ' + (waveIndex + 1) + ' Image', .5, .5); self.addChild(messageImage); this.setMessage = function (customMessage) { var messageText = new Text2(customMessage, { size: 50, fill: "#ffffff" }); messageText.anchor.set(.5, .5); messageText.y = messageImage.height; self.addChild(messageText); }; }); var SpatialGrid = Container.expand(function (cellSize) { var self = Container.call(this); self.cellSize = cellSize; self.grid = {}; self._cellKey = function (x, y) { var cellX = Math.floor(x / self.cellSize); var cellY = Math.floor(y / self.cellSize); return cellX + ':' + cellY; }; self.insert = function (object) { var key = self._cellKey(object.x, object.y); if (!self.grid[key]) { self.grid[key] = []; } self.grid[key].push(object); }; self.retrieve = function (x, y) { var key = self._cellKey(x, y); return self.grid[key] || []; }; self.clear = function () { self.grid = {}; }; }); 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 EnemyWave0 = Container.expand(function (enemyCount) { var self = Container.call(this); self.enemyCount = 1; var enemyGraphics = self.createAsset('enemyWave0', 'Enemy Wave 0 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); var speed = 1 + score / 100; var newX = this.x + dx / magnitude * speed; var newY = this.y + dy / magnitude * speed; var minX = 100, maxX = 1948, minY = 100, maxY = 200; newX = Math.max(minX, Math.min(newX, maxX)); newY = Math.max(minY, Math.min(newY, maxY)); this.x = newX; this.y = newY; }; }); var EnemyWave1 = Container.expand(function (enemyCount) { var self = Container.call(this); self.enemyCount = 10; 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); var speed = 2.5 + score / 100; this.x += dx / magnitude * speed; this.y += dy / magnitude * speed; }; }); var EnemyWave2 = Container.expand(function (enemyCount) { var self = Container.call(this); self.enemyCount = 3; 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); var speed = 2 + score / 100; this.x += dx / magnitude * speed; this.y += dy / magnitude * speed; }; }); var EnemyWave3 = Container.expand(function (enemyCount) { var self = Container.call(this); self.enemyCount = 4; 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); var speed = 1.8 + score / 100; this.x += dx / magnitude * speed; this.y += dy / magnitude * speed; }; }); var EnemyWave4 = Container.expand(function (enemyCount) { var self = Container.call(this); self.enemyCount = 20; 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); var speed = 3 + score / 100; this.x += dx / magnitude * speed; this.y += dy / magnitude * speed; }; }); var EnemyWave5 = Container.expand(function (enemyCount) { var self = Container.call(this); self.enemyCount = 1; 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); var speed = 10 + score / 100; this.x += dx / magnitude * speed; this.y += dy / magnitude * speed; }; }); var HeroBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.createAsset('heroBullet', 'Hero Bullet', .5, .5); self.move = function (goalX, goalY) { var dx = goalX - this.x; var dy = goalY - this.y; var magnitude = Math.sqrt(dx * dx + dy * dy); this.x += dx / magnitude * 5; this.y += dy / magnitude * 5; }; }); 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 % 6) { case 0: return 1; case 1: return 10; case 2: return 3; case 3: return 4; case 4: return 20; case 5: return 1; } }; var goal = self.createAsset('goal', 'Goal asset', 0.5, 0.5); goal.width = 900; goal.height = 200; goal.x = 2048 / 2; goal.y = goal.height / 2; self.addChild(goal); var hero = self.addChild(new Hero()); var score = 0; var scoreTxt = new Text2(score.toString(), { size: 150, fill: "#ffffff" }); scoreTxt.anchor.set(.5, 0); LK.gui.topCenter.addChild(scoreTxt); var enemies = []; var waveIndex = 0; var maxWaveCount = 6; var waveTimer = 500; var waveInterval = 500; var heroBullets = []; var enemyBullets = []; hero.x = 2048 / 2; hero.y = 2732 / 2; var bulletTimer = 0; var bulletInterval = 100; LK.on('tick', function () { hero.move(); bulletTimer++; if (bulletTimer >= bulletInterval) { var newBullet = new HeroBullet(); newBullet.x = hero.x; newBullet.y = hero.y; heroBullets.push(newBullet); self.addChild(newBullet); bulletTimer = 0; } if (waveIndex < maxWaveCount) { waveTimer++; } if (waveTimer >= waveInterval && waveIndex < maxWaveCount) { var waveMessages = ['Prepare for battle!', 'Enemies approaching!', 'Brace yourself!', 'The fight intensifies!', 'This is the ultimate test!', 'Final wave incoming!']; var waveMessage = new WaveMessage(waveIndex); waveMessage.setMessage(waveMessages[waveIndex % waveMessages.length]); waveMessage.x = 2048 / 3; waveMessage.y = 2732 / 3; LK.gui.addChild(waveMessage); LK.setTimeout(function () { waveMessage.destroy(); }, 2000); for (var i = 0; i < self.getEnemyCountForWave(waveIndex); i++) { var newEnemy; var enemyCount = self.getEnemyCountForWave(waveIndex); switch (waveIndex % 6) { case 0: newEnemy = new EnemyWave0(enemyCount); newEnemy.x = 1000; newEnemy.y = 0; break; case 1: newEnemy = new EnemyWave1(enemyCount); newEnemy.x = Math.random() * 2048; newEnemy.y = 0; break; case 2: newEnemy = new EnemyWave2(enemyCount); newEnemy.x = Math.random() * 2048; newEnemy.y = 2732; break; case 3: newEnemy = new EnemyWave3(enemyCount); newEnemy.x = 2048; newEnemy.y = Math.random() * 2732; break; case 4: newEnemy = new EnemyWave4(enemyCount); newEnemy.x = 0; newEnemy.y = Math.random() * 2732; break; case 5: newEnemy = new EnemyWave5(enemyCount); newEnemy.x = 1000; newEnemy.y = 0; break; } enemies.push(newEnemy); self.addChild(newEnemy); } waveIndex++; waveTimer = 0; } var spatialGrid = new SpatialGrid(100); for (var i = 0; i < enemies.length; i++) { spatialGrid.insert(enemies[i]); } for (var i = 0; i < enemies.length; i++) { var enemy = enemies[i]; var nearbyEnemies = spatialGrid.retrieve(enemy.x, enemy.y); enemy.move(hero.x, hero.y); if (enemy.intersects(hero)) { LK.showGameOver(); return; } for (var j = 0; j < nearbyEnemies.length; j++) { var otherEnemy = nearbyEnemies[j]; if (otherEnemy !== enemy && enemy.intersects(otherEnemy)) { var overlapX = enemy.x - otherEnemy.x; var overlapY = enemy.y - otherEnemy.y; var overlapMagnitude = Math.sqrt(overlapX * overlapX + overlapY * overlapY); if (overlapMagnitude < 50) { enemy.x += overlapX / overlapMagnitude; enemy.y += overlapY / overlapMagnitude; } } } } spatialGrid.clear(); for (var i = heroBullets.length - 1; i >= 0; i--) { heroBullets[i].move(goal.x, goal.y); if (heroBullets[i].intersects(goal)) { var successAsset = self.createAsset('success', 'Success Asset', .5, .5); var dx = goal.x - heroBullets[i].x; var dy = goal.y - heroBullets[i].y; var magnitude = Math.sqrt(dx * dx + dy * dy); successAsset.x = heroBullets[i].x + dx / magnitude * 75; successAsset.y = heroBullets[i].y + dy / magnitude * 75; self.addChild(successAsset); LK.setTimeout(function () { successAsset.destroy(); }, 1000); heroBullets[i].destroy(); heroBullets.splice(i, 1); score++; scoreTxt.setText(score.toString()); continue; } for (var j = 0; j < enemies.length; j++) { if (heroBullets[i] && heroBullets[i].intersects(enemies[j])) { heroBullets[i].destroy(); heroBullets.splice(i, 1); break; } } } for (var i = 0; i < enemyBullets.length; i++) { enemyBullets[i].move(); } }); stage.on('move', function (obj) { var pos = obj.event.getLocalPosition(self); hero.x = pos.x; hero.y = pos.y; }); });
===================================================================
--- original.js
+++ change.js
@@ -49,9 +49,9 @@
self.move = function (heroX, heroY) {
var dx = heroX - this.x;
var dy = heroY - this.y;
var magnitude = Math.sqrt(dx * dx + dy * dy);
- var speed = 1 * Game.speedMultiplier;
+ var speed = 1 + score / 100;
var newX = this.x + dx / magnitude * speed;
var newY = this.y + dy / magnitude * speed;
var minX = 100, maxX = 1948, minY = 100, maxY = 200;
newX = Math.max(minX, Math.min(newX, maxX));
@@ -67,9 +67,9 @@
self.move = function (heroX, heroY) {
var dx = heroX - this.x;
var dy = heroY - this.y;
var magnitude = Math.sqrt(dx * dx + dy * dy);
- var speed = 2.5 * Game.speedMultiplier;
+ var speed = 2.5 + score / 100;
this.x += dx / magnitude * speed;
this.y += dy / magnitude * speed;
};
});
@@ -80,9 +80,9 @@
self.move = function (heroX, heroY) {
var dx = heroX - this.x;
var dy = heroY - this.y;
var magnitude = Math.sqrt(dx * dx + dy * dy);
- var speed = 2 * Game.speedMultiplier;
+ var speed = 2 + score / 100;
this.x += dx / magnitude * speed;
this.y += dy / magnitude * speed;
};
});
@@ -93,9 +93,9 @@
self.move = function (heroX, heroY) {
var dx = heroX - this.x;
var dy = heroY - this.y;
var magnitude = Math.sqrt(dx * dx + dy * dy);
- var speed = 1.8 * Game.speedMultiplier;
+ var speed = 1.8 + score / 100;
this.x += dx / magnitude * speed;
this.y += dy / magnitude * speed;
};
});
@@ -106,9 +106,9 @@
self.move = function (heroX, heroY) {
var dx = heroX - this.x;
var dy = heroY - this.y;
var magnitude = Math.sqrt(dx * dx + dy * dy);
- var speed = 3 * Game.speedMultiplier;
+ var speed = 3 + score / 100;
this.x += dx / magnitude * speed;
this.y += dy / magnitude * speed;
};
});
@@ -119,9 +119,9 @@
self.move = function (heroX, heroY) {
var dx = heroX - this.x;
var dy = heroY - this.y;
var magnitude = Math.sqrt(dx * dx + dy * dy);
- var speed = 10 * Game.speedMultiplier;
+ var speed = 10 + score / 100;
this.x += dx / magnitude * speed;
this.y += dy / magnitude * speed;
};
});
@@ -172,9 +172,8 @@
goal.y = goal.height / 2;
self.addChild(goal);
var hero = self.addChild(new Hero());
var score = 0;
- var speedMultiplier = 1.1;
var scoreTxt = new Text2(score.toString(), {
size: 150,
fill: "#ffffff"
});
@@ -297,9 +296,8 @@
}, 1000);
heroBullets[i].destroy();
heroBullets.splice(i, 1);
score++;
- speedMultiplier += 0.1;
scoreTxt.setText(score.toString());
continue;
}
for (var j = 0; j < enemies.length; j++) {