Example #1
0
    void TurnOn(Vector2Int turnPos, ChessFigure chessFigure = null)
    {
        //Debug.Log("Turn");
        TypeFigures defeatedType = TypeFigures.Pawn;

        if (chessFigure != null)
        {
            defeatedType = chessFigure.type;
            PullToRetreat(chessFigure);
        }

        stateManager.AddState(activeFigure);

        if (activeFigure.type == TypeFigures.Pawn && defeatedType != TypeFigures.King)
        {
            if ((activeFigure.team == TypeTeam.white && turnPos.x == 0) ||
                (activeFigure.team == TypeTeam.black && turnPos.x == height - 1))
            {
                pawnReadyBecomeKing = true;
                becomeKingFigure    = activeFigure;

                uiManager.ActiveChooseUI(becomeKingFigure.team, ExchangeFigure);
                activeUI = true;
            }
        }

        Vector2Int beforePos = activeFigure.pos;
        Vector3    position  = boardsTile[turnPos.x, turnPos.y].transform.position;

        position.z = 0;
        //activeFigure.transform.position = position;
        activeFigure.AnimateTurn(position, speedAnimation, chessFigure != null ? TypeAnimation.Hit : TypeAnimation.Step);

        activeFigure.pos = new Vector2Int(turnPos.x, turnPos.y);
        activeFigure.turnCounter++;
        figures[turnPos.x, turnPos.y]     = activeFigure;
        figures[beforePos.x, beforePos.y] = null;
        activeFigure.DischooseFigure();
        activeFigure = null;
        DischoosingTile();

        if (defeatedType == TypeFigures.King)
        {
            gameEnd = true;
            uiManager.EnableGameOver();
        }

        presentTeam = presentTeam == TypeTeam.black ? TypeTeam.white : TypeTeam.black;
        //FlipBoard();
    }
Example #2
0
        static void Main(string[] args)
        {
            Menu menuFigures    = new Menu(9);
            Menu menuCalcTarget = new Menu(3);
            Menu menuNewCalc    = new Menu(2);

            SetMenuFigures(ref menuFigures);
            SetMenuCalcTarget(ref menuCalcTarget);
            SetMenuNewCalc(ref menuNewCalc);
            do
            {
                int n;
                n = CorrectInput("Введите количество фигур (не больше {0}): --->");
                if (n != 0)
                {
                    ComplexFigure figures = new ComplexFigure(n);
                    Clear();
                    for (int i = 0; i < n; i++)
                    {
                        TypeFigures typeFigures =
                            (TypeFigures)menuFigures.SelectOption("Выбор {0}-ой фигуры:", i);
                        switch (typeFigures)
                        {
                        case TypeFigures.Triangle:
                            figures[i] = new Triangle();
                            break;

                        case TypeFigures.Rhomb:
                            figures[i] = new Rhomb();
                            break;

                        case TypeFigures.Quadrate:
                            figures[i] = new Quadrate();
                            break;

                        case TypeFigures.Parallelogram:
                            figures[i] = new Parallelogram();
                            break;

                        case TypeFigures.Rectangle:
                            figures[i] = new Rectangle();
                            break;

                        case TypeFigures.Trapezium:
                            figures[i] = new Trapezium();
                            break;

                        case TypeFigures.Ellipse:
                            figures[i] = new Ellipse();
                            break;

                        case TypeFigures.Circle:
                            figures[i] = new Circle();
                            break;

                        case TypeFigures.Undefined:
                            figures = null;
                            break;
                        }
                        if (typeFigures != TypeFigures.Undefined)
                        {
                            WriteLine("************ Выбрана фигура: {0}. ", figures[i].NameFigure);
                            figures[i].InputData();
                            WriteLine(figures[i]);
                            figures[i].Draw(CursorLeft, CursorTop, ConsoleColor.Blue);
                        }
                    }
                    if (n != 1)
                    {
                        WriteLine("************ Составная фигура включает в себя : ");
                        foreach (IPoligon figure in figures)
                        //for (int j = 0; j < n; j++)
                        {
                            WriteLine(figure);
                            figure.Draw(CursorLeft, CursorTop, ConsoleColor.Blue);
                        }
                        WriteLine("************ Площадь и периметр составной фигуры: ");
                        WriteLine(figures);
                    }
                    ResetColor();
                    figures = null;
                }
            } while (menuNewCalc.SelectOption("Выбор дальнейшего действия:") == 1);
        }
Example #3
0
        public Figure Add(TypeFigures type, List <Vector2d> mousePos)
        {
            Vector2d fmp = mousePos[0];
            Vector2d smp = mousePos[1];

            Figure f = new Figure();

            switch (type)
            {
            case TypeFigures.Line:
                f.Edges = new List <Edge>()
                {
                    new Edge(new Vector2d(fmp.X, fmp.Y), new Vector2d(smp.X, smp.Y))
                };
                f.Type   = TypeFigures.Line;
                f.Center = (fmp + smp) / 2.0;
                f.TranslateToCenterCoordinates();
                f.SortAtClock();
                f.IsClosed = false;
                f.ReCalc();
                break;

            case TypeFigures.Rect:
                f.Edges = new List <Edge>()
                {
                    new Edge(new Vector2d(fmp.X, fmp.Y), new Vector2d(fmp.X, smp.Y)),
                    new Edge(new Vector2d(fmp.X, smp.Y), new Vector2d(smp.X, smp.Y)),
                    new Edge(new Vector2d(smp.X, smp.Y), new Vector2d(smp.X, fmp.Y)),
                    new Edge(new Vector2d(smp.X, fmp.Y), new Vector2d(fmp.X, fmp.Y))
                };
                f.Type   = TypeFigures.Rect;
                f.Center = (fmp + smp) / 2.0;
                f.TranslateToCenterCoordinates();
                f.SortAtClock();
                f.ReCalc();
                break;

            case TypeFigures.Ellipsoid:
                //f.Edges = CalcEllipsoid(fmp, smp, 360).ToList();
                f.Edges  = CalcBezieEllipsoid(fmp, smp);
                f.Type   = TypeFigures.Ellipsoid;
                f.Center = (fmp + smp) / 2.0;
                f.TranslateToCenterCoordinates();
                f.ReCalc();
                break;

            case TypeFigures.Polygon:
                f.Edges  = CalcEllipsoid(fmp, smp, 6).ToList();
                f.Type   = TypeFigures.Polygon;
                f.Center = (fmp + smp) / 2.0;
                f.TranslateToCenterCoordinates();
                f.ReCalc();
                break;



            case TypeFigures.Curve:
                f.Edges.Add(new Edge(fmp, smp));
                f.Type     = TypeFigures.Curve;
                f.Center   = (fmp + smp) / 2.0;
                f.IsClosed = false;
                f.Edges[0].ConvertToBezie();
                f.TranslateToCenterCoordinates();
                f.ReCalc();
                break;

            default:
                break;
            }

            return(f);
        }
Example #4
0
 /// <summary> Установить тип фигуры </summary>
 protected void SetTypeFigure(TypeFigures Type)
 {
     this.TypeFigure = Type;
 }