상속: Thing
 public bool MoveCharacter(Character character, Point direction)
 {
     if (IsWall(character, direction))
     {
         return false;
     }
     else
     {
         // Update current position of character
         character.Coordinate.X += direction.X;
         character.Coordinate.Y += direction.Y;
         return true;
     }
 }
        // Check if thesesus is at Exit 'after' his every move
        public bool IsExit(Character character)
        {
            Point currentPosition = new Point(character.Coordinate.X, character.Coordinate.Y);
            Tile currentTile = Map1[currentPosition.X, currentPosition.Y];

            if (currentTile.MyWalls.HasFlag(TheWalls.End))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        //Any other corner cases?
        public bool IsWall(Character character, Point direction)
        {
            Point currentPosition = new Point(character.Coordinate.X, character.Coordinate.Y);
            Tile currentTile = Map1[currentPosition.X, currentPosition.Y];

            Point nextPosition = new Point(character.Coordinate.X + direction.X, character.Coordinate.Y + direction.Y);
            Tile nextTile = Map1[nextPosition.X, nextPosition.Y];

            // Beyond boundaries
            if (nextPosition.X < 0 || nextPosition.X > Map1.GetLength(0) || nextPosition.Y < 0 || nextPosition.Y > Map1.GetLength(1))
            {
                return true;
            }

            // Stay still - Invalid
            if (currentPosition.X == nextPosition.X && currentPosition.Y == nextPosition.Y)
            {
                return true;
            }

            if (currentPosition.X > nextPosition.X) // Left
            {
                return currentTile.MyWalls.HasFlag(TheWalls.West);
            }
            else if (currentPosition.X < currentPosition.X) // Right
            {
                return currentTile.MyWalls.HasFlag(TheWalls.East);
            }
            else
            {
                if (currentPosition.Y > currentPosition.Y) // Up
                {
                    return currentTile.MyWalls.HasFlag(TheWalls.North);
                }
                else // Down
                {
                    return currentTile.MyWalls.HasFlag(TheWalls.South);
                }
            }
        }