Задача сократить методы в один метод для кода прохождения змейки
По принципу предыдущего вопроса попробовал сократить, но что то сделал не так. Ошибка 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);
}
}
}
}
Источник: Stack Overflow на русском