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.
Top comments (0)