User prompt
Migrate to the latest version of LK
User prompt
Fix Bug: 'TypeError: requestAnimationFrame is not a function' in this line: 'requestAnimationFrame(self.update);' Line Number: 29
User prompt
improve the fps counter
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.game.removeEnemy(self);' Line Number: 82
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.game.removeEnemy(self);' Line Number: 82
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.gameInstance.removeEnemy(self);' Line Number: 82
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.game.removeEnemy(self);' Line Number: 82
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.gameInstance.removeEnemy(self);' Line Number: 82
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.game.removeEnemy(self);' Line Number: 82
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.game.removeEnemy(self);' Line Number: 82
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.game.removeEnemy(self);' Line Number: 82
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.gameInstance.removeEnemy(self);' Line Number: 82
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.game.removeEnemy(self);' Line Number: 82
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.game.removeEnemy(self);' Line Number: 85
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.gameInstance.removeEnemy(self);' Line Number: 82
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.game.removeEnemy(self);' Line Number: 82
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.gameInstance.removeEnemy(self);' Line Number: 82
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.game.removeEnemy(self);' Line Number: 82
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.game.removeEnemy(self);' Line Number: 81
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.game.removeEnemy(self);' Line Number: 80
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.game.removeEnemy(self);' Line Number: 79
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.game.removeEnemy(self);' Line Number: 79
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.game.removeEnemy(self);' Line Number: 79
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.game.removeEnemy(self);' Line Number: 80
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'removeEnemy')' in this line: 'self.game.removeEnemy(self);' Line Number: 80
===================================================================
--- original.js
+++ change.js
@@ -13,30 +13,29 @@
self.display.anchor.set(1, 0);
self.updateDisplay = function () {
self.display.setText('FPS: ' + Math.round(self.framerate).toString());
};
- self.update = function () {
- var currentTime = Date.now();
+ self.update = function (timestamp) {
+ if (!self.lastTime) {
+ self.lastTime = timestamp;
+ }
+ var delta = timestamp - self.lastTime;
self.frameCount++;
- var elapsedTime = (currentTime - self.lastTime) / 1000;
- if (elapsedTime >= 1) {
- self.framerate = self.frameCount / elapsedTime;
+ if (delta >= 1000) {
+ self.framerate = self.frameCount;
self.updateDisplay();
self.frameCount = 0;
- self.lastTime = currentTime;
+ self.lastTime = timestamp;
}
+ requestAnimationFrame(self.update);
};
});
-var Bullet = Container.expand(function () {
- var self = Container.call(this);
- self.update = function () {};
-});
var Plain = Container.expand(function () {
var self = Container.call(this);
var plainGraphics = self.createAsset('correct_plain_asset_id', 'Correct Plain Graphics Description', .5, .5);
plainGraphics.scale.x = 2;
plainGraphics.scale.y = 2;
- plainGraphics.alpha = 0;
+ plainGraphics.alpha = 1;
self.shoot = function (enemies, bulletsContainer) {
if (self.cooldownTimer <= 0 && enemies.length > 0) {
var bullet = new Bullet(self);
bullet.x = self.x;
@@ -49,19 +48,17 @@
});
var Tower = Container.expand(function (gameInstance) {
var self = Container.call(this);
self.game = gameInstance;
+ self.game = gameInstance;
var towerGraphics = self.createAsset('tower', 'Tower Graphics', .5, .5);
- self.cooldown = 0.625 / 0.7 * (1 / 0.6) * 1.3;
+ self.cooldown = 2.5;
self.cooldownTimer = 0;
self.shoot = function (enemies, bullets) {
- this.handleShooting(enemies, bullets);
- };
- self.handleShooting = function (enemies, bullets) {
- self.cooldownTimer--;
if (self.cooldownTimer <= 0 && enemies.length > 0) {
self.fireBullet(bullets);
}
+ self.cooldownTimer--;
};
self.fireBullet = function (bullets) {
var bullet = new Bullet(self.game);
bullet.x = self.x;
@@ -71,33 +68,27 @@
self.cooldownTimer = self.cooldown;
};
});
var Enemy = Container.expand(function (gameInstance) {
- var self = Container.call(this, gameInstance);
+ var self = Container.call(this);
self.game = gameInstance;
var enemyGraphics = self.createAsset('enemy', 'Enemy Graphics', .5, .5);
- var enemySpeed = 25.6 * 0.7 * 0.6;
self.move = function () {
- self.y += enemySpeed;
+ self.y += 12.8;
if (self.y > 2732) {
- self.game.removeEnemy(self);
+ self.destroy();
}
};
- self.updatePosition = function () {
- self.y += enemySpeed;
- if (self.y > 2732) {
- self.game.removeEnemy(self);
- }
- };
});
-var EnemyBullet = Container.expand(function (gameInstance) {
+var Bullet = Container.expand(function (gameInstance) {
var self = Container.call(this);
self.game = gameInstance;
- var bulletGraphics = self.createAsset('enemy_bullet', 'Enemy Bullet Graphics', .5, .5);
- self.update = function () {
- self.x += 240;
- if (self.x > 2098) {
- self.game.removeBullet(self);
+ self.game = gameInstance;
+ var bulletGraphics = self.createAsset('bullet', 'Bullet Graphics', .5, .5);
+ self.move = function () {
+ self.x += 120;
+ if (self.x > 2048) {
+ self.destroy();
}
};
});
@@ -110,44 +101,40 @@
/****
* Game Code
****/
-game.incrementScore = function () {
- game.score++;
-};
-game.removeEnemy = function (enemy) {
- var index = game.enemies.indexOf(enemy);
- if (index > -1) {
- enemy.destroy();
- game.enemies.splice(index, 1);
- }
-};
-game.removeBullet = function (bullet) {
- var index = game.bullets.indexOf(bullet);
- if (index > -1) {
- bullet.destroy();
- game.bullets.splice(index, 1);
- }
-};
game.spawnEnemies = function () {
- game.generateEnemies();
-};
-game.generateEnemies = function () {
- game.enemiesSpawnedLastRound += 10;
- for (var i = 0; i < game.enemiesSpawnedLastRound; i++) {
- var newEnemy = new Enemy(game);
+ enemiesSpawnedLastRound += 6;
+ for (var i = 0; i < enemiesSpawnedLastRound; i++) {
+ var newEnemy = new Enemy();
newEnemy.x = Math.random() * 2048;
- newEnemy.y = -25 * (i + 1);
+ newEnemy.y = -50 * (i + 1);
game.enemies.push(newEnemy);
game.addChild(newEnemy);
}
game.enemyCounterTxt.setText('Enemies: ' + game.enemies.length.toString());
};
game.updateEnemyCounter = function () {};
game.score = 0;
+game.gold = 100;
+game.incrementScore = function () {
+ this.score++;
+};
game.frameRateCounter = new FrameRateCounter();
LK.gui.topRight.addChild(game.frameRateCounter.display);
var enemiesSpawnedLastRound = 1;
+game.scoreTxt = new Text2(game.score.toString(), {
+ size: 150,
+ fill: "#ffffff"
+});
+game.scoreTxt.anchor.set(0.5, 0);
+LK.gui.topCenter.addChild(game.scoreTxt);
+game.goldTxt = new Text2(game.gold.toString(), {
+ size: 150,
+ fill: "#ffff00"
+});
+game.goldTxt.anchor.set(0, 0);
+LK.gui.topLeft.addChild(game.goldTxt);
game.enemies = [];
game.enemyCounterTxt = new Text2('Enemies: ' + game.enemies.length.toString(), {
size: 150,
fill: "#ff0000"
@@ -159,10 +146,10 @@
game.bullets = [];
game.bulletsContainer = game.addChild(new Container());
game.enemies = [];
var initialTower = new Tower(game);
-initialTower.x = 0 + initialTower.width / 2 - 260;
-initialTower.y = 500 + initialTower.height / 2 + 300 + 800 + 500;
+initialTower.x = 0 + initialTower.width / 2 - 130;
+initialTower.y = 500 + initialTower.height / 2 + 300;
towers.push(initialTower);
game.addChild(initialTower);
var plain = game.addChild(new Plain());
plain.x = 2048 / 2;
@@ -175,32 +162,46 @@
game.addChild(enemy);
game.on('down', function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(game);
- var newTower = new Tower(game);
- newTower.x = pos.x;
- newTower.y = pos.y;
- game.addChild(newTower);
- towers.push(newTower);
+ if (game.gold >= 50) {
+ var newTower = new Tower(game);
+ newTower.x = pos.x;
+ newTower.y = pos.y;
+ game.addChild(newTower);
+ towers.push(newTower);
+ game.gold -= 50;
+ game.goldTxt.setText(game.gold.toString());
+ }
});
LK.on('tick', function () {
- game.frameRateCounter.update(enemiesSpawnedLastRound);
+ game.frameRateCounter.update();
if (game.enemies.length === 0) {
game.spawnEnemies();
+ } else {
+ towers.forEach(function (tower) {
+ tower.shoot(game.enemies, game.bullets);
+ });
}
- towers.forEach(function (tower) {
- tower.shoot(game.enemies, game.bullets);
- });
- var activeEnemies = game.enemies.filter(function (enemy) {
- return enemy.y < 2732;
- });
- activeEnemies.forEach(function (enemy) {
+ game.enemies.forEach(function (enemy) {
enemy.move();
});
- var activeBullets = game.bullets.filter(function (bullet) {
- return bullet.x < 2048;
+ game.bullets.forEach(function (bullet, index) {
+ bullet.move();
+ for (var j = game.enemies.length - 1; j >= 0; j--) {
+ if (bullet.intersects(game.enemies[j])) {
+ game.enemies[j].destroy();
+ game.enemies.splice(j, 1);
+ game.incrementScore();
+ game.scoreTxt.setText(game.score.toString());
+ game.gold += 50;
+ bullet.destroy();
+ game.enemyCounterTxt.setText('Enemies: ' + game.enemies.length.toString());
+ break;
+ }
+ }
+ if (bullet.x > 2048) {
+ bullet.destroy();
+ game.bullets.splice(index, 1);
+ }
});
- activeBullets.forEach(function (bullet) {
- bullet.update();
- });
- game.bullets = activeBullets;
});
\ No newline at end of file
A plain in a comic style with a dirt road with 4 turn staring to top to the botom see from a top and 50 meter high view Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A tower shooting at enemy in a modern style Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A single soldat walking downard in a 16 bit style Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.