Пример #1
0
        static void Main(string[] args)
        {
            var robot     = new Robot();
            var caretaker = new Caretaker();

            var command = "";

            Console.WriteLine("Robot (X = {0}, Y = {1})", robot.X, robot.Y);

            while (command != "q")
            {
                Console.Write("Enter command (up|down|left|right|undo): ");
                command = Console.ReadLine().Trim();

                switch (command)
                {
                case "up":     // go up
                    caretaker.AddMemento(robot.CreateMemento());
                    robot.Y++;
                    break;

                case "down":     // go down
                    caretaker.AddMemento(robot.CreateMemento());
                    robot.Y--;
                    break;

                case "left":     // go left
                    caretaker.AddMemento(robot.CreateMemento());
                    robot.X--;
                    break;

                case "right":     // go right
                    caretaker.AddMemento(robot.CreateMemento());
                    robot.X++;
                    break;

                case "undo":
                    robot.SetMemento(caretaker.GetLastMemento());
                    break;
                }

                Console.WriteLine("X = {0}, Y = {1}", robot.X, robot.Y);
            }
        }