2D RPG Multiplayer
You must
- Write a C# Windows program
- This program should allow the user to specify a "map" file; this map
file consists of three things: the width, the height, and the map data. The
map data is a 2D array of numbers - where each number represents the terrain
type for that location
- The program should then load that specified map file
- Loading the map involves reading in the width and height and
instantiating a map class (you write this class)
- Then, you should loop through, reading in the map data and place this
data into the [x,y] positions within the map instance
- The program must display a 2D grid of locations to the user (this is the
visual map). I'd recommend using an ImageList class to maintain the
images of the tiles, and the map data just refers to this ImageList to
display the images.
- Only a 9x9 portion of the total map should be displayed with the user's
"avatar" displayed in the middle
- The user should be able to "move around" the total map
There is a lot of (intentional) flexibility here. Your maps and tile
images can be of anything you'd like. Your avatar can be anything you'd
like. Be creative!

Here is a running sample
(with sample 16x16 image tiles). [2.4 Mb ZIP file] Type "G" and then a
direction (via arrow key) to get an item; highlight an item in your inventory
and press "D" and direction (via arrow key) to drop an item. Step on a
yellow tile to warp to another map.
NOTE - your submission does not have to implement inventory, get, drop, or
"warp" points. We'll get to these features later.
Then add the following functionality to your program:
- Allow multiple users to connect simultaneously to your program - each
avatar/user having a specified location in the world.
- When the user moves, all other clients/users in the world should see the
player move (i.e. they should see the updates on their screens)
- Add the capability of chatting
- You should be able to "shout" a message to all players in the game
- You should be able to "whisper" a message to a specified player in
the game
For extra credit, implement the updating of items when the user picks up or
drops an item (i.e. make sure the item disappears or appears on all other
clients' machines).