Welcome to the forums. This place rocks. I wish I had found it earlier in my career. ![:) smile.png](http://public.gamedev5.net//public/style_emoticons/default/smile.png)
I don't want to get too specific since this is a school assignment and I'm not 100% sure what you're asking. If you're managing your game state (current room location, available exits, items on the ground, etc.) via a huge block of if/else if statements, then yeah there's a better way to do this. And by class page, I think you're just talking about encapsulating this data into a Room class?
Add a Room.cs file to your project and put the data you think you'll be needing there. Name, List of exits, maybe a visited flag, etc.
Take a look at the Dictionary collection. There's a few built in ways to store/access your data. Read a little bit at the top for an overview and scroll down to the bottom to see the sample code in action.
http://msdn.microsoft.com/en-us/library/xfhwa508(v=vs.110).aspx - Dictionary
In a nutshell, this collection lets you store data and look it up by a unique key. So, at the start of your program, you can create the world via code in a LoadWorld function. Creating your rooms and storing them in your dictionary using your Name as the unique key.
Next hint - OK Eck, what now?
[spoiler]So now you have your world crammed into a dictionary by Name. You can keep up with which room you're currently in by storing the name in a currentRoom variable. When your player tries to move "left", you can access the current room, and see by its list of exits if left is a valid choice. Your exit would need to know which room it takes you to. Then you'd change your current room to this new key.
Allowing the name to serve as the unique room ID is fine for now, but later on you might want to add a RoomID member in your Room class. Using the Name as a unique identifier violates the one-responsibility edict. Consider the Maze in Zork. If your current location was Maze1, Maze2, Maze3, mapping it would have been MUCH simpler. But for now, I recommend keeping Name as your unique key to simplify things during your learning. Later when you want to support a "Maze" you can refactor your code to use RoomID instead which will be a good exercise.
[/spoiler]
You mentioned XML files so maybe you were just talking about data driving your LoadWorld function? When done right, this is really cool because you could have two different text based games just by loading a different xml file. To change the world, you can change the xml instead of recompiling your code. If that's what you were asking about, you'll want to take a look at xml serialization. If you're still pretty new to C# this might be a lot to take in. For now, getting your code working with a "hard-coded world" is perfectly fine.
http://msdn.microsoft.com/en-us/library/182eeyhh(v=vs.110).aspx - XML Serialization
If this isn't what you're asking for help with, please let us know. ![:) smile.png](http://public.gamedev5.net//public/style_emoticons/default/smile.png)
- Eck