A javascript port of the 350-point version of the classic Adventure game. I originally wrote this code as part of a Slackbot, where people could play the game by DM-ing the bot. I broke the code out of the original project so it could be reused and, well, here we are.
Install the game locally like:
$ npm install -g adventurejs
$ adventurejs
    Welcome to ADVENTURE!
  Original development by Willie Crowther.
  Major features added by Don Woods.
  Conversion to BDS C  by J. R. Jaeger.
  Unix standardization by Jerry D. Pohl.
  JS porting & tweaks  by Ray Myers.
    Would you like instructions?
>
You can also use this project as an API, so that the game iself can be used in all kinds of funky ways.
npm install --save adventurejs
-or-
yarn add adventurejs
const adventure = require("adventurejs");const game = adventure.makeState();
game.advance(); // -> ["", "    Welcome to ADVENTURE!", ...]Note: every call to .advance() will return an array of lines to show to the user.
game.advance("no"); // <- Takes a line from the user
  // -> ["You are standing at the end of a road before a small brick", ...]
game.isDone(); // <- Returns 'true' when the game is in an irreconcilable game-over state.The game state object is JSON-serializable, so saving the game to file could look like:
const fs = require('fs');
fs.writeFileSync("./mygame.save", JSON.stringify(s));The .makeState() method can accept a JS object to initialize itself, so loading could look like:
const raw = fs.readFileSync("./mygame.save", { encoding: 'utf8'});
const data = JSON.parse(raw);
const loadedGame = adventure.makeState(data);MIT