Simple Text-Based Adventure Game in Node.js
Shawn2208
Posted on August 12, 2023
In this tutorial, we'll walk through creating a simple text-based adventure game in Node.js using the inquirer library for user prompts.
Prerequisites
Basic knowledge of JavaScript and Node.js.
Node.js installed on your computer.
Setting Up
First, create a new directory called simple-game:
mkdir simple-game
cd simple-game
Initialize a new npm project:
npm init -y
Install the inquirer library:
npm i inquirer
To allow the use of ES6 import/export syntax, open package.json and add the following line:
"type": "module",
Create a new file named game.js.
// Import the 'inquirer' library to handle user input
import inquirer from 'inquirer';
// Define an array of different game scenarios
const scenarios = [
// Scenario 1: Introduction
{
name: 'intro',
message: 'You wake up in a mysterious room. What do you do?',
choices: [
{ name: 'Look around', nextScenario: 'lookAround' },
{ name: 'Open the door', nextScenario: 'openDoor' }
]
},
// Scenario 2: Looking around
{
name: 'lookAround',
message: 'You find an old key on a table and a window that is slightly ajar. What do you do?',
choices: [
{ name: 'Take the key', nextScenario: 'takeKey' },
{ name: 'Open the window', nextScenario: 'openWindow' }
]
},
// Scenario 3: Opening the door
{
name: 'openDoor',
message: 'The door creaks open, revealing a dark hallway.',
choices: [
{ name: 'Enter the hallway', nextScenario: 'darkHallway' },
{ name: 'Stay in the room', nextScenario: 'stayInRoom' }
]
},
// ... (more scenarios)
// Scenario 7: Conclusion
{
name: 'ending',
message: 'Congratulations! You have completed the adventure.',
choices: []
}
];
// Function to present a scenario and get player choice
const presentScenario = async (scenario) => {
const answers = await inquirer.prompt([
{
type: 'list',
name: 'choice',
message: scenario.message,
choices: scenario.choices.map(choice => choice.name),
}
]);
return answers.choice;
};
// Function to start the game
const startGame = async () => {
// Start with the 'intro' scenario
let currentScenario = scenarios.find(scenario => scenario.name === 'intro');
// Continue looping through scenarios as long as there's a current scenario
while (currentScenario) {
// Present the current scenario to the player and get their choice
const playerChoice = await presentScenario(currentScenario);
// Find the next scenario based on the player's choice and update the current scenario
currentScenario = scenarios.find(scenario => scenario.name === currentScenario.choices.find(choice => choice.name === playerChoice).nextScenario);
}
// Print a thank-you message when the game ends
console.log('Thanks for playing! Goodbye.');
};
// Start the game by calling the startGame function
startGame();
This code defines various game scenarios and presents them to the player in sequence.
Each scenario provides the player with multiple choices. When a choice is made, the game moves to the next scenario.
Playing the Game
To play the game, run the following command in your terminal:
node game.js
Conclusion
With just a few lines of code, you've created a simple, engaging text-based adventure game in Node.js! This is just the foundation – you can expand on this by adding more scenarios, integrating more libraries, or even creating a graphical interface.
There you go! A simple tutorial on how to create a text-based adventure game in Node.js. You can further extend this by adding images, sounds, or even making it have a health system and more complex with additional logic and scenarios.
Posted on August 12, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.