/****
* Classes
****/
// Bullet class for projectiles fired by towers
var Bullet = Container.expand(function (startX, startY, target) {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.target = target;
self.x = startX;
self.y = startY;
self.update = function () {
var dx = self.target.x - self.x;
var dy = self.target.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < 10) {
self.target.hit();
self.destroy();
} else {
self.x += dx / distance * self.speed;
self.y += dy / distance * self.speed;
}
};
});
// Enemy class for the creatures attacking the realm
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2;
self.health = 100;
self.update = function () {
self.x -= self.speed;
if (self.x < 0) {
// Enemy reached the end, game over logic
LK.showGameOver();
}
};
self.hit = function () {
self.health -= 50;
if (self.health <= 0) {
self.destroy();
enemies.splice(enemies.indexOf(self), 1);
}
};
});
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Tower class to represent defense towers
var Tower = Container.expand(function () {
var self = Container.call(this);
var towerGraphics = self.attachAsset('tower', {
anchorX: 0.5,
anchorY: 0.5
});
self.range = 300;
self.fireRate = 60; // Fire every 60 frames
self.fireCooldown = 0;
self.update = function () {
if (self.fireCooldown > 0) {
self.fireCooldown--;
}
};
self.canFire = function () {
return self.fireCooldown === 0;
};
self.fire = function (target) {
if (self.canFire()) {
var bullet = new Bullet(self.x, self.y, target);
game.addChild(bullet);
bullets.push(bullet);
self.fireCooldown = self.fireRate;
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundImage: 'green_meadow'
});
/****
* Game Code
****/
// Initialize arrays and variables
var towers = [];
var bullets = [];
var enemies = [];
// Create and position towers
function createTowers() {
var tower1 = new Tower();
tower1.x = 500;
tower1.y = 1366;
game.addChild(tower1);
towers.push(tower1);
var tower2 = new Tower();
tower2.x = 1500;
tower2.y = 1366;
game.addChild(tower2);
towers.push(tower2);
}
// Spawn enemies at intervals
function spawnEnemy() {
var enemy = new Enemy();
enemy.x = 2048;
enemy.y = Math.random() * 2732;
game.addChild(enemy);
enemies.push(enemy);
}
// Game update loop
game.update = function () {
// Update towers
towers.forEach(function (tower) {
tower.update();
enemies.forEach(function (enemy) {
if (tower.canFire() && Math.abs(tower.x - enemy.x) < tower.range) {
tower.fire(enemy);
}
});
});
// Update bullets
bullets.forEach(function (bullet) {
bullet.update();
});
// Update enemies
enemies.forEach(function (enemy) {
enemy.update();
});
// Spawn enemies every 120 frames
if (LK.ticks % 120 === 0) {
spawnEnemy();
}
};
// Initialize game elements
createTowers(); ===================================================================
--- original.js
+++ change.js
@@ -1,142 +1,142 @@
-/****
+/****
* Classes
-****/
+****/
// Bullet class for projectiles fired by towers
var Bullet = Container.expand(function (startX, startY, target) {
- var self = Container.call(this);
- var bulletGraphics = self.attachAsset('bullet', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- self.speed = 10;
- self.target = target;
- self.x = startX;
- self.y = startY;
- self.update = function () {
- var dx = self.target.x - self.x;
- var dy = self.target.y - self.y;
- var distance = Math.sqrt(dx * dx + dy * dy);
- if (distance < 10) {
- self.target.hit();
- self.destroy();
- } else {
- self.x += dx / distance * self.speed;
- self.y += dy / distance * self.speed;
- }
- };
+ var self = Container.call(this);
+ var bulletGraphics = self.attachAsset('bullet', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 10;
+ self.target = target;
+ self.x = startX;
+ self.y = startY;
+ self.update = function () {
+ var dx = self.target.x - self.x;
+ var dy = self.target.y - self.y;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ if (distance < 10) {
+ self.target.hit();
+ self.destroy();
+ } else {
+ self.x += dx / distance * self.speed;
+ self.y += dy / distance * self.speed;
+ }
+ };
});
// Enemy class for the creatures attacking the realm
var Enemy = Container.expand(function () {
- var self = Container.call(this);
- var enemyGraphics = self.attachAsset('enemy', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- self.speed = 2;
- self.health = 100;
- self.update = function () {
- self.x -= self.speed;
- if (self.x < 0) {
- // Enemy reached the end, game over logic
- LK.showGameOver();
- }
- };
- self.hit = function () {
- self.health -= 50;
- if (self.health <= 0) {
- self.destroy();
- enemies.splice(enemies.indexOf(self), 1);
- }
- };
+ var self = Container.call(this);
+ var enemyGraphics = self.attachAsset('enemy', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 2;
+ self.health = 100;
+ self.update = function () {
+ self.x -= self.speed;
+ if (self.x < 0) {
+ // Enemy reached the end, game over logic
+ LK.showGameOver();
+ }
+ };
+ self.hit = function () {
+ self.health -= 50;
+ if (self.health <= 0) {
+ self.destroy();
+ enemies.splice(enemies.indexOf(self), 1);
+ }
+ };
});
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Tower class to represent defense towers
var Tower = Container.expand(function () {
- var self = Container.call(this);
- var towerGraphics = self.attachAsset('tower', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- self.range = 300;
- self.fireRate = 60; // Fire every 60 frames
- self.fireCooldown = 0;
- self.update = function () {
- if (self.fireCooldown > 0) {
- self.fireCooldown--;
- }
- };
- self.canFire = function () {
- return self.fireCooldown === 0;
- };
- self.fire = function (target) {
- if (self.canFire()) {
- var bullet = new Bullet(self.x, self.y, target);
- game.addChild(bullet);
- bullets.push(bullet);
- self.fireCooldown = self.fireRate;
- }
- };
+ var self = Container.call(this);
+ var towerGraphics = self.attachAsset('tower', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.range = 300;
+ self.fireRate = 60; // Fire every 60 frames
+ self.fireCooldown = 0;
+ self.update = function () {
+ if (self.fireCooldown > 0) {
+ self.fireCooldown--;
+ }
+ };
+ self.canFire = function () {
+ return self.fireCooldown === 0;
+ };
+ self.fire = function (target) {
+ if (self.canFire()) {
+ var bullet = new Bullet(self.x, self.y, target);
+ game.addChild(bullet);
+ bullets.push(bullet);
+ self.fireCooldown = self.fireRate;
+ }
+ };
});
-/****
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000 //Init game with black background
+ backgroundImage: 'green_meadow'
});
-/****
+/****
* Game Code
-****/
+****/
// Initialize arrays and variables
var towers = [];
var bullets = [];
var enemies = [];
// Create and position towers
function createTowers() {
- var tower1 = new Tower();
- tower1.x = 500;
- tower1.y = 1366;
- game.addChild(tower1);
- towers.push(tower1);
- var tower2 = new Tower();
- tower2.x = 1500;
- tower2.y = 1366;
- game.addChild(tower2);
- towers.push(tower2);
+ var tower1 = new Tower();
+ tower1.x = 500;
+ tower1.y = 1366;
+ game.addChild(tower1);
+ towers.push(tower1);
+ var tower2 = new Tower();
+ tower2.x = 1500;
+ tower2.y = 1366;
+ game.addChild(tower2);
+ towers.push(tower2);
}
// Spawn enemies at intervals
function spawnEnemy() {
- var enemy = new Enemy();
- enemy.x = 2048;
- enemy.y = Math.random() * 2732;
- game.addChild(enemy);
- enemies.push(enemy);
+ var enemy = new Enemy();
+ enemy.x = 2048;
+ enemy.y = Math.random() * 2732;
+ game.addChild(enemy);
+ enemies.push(enemy);
}
// Game update loop
game.update = function () {
- // Update towers
- towers.forEach(function (tower) {
- tower.update();
- enemies.forEach(function (enemy) {
- if (tower.canFire() && Math.abs(tower.x - enemy.x) < tower.range) {
- tower.fire(enemy);
- }
- });
- });
- // Update bullets
- bullets.forEach(function (bullet) {
- bullet.update();
- });
- // Update enemies
- enemies.forEach(function (enemy) {
- enemy.update();
- });
- // Spawn enemies every 120 frames
- if (LK.ticks % 120 === 0) {
- spawnEnemy();
- }
+ // Update towers
+ towers.forEach(function (tower) {
+ tower.update();
+ enemies.forEach(function (enemy) {
+ if (tower.canFire() && Math.abs(tower.x - enemy.x) < tower.range) {
+ tower.fire(enemy);
+ }
+ });
+ });
+ // Update bullets
+ bullets.forEach(function (bullet) {
+ bullet.update();
+ });
+ // Update enemies
+ enemies.forEach(function (enemy) {
+ enemy.update();
+ });
+ // Spawn enemies every 120 frames
+ if (LK.ticks % 120 === 0) {
+ spawnEnemy();
+ }
};
// Initialize game elements
createTowers();
\ No newline at end of file
No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat. Goblin. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat. Tower with ballista. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
One bow arrow facing upwards. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
texture of the road made of large stones like tiles for a game. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Top view. Texture for 2D games. Green meadow.