Simple Text-Based Adventure Game in Node.js

shawn2208

Shawn2208

Posted on August 12, 2023

Simple Text-Based Adventure Game in Node.js

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

Enter fullscreen mode Exit fullscreen mode

Initialize a new npm project:

npm init -y

Enter fullscreen mode Exit fullscreen mode

Install the inquirer library:

npm i inquirer

Enter fullscreen mode Exit fullscreen mode

To allow the use of ES6 import/export syntax, open package.json and add the following line:

"type": "module",

Enter fullscreen mode Exit fullscreen mode

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();
Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

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.

💖 💪 🙅 🚩
shawn2208
Shawn2208

Posted on August 12, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Node.js Middleware and External Access
Introduction to Node
javascript Introduction to Node

February 15, 2021

Build a REST API in Node.js
javascript Build a REST API in Node.js

July 5, 2020