Hey guys,
I am working on a text game and I want to use a linked list to hold the room info.
I just wrote a little test program to get the fell for this.
Code:
#include <iostream>
#include <string>
enum {North,South,East,West};
struct room
{
std::string name;
room *next[4];
};
int main()
{
char choice;
room *start;
room *walker;
std::cout<<"Welcome to my game"<<std::endl;
start = new room;
start->name = "Starting Room";
for(int i = 0; i < 4; i++)
{
start->next[i] = NULL;
}
walker = start;
walker->next[North] = new room;
walker->next[North]->name = "North Room";
walker->next[South] = new room;
walker->next[South]->name = "South Room";
walker->next[East] = new room;
walker->next[East]->name = "East Room";
walker->next[West] = new room;
walker->next[West]->name = "West Room";
while(choice != 'q')
{
std::cout<<"You are in the "<<walker->name<<std::endl;
std::cout<<"Where do you want to go?"<<std::endl;
std::cout<<"[N]orth [S]outh [E]ast [W]est [q] for exiting"<<std::endl;
std::cin>>choice;
switch(choice)
{
case 'n':
if(walker->next[North] != NULL)
{
walker->next[North]->next[South] = walker;
walker = walker->next[North];
}
else
{
std::cout<<"You can't go there"<<std::endl;
}
break;
case 's':
if(walker->next[South] != NULL)
{
walker->next[South]->next[North]= walker;
walker = walker->next[South];
}
else
{
std::cout<<"You can't go there"<<std::endl;
}
break;
case 'e':
if(walker->next[East] != NULL)
{
walker->next[East]->next[West] = walker;
walker = walker->next[East];
}
else
{
std::cout<<"You can't go there"<<std::endl;
}
break;
case 'w':
if(walker->next[West] != NULL)
{
walker->next[West]->next[East] = walker;
walker = walker->next[West];
}
else
{
std::cout<<"You Can't go there"<<std::endl;
}
break;
}
}
return 0;
}
I know this works but would this be a proper method for this?
If not who wants to make fun of me and tell me how you would do it. Basically what I want to do is have a series of predefined rooms.