This new parent is now extended by our two game classes: Empires and
TicTacToe. There's not yet any real functionality in the Game class
yet, (just storage of the name of the engine). But this will give us a
place to lodge some common functionality as we aim to reduce code
duplication.
const express = require("express");
+const Game = require("./game.js");
+
+const engine_name = "empires";
const router = express.Router();
}
}
-class Game {
+class Empires extends Game {
constructor() {
+ super(engine_name);
this._spectators = [];
this.next_spectator_id = 1;
this._players = [];
router.get('/events', handle_events);
exports.router = router;
-exports.name = "empires";
-exports.Game = Game;
+exports.name = engine_name;
+exports.Game = Empires;
--- /dev/null
+/* Base class providing common code for game engine implementations. */
+class Game {
+ constructor(name) {
+ this.name = name;
+ }
+}
+
+module.exports = Game;
const express = require("express");
+const Game = require("./game.js");
+
+const engine_name = "tictactoe";
const router = express.Router();
-class TicTacToe {
+class TicTacToe extends Game {
constructor() {
+ super(engine_name);
this.moves = [];
this.board = Array(9).fill(null);
this.clients = [];
});
exports.router = router;
-exports.name = "tictactoe";
+exports.name = engine_name;
exports.Game = TicTacToe;