Tower Defence Game Example
Here's an example of how you might use ECMAScript (ES) modules in a JavaScript tower defence game:
First, let's define a Tower
class in a file called Tower.js
:
export class Tower {
constructor(x, y, range, damage) {
this.x = x;
this.y = y;
this.range = range;
this.damage = damage;
}
attack(enemy) {
// Calculate distance from tower to enemy
const distance = Math.sqrt(Math.pow(enemy.x - this.x, 2) + Math.pow(enemy.y - this.y, 2));
if (distance <= this.range) {
enemy.health -= this.damage;
}
}
}
Next, let's define an Enemy
class in a file called Enemy.js
:
export class Enemy {
constructor(x, y, health) {
this.x = x;
this.y = y;
this.health = health;
}
}
Now, let's create a main game file called game.js
that imports the Tower
and Enemy
classes:
import { Tower } from './Tower.js';
import { Enemy } from './Enemy.js';
const tower = new Tower(5, 5, 3, 10);
const enemy = new Enemy(7, 7, 50);
tower.attack(enemy);
console.log(enemy.health); // 40
In this example, we have three separate JavaScript files: Tower.js
, Enemy.js
, and game.js
. The Tower
and Enemy
classes are defined in their own files and then exported using the export
keyword. These classes can then be imported into the game.js
file using the import
keyword.
This is just a simple example, but in a more complex game you could use ES modules to organize your code into separate modules for different game entities (e.g. towers, enemies, player characters, etc.), as well as for utility functions and other game logic.
Last updated