From de78893aec1d5a4a0ae84610f2f01f78e9455f18 Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Fri, 29 May 2020 17:16:33 -0700 Subject: [PATCH] Add new game.js with a new parent class Game 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. --- empires.js | 10 +++++++--- game.js | 8 ++++++++ tictactoe.js | 8 ++++++-- 3 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 game.js diff --git a/empires.js b/empires.js index 7907ce0..749f26e 100644 --- a/empires.js +++ b/empires.js @@ -1,4 +1,7 @@ const express = require("express"); +const Game = require("./game.js"); + +const engine_name = "empires"; const router = express.Router(); @@ -30,8 +33,9 @@ function shuffle(a) { } } -class Game { +class Empires extends Game { constructor() { + super(engine_name); this._spectators = []; this.next_spectator_id = 1; this._players = []; @@ -387,5 +391,5 @@ router.get('/players', (request, response) => { router.get('/events', handle_events); exports.router = router; -exports.name = "empires"; -exports.Game = Game; +exports.name = engine_name; +exports.Game = Empires; diff --git a/game.js b/game.js new file mode 100644 index 0000000..028c039 --- /dev/null +++ b/game.js @@ -0,0 +1,8 @@ +/* Base class providing common code for game engine implementations. */ +class Game { + constructor(name) { + this.name = name; + } +} + +module.exports = Game; diff --git a/tictactoe.js b/tictactoe.js index a38cea0..5b8729e 100644 --- a/tictactoe.js +++ b/tictactoe.js @@ -1,9 +1,13 @@ 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 = []; @@ -100,5 +104,5 @@ router.get('/events', (request, response) => { }); exports.router = router; -exports.name = "tictactoe"; +exports.name = engine_name; exports.Game = TicTacToe; -- 2.43.0