Exemplo n.º 1
0
 public void setMemento(Player P)
 {
     org = new Memento.Originator(P.points);
     Memento.IntefaceMemento meme = org.savePoints();
     ct.add(meme);
 }
            static void Main(string[] args)
            {
                Stack <Memento> canvas = new Stack <Memento>();

                Memento.Originator originator = new Memento.Originator();

                Random rnd = new Random();

                //Shape Examples
                originator.Set(new Rectangle(rnd.Next(1, 500), rnd.Next(1, 500), rnd.Next(1, 500), rnd.Next(1, 500)));
                canvas.Push(originator.addToMemento());

                originator.Set(new Square(rnd.Next(1, 500), rnd.Next(1, 500), rnd.Next(1, 500)));
                canvas.Push(originator.addToMemento());

                originator.Set(new Circle(rnd.Next(1, 500), rnd.Next(1, 500), rnd.Next(1, 500)));
                canvas.Push(originator.addToMemento());

                //originator.undoFromMemento(canvas.Pop());

                string help = "*********************************************************\n\tCommands:\n\n\tH \t\t Help -displays this message\n\tA <shape>\t Add <shape to canvas>\n\tU\t\t Undo last operation\n \tR \t\t Redo last operation\n \tP \t\t Print Canvas\n \tC \t\t Clear canvas \n \tG <filename> \t Generate Output File in XML\n \tQ \t\t Quit application\n\n\tShapes => [C = Circle, S = Square, R = Rectangle]\n*********************************************************";

                Console.WriteLine(help);

                string input = Console.ReadLine().ToLower();

                while (!input.StartsWith('q'))
                {
                    if (input.StartsWith('h'))
                    {
                        Console.WriteLine(help);
                    }
                    //Add a Shape
                    else if (input.StartsWith('a'))
                    {
                        string[] inputArray = input.Split(' ', StringSplitOptions.TrimEntries);
                        string   inputShape = inputArray[1].ToLower();

                        Console.WriteLine(inputShape);
                        //Add Circle By User Input
                        if (inputShape.StartsWith('c'))
                        {
                            originator.Set(new Circle(random().Next(1, 500), random().Next(1, 500), random().Next(1, 500)));
                            canvas.Push(originator.addToMemento());
                        }
                        //Add Rectangle By User Input
                        else if (inputShape.StartsWith('r'))
                        {
                            originator.Set(new Rectangle(rnd.Next(1, 500), rnd.Next(1, 500), rnd.Next(1, 500), rnd.Next(1, 500)));
                            canvas.Push(originator.addToMemento());
                        }
                        else if (inputShape.StartsWith('s'))
                        {
                            originator.Set(new Square(rnd.Next(1, 500), rnd.Next(1, 500), rnd.Next(1, 500)));
                            canvas.Push(originator.addToMemento());
                        }
                    }
                    else if (input.StartsWith('u'))
                    {
                        Memento temp = canvas.Pop();
                        originator.undoFromMemento(temp);
                    }
                    else if (input.StartsWith('r'))
                    {
                        canvas.Push(originator.redoMemento());
                    }
                    else if (input.StartsWith('p'))
                    {
                        foreach (Memento i in canvas.ToArray())
                        {
                            Console.WriteLine(i.savedShape.ToString());
                        }
                    }
                    else if (input.StartsWith('c'))
                    {
                        while (canvas.Count > 0)
                        {
                            Console.WriteLine("Clearing " + canvas.Pop().savedShape.ToString());
                        }
                        Console.WriteLine("Console has been cleared");
                    }
                    else if (input.StartsWith('g'))
                    {
                        string[] inputArray = input.Split(' ', StringSplitOptions.TrimEntries);
                        string   fileName   = inputArray[1].ToLower();

                        genFile(fileName + ".xml", canvas);
                    }
                    input = Console.ReadLine().ToLower();
                }

                Console.WriteLine();
                Console.WriteLine("Dont't forget to check out any output files you may have created in './OutputFiles' dir");
                Console.WriteLine();

                Console.WriteLine("GoodBye!");
                Console.WriteLine();
            }