Choose Your Adventure is a framework for creating CLI-based adventure games. The framework is structured into three main components: Game, Chapter, and Scene. This allows you to build interactive stories with ease.
To install the package, run:
npm install choose-your-adventure
You can import the components from the package as follows
import { Game, Chapter, Scene } from "choose-your-adventure";
A Game
holds multiple Chapters
. Each Chapter
contains multiple Scenes
.
Example
import { Game, Chapter, Scene } from "choose-your-adventure";
// Create scenes
const scene1 = new Scene("dialogue", "Welcome to the adventure!");
const scene2 = new Scene("input", "Enter your name:");
const scene3 = new Scene("choice", "Choose an option:", [
"Option 1",
"Option 2",
]);
// Create a chapter
const chapter1 = new Chapter(1, "Introduction", [scene1, scene2, scene3]);
// Create a game
const game = new Game("My Adventure Game", [chapter1]);
// Play the game from the beginning
game.playFromBeginning();
The Game
class is the main entry point for your adventure game. It holds multiple Chapters
.
new Game(title, chapters);
title
(string): The title of the game.chapters
(array): An array ofChapter
objects.
playFromBeginning()
: Starts the game from the beginning.
The Chapter
class represents a chapter in your adventure game. It holds multiple Scenes
new Chapter(id, title, plot);
id
(number): The ID of the chapter.title
(string): The title of the chapter.plot
(array): An array ofScene
objects
play()
: Plays the chapter.
The Scene
class represents a scene in your adventure game. It can be of different types: dialogue
, input
, or choice
.
new Scene(type, text, choices);
type
(string): The type of the scene (dialogue
,input
, orchoice
).text
(string): The text to display in the scene.choices
(array): An array of choices (only forchoice
type scenes).
play()
: Plays the scene.
choose-your-adventure/
├── src/
│ ├── game.js
│ ├── chapter.js
│ ├── scene.js
│ └── [index.js](http://_vscodecontentref_/0)
├── example/
│ └── chapters/
│ └── intro.js
├── [package.json](http://_vscodecontentref_/1)
└── [README.md](http://_vscodecontentref_/2)
Contributions are welcome! Please open an issue or submit a pull request on GitHub
This project is licensed under the ISC License.