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