How about having the Move method on the Map class
So the map would take Player object (which I'm assuming has a 'current location' field?!), and a parameter to indicate which direction the player is moving in
Another class here would probably be useful. An enum to handle direction and a class to hold the direction + movement in certain direction (e.g move North 1 \ 2 \ 3 etc)
public enum Direction
{
North = 1,
South = 2 ,
East = 3,
West = 4
}
public class Movement
{
public Direction Heading {get; set;}
public int Advancement {get; set;}
}
So your Map object could now support a method like
map.Move (Player player, Movement movement)
Your map object would then raise an event such as
PlayerMoved
You'd need to define some arguments for the event, e.g.
PlayerMovedEventArguments
. This should hold the new position the player has moved to and anything that happened at that location (such as walking into a tree)
You could pass that back to the controlling class to print out the info in some variable such as 'LocationInfo'
private void Map_OnPlayerMoved(object sender, PlayerMovedEventArguments e)
{
Console.WriteLine(e.LocationInfo);
}
HTH!