Overview

In the late 1990s and early 2000s, text-based multi-user games called MUDs (Multi-User Dungeons) were frequented by gamers.

While nothing like the 3 dimensional graphic shooters or builders (e.g., Minecraft), these were a way for computer gamers from all over the world to connect to a central server and socialize with others.

You will be designing a very simple MUD that only supports a single user and several rooms.

Assignment

You will be developing one of these text-based games by reading in a single file that contains a variable number of room descriptions (format of the file follows below).

First, your program will need to read a rooms file, whose name will be given as the first user-supplied command line argument.

You must dynamically allocate all memory associated with the rooms file. Furthermore, the rooms file must be completely read into memory, and then the file must be closed before the game starts.

After all the rooms are read, you will place the user in the very first room (index 0) and provide them with a command line where they may enter one of six commands:

q - Quit (closes the program)
l - Look (looks at the room the player is in)
n, e, s, w - Moves the user in the given cardinal direction (north, east, south, or west).
*If the room does not have an exit in the given direction, you must not move the player, but rather give them
an error message.

The "look" command will print the room information. An example of this information might be:

Short Room Title
Description of Room

Exits: n e s w ***(Only display the exits that exist in the room)***
The prompt for the user will be a greater than sign (>). You will then wait for the user to provide input until they quit the game using the command "q".

Rooms File

The rooms file is a single text file that may contain one or more room descriptions. A room has the following description in the rooms file:

Room Title
~
Long room description
and further text
that may span one or more lines, but is still
terminated by a tilde '~'
~
exit_direction room_index
exit_direction room_index
~

Each room will follow this format. Another room may follow, so you must keep reading rooms until you exhaust the file. An example room file may be as follows:

Room #0
~
This is the first room the player should be in!
Welcome to COSC130!
~
w 1
~
Room #1
~
This is the second room, which is west of the first room.
That also means that....
Room #0 is EAST of this room!
~
e 0
~

Example Interaction

./lab2a myroomfile
> l
Room #0
This is the first room the player should be in!
Welcome to COSC130!

Exits: w
> w
You moved WEST.
> l
Room #1
This is the second room, which is west of the first room.
That also means that....
Room #0 is EAST of this room!

Exits: e
> e
You moved EAST.
> l
Room #0
This is the first room the player should be in!
Welcome to COSC130!

Exits: w
> e
You can't go EAST!
> q
Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.