User prompt
move score text 5 pixels down
User prompt
move score text 5 pixels down
User prompt
change score text to black and and shades
User prompt
mov score and score icon 20 pixels up
User prompt
Fix Bug: 'Uncaught TypeError: Graphics is not a constructor' in this line: 'var topArea = new Graphics();' Line Number: 184
User prompt
top 200 pixels of screen should be white
User prompt
move background down, should have 200 pixels in the start empty
Code edit (10 edits merged)
Please save this source code
User prompt
add a small circle in the middle of the x axis line
User prompt
add a very small circle in the middle of the scree
User prompt
add line in the middle of the screen throught the x axis
Code edit (3 edits merged)
Please save this source code
User prompt
move wavemessage text 50% closer to the wavemessageimage
Code edit (1 edits merged)
Please save this source code
Code edit (14 edits merged)
Please save this source code
User prompt
move wavemessagetext to the right of the wavemessageimage
Code edit (1 edits merged)
Please save this source code
User prompt
make message text 30% closer the the message image
User prompt
move message text closer to message image
User prompt
add background to the game
User prompt
Fix Bug: 'Uncaught ReferenceError: score is not defined' in this line: 'var scoreTxt = new Text2(score.toString(), {' Line Number: 206
User prompt
reset score when new game starts
Code edit (1 edits merged)
Please save this source code
User prompt
remove all messages from screen after game re starts
User prompt
hero cant move in the top 250 pixels of the screen
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 * 0.7; 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.targetPosition = null; self.setTargetPosition = function (x, y) { self.targetPosition = { x: x, y: Math.max(y, 250) }; }; self.move = function () { if (self.targetPosition) { var dx = self.targetPosition.x - this.x; var dy = self.targetPosition.y - this.y; var magnitude = Math.sqrt(dx * dx + dy * dy); if (magnitude > 5) { this.x += dx / magnitude * 10; this.y += dy / magnitude * 10; } else { this.x = self.targetPosition.x; this.y = self.targetPosition.y; self.targetPosition = null; } } }; 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 = 4 + enemySpeedIncrease; var newX = this.x + dx / magnitude * speed; var newY = this.y + dy / magnitude * speed; var minX = 600, maxX = 1500, 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 + enemySpeedIncrease; 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 + enemySpeedIncrease; 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 + enemySpeedIncrease; 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 + enemySpeedIncrease; 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 = 7 + enemySpeedIncrease; 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 enemySpeedIncrease = 0; var Game = Container.expand(function () { var self = Container.call(this); stage.on('down', function (obj) { var pos = obj.event.getLocalPosition(self); hero.setTargetPosition(pos.x, pos.y); }); var background = self.createAsset('background', 'Game Background', 0, 0); background.width = 2048; background.height = 2732; self.addChild(background); 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 scoreIcon = LK.getAsset('scoreIcon', 'Score Icon', 0, 0); scoreIcon.x = 50; scoreIcon.y = 50; LK.gui.addChild(scoreIcon); var scoreTxt = new Text2(score.toString(), { size: 150, fill: "#ffffff" }); scoreTxt.anchor.set(0, 0.5); scoreTxt.x = scoreIcon.x + scoreIcon.width + 10; scoreTxt.y = scoreIcon.y + scoreIcon.height / 2; LK.gui.addChild(scoreTxt); var enemies = []; var waveIndex = 0; var maxWaveCount = 6; var waveTimer = 300; var waveInterval = 300; var heroBullets = []; self.messageTimeouts = []; var enemyBullets = []; hero.x = 2048 / 2; hero.y = 2732 - 700; 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 = ['Its kick off time! Youve got this Lio!', 'Watch it, some fans got through!', 'End of match, time to handle the press!', 'Wow, hooligans are getting wild, watch out!', 'This is the ultimate test!', 'Final wave incoming!']; var waveMessage = new WaveMessage(waveIndex); waveMessage.setMessage(waveMessages[waveIndex % waveMessages.length]); switch (waveIndex % 6) { case 0: waveMessage.x = 2048 / 3; waveMessage.y = 2732 / 3; break; case 1: waveMessage.x = 2048 / 4; waveMessage.y = 2732 / 4; break; case 2: waveMessage.x = 2048 / 3; waveMessage.y = 2732 / 2; break; case 3: waveMessage.x = 2048 / 8; waveMessage.y = 2732 / 8; break; case 4: waveMessage.x = 2048 / 2; waveMessage.y = 2732 / 2; break; case 5: waveMessage.x = 2048 / 3; waveMessage.y = 2732 / 2; break; } LK.gui.addChild(waveMessage); var messageTimeout = LK.setTimeout(function () { waveMessage.destroy(); }, 2000); self.messageTimeouts.push(messageTimeout); if (waveIndex == 0) { for (var i = 0; i < self.getEnemyCountForWave(waveIndex); i++) { var newEnemy = new EnemyWave0(self.getEnemyCountForWave(waveIndex)); newEnemy.x = 1000; newEnemy.y = 0; enemies.push(newEnemy); self.addChild(newEnemy); } for (var i = 0; i < self.getEnemyCountForWave(waveIndex + 1); i++) { var newEnemy = new EnemyWave1(self.getEnemyCountForWave(waveIndex + 1)); newEnemy.x = Math.random() * 2048; newEnemy.y = 0; enemies.push(newEnemy); self.addChild(newEnemy); } waveIndex += 2; } else { 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 = 2732; 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)) { self.messageTimeouts.forEach(function (timeout) { LK.clearTimeout(timeout); }); 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++; enemySpeedIncrease += 0.1; 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(); } }); });
===================================================================
--- original.js
+++ change.js
@@ -241,9 +241,9 @@
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 waveMessages = ['Its kick off time! Youve got this Lio!', 'Watch it, some fans got through!', 'End of match, time to handle the press!', 'Wow, hooligans are getting wild, watch out!', 'This is the ultimate test!', 'Final wave incoming!'];
var waveMessage = new WaveMessage(waveIndex);
waveMessage.setMessage(waveMessages[waveIndex % waveMessages.length]);
switch (waveIndex % 6) {
case 0: