UNPKG

adventurejs

Version:

A javascript port of the 350-point version of the classic Adventure game.

80 lines (54 loc) 2.33 kB
# adventure.js [![Build Status](https://travis-ci.com/raydog/adventure.js.svg?branch=master)](https://travis-ci.com/raydog/adventure.js) [![Coverage Status](https://coveralls.io/repos/github/raydog/adventure.js/badge.svg?branch=master)](https://coveralls.io/github/raydog/adventure.js?branch=master) [![NPM Version](https://img.shields.io/npm/v/adventurejs.svg)](https://www.npmjs.com/package/adventurejs) 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. ## Playing the game 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? > ``` ## Using the game through an API You can also use this project as an API, so that the game iself can be used in all kinds of funky ways. ### Installing `npm install --save adventurejs` -or- `yarn add adventurejs` ### Usage #### Importing: ```javascript const adventure = require("adventurejs"); ``` #### Starting a new game: ```javascript 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. #### Advancing the game: ```javascript 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. ``` #### Saving / Loading: The game state object is JSON-serializable, so saving the game to file could look like: ```javascript 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: ```javascript const raw = fs.readFileSync("./mygame.save", { encoding: 'utf8'}); const data = JSON.parse(raw); const loadedGame = adventure.makeState(data); ``` ## License MIT