Задача сократить методы в один метод для кода прохождения змейки

По принципу предыдущего вопроса попробовал сократить, но что то сделал не так. Ошибка CS7036 Отсутствует аргумент, соответствующий требуемому параметру "direction" из "SnakeMazeTask.MoveRobot(Robot, int, int, Direction)"

Было:

namespace Mazes
{
public static class SnakeMazeTask
{
    public static void MoveRight(Robot robot, int width, int height)
    {
        for (int i = 0; i < width - 3; i++)
            robot.MoveTo(Direction.Right);
    }

    public static void MoveDown(Robot robot, int width, int height)
    {
        for (int i = 0; i < 2; i++)
            robot.MoveTo(Direction.Down);
    }

    public static void MoveLeft(Robot robot, int width, int height)
    {
        for (int i = 0; i < width - 3; i++)
            robot.MoveTo(Direction.Left);
    }

    public static void MoveOut(Robot robot, int width, int height)
    {
        MoveRight(robot, width, height);
        MoveDown(robot, width, height);
        MoveLeft(robot, width, height);

        if (!robot.Finished)
        {
            MoveDown(robot, width, height);
            MoveOut(robot, width, height);
        }
    }
}
}

Стало:

namespace Mazes
{
public static class SnakeMazeTask
{
    public static void MoveRobot(Robot robot, int width, int height, Direction direction)
    {
        for (int i = 0; i < width - 3; i++)
            robot.MoveTo(direction);
    }        
    public static void MoveOut(Robot robot, int width, int height)
    {
        MoveRobot(robot, width, (int)Direction.Right);
        MoveRobot(robot, 5, (int)Direction.Down);
        MoveRobot(robot, width, (int)Direction.Left);

        if (!robot.Finished)
        {
            MoveRobot(robot, 5, (int)Direction.Down);
        }
    }
}
}

Ответы (1 шт):

Автор решения: CrazyElf

В MoveRobot не нужны параметры int width, int height, нужен только один параметр, назовём его int steps:

namespace Mazes
{
    public static class SnakeMazeTask
    {
        public static void MoveRobot(Robot robot, int steps, Direction direction)
        {
            for (int i = 0; i < steps; i++)
                robot.MoveTo(direction);
        }        
        public static void MoveOut(Robot robot, int width, int height)
        {
            MoveRobot(robot, width - 3, (int)Direction.Right);
            MoveRobot(robot, 5, (int)Direction.Down);
            MoveRobot(robot, width - 3, (int)Direction.Left);

            if (!robot.Finished)
            {
                MoveRobot(robot, 5, (int)Direction.Down);
            }
        }
    }
}
→ Ссылка