Ejemplo n.º 1
0
        /// <summary> Генерация новой фигуры </summary>
        /// <returns> Возвращает новую фигуру</returns>
        public IFigure NewFigure(IFactoryFigure factoryArg)
        {
            byte randomTemplate               = (byte)Random.Range(1, 101);
            TemplateGroupFigures template     = _managerTemplates.GetTemplateByRandom(randomTemplate);
            Vector3Int           sizeTemplate = template.Size;
            int     posX   = Random.Range(0, _sizeMap.x - sizeTemplate.x);
            int     posY   = _sizeMap.y - sizeTemplate.y;
            int     posZ   = Random.Range(0, _sizeMap.z - sizeTemplate.z);
            IFigure figure = new GroupFigures(template, new Vector3Int(posX, posY, posZ), factoryArg);

            if (sizeTemplate.x >= _sizeMap.x ||
                sizeTemplate.y >= _sizeMap.y ||
                sizeTemplate.z > _sizeMap.z)
            {
                throw new TetrisException("Попытка сгенерировать фигуру, которая больше игрового поля (карты)!");
            }

            return(figure);
        }
Ejemplo n.º 2
0
        public ButtonCollection(CanvasManager canvasManager)
        {
            buttons.Add(new Button(10, 10, "Rectangle", () =>
            {
                MakeFigure mf = new MakeFigure(canvasManager, new BasicFigure(120, 20, 30, 30, BasicFigure.RectangleStrategy.Instance));
                canvasManager.Do(mf);
                return(true);
            }));

            buttons.Add(new Button(10, 10 + 25 * 1, "Ellipse", () =>
            {
                MakeFigure mf = new MakeFigure(canvasManager, new BasicFigure(120, 60, 30, 30, BasicFigure.EllipseStrategy.Instance));
                canvasManager.Do(mf);
                return(true);
            }));

            buttons.Add(new Button(10, 10 + 25 * 2, "Undo", () =>
            {
                canvasManager.Undo();
                return(true);
            }));
            buttons.Add(new Button(10, 10 + 25 * 3, "Redo", () =>
            {
                canvasManager.Redo();
                return(true);
            }));

            buttons.Add(new Button(10, 10 + 25 * 4, "Open", () =>
            {
                Console.WriteLine("Open pressed!");
                var fl = new FileLoader("./grammar.test");
                canvasManager.canvas.AddFigure(fl.Read());
                return(true);
            }));

            buttons.Add(new Button(10, 10 + 25 * 5, "Save", () =>
            {
                Console.WriteLine("Save pressed!");
                var fw = new FileWriter("./drawing.cd");
                fw.Write(ref canvasManager.canvas.figures);
                return(true);
            }));

            buttons.Add(new Button(10, 10 + 25 * 6, "Select", () =>
            {
                canvasManager.canvas.selecting = !canvasManager.canvas.selecting;
                if (canvasManager.canvas.selecting)
                {
                    Console.WriteLine("Select enabled!");
                }
                else
                {
                    Console.WriteLine("Select disabled!");
                    canvasManager.canvas.selectedFigures.Clear();
                }
                return(true);
            }));
            buttons.Add(new Button(10, 10 + 25 * 7, "Group", () =>
            {
                var mf = new GroupFigures(canvasManager, canvasManager.canvas.selectedFigures);
                canvasManager.Do(mf);
                canvasManager.canvas.selectedFigures.Clear();
                Console.WriteLine("Group pressed!");
                return(true);
            }));
            buttons.Add(new Button(10, 10 + 25 * 8, "Ornament", () =>
            {
                Console.WriteLine("Ornament pressed!");
                var ao = new AddOrnament(canvasManager, canvasManager.canvas.selectedFigures);
                canvasManager.Do(ao);
                return(true);
            }));
        }