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(); }
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); }
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); }
/// <summary> Установить тип фигуры </summary> protected void SetTypeFigure(TypeFigures Type) { this.TypeFigure = Type; }