private void RemoveShape() { if (ListFigures.Count == 0) { Console.WriteLine("You have no figures!\n"); return; } int index; while (true) { Console.Write("Enter shape index: "); if (!int.TryParse(Console.ReadLine(), out index)) { Console.WriteLine("The only numbers can be entered. Try again\n\n"); } else if (index < 0 || index > ListFigures.Count - 1) { Console.WriteLine("The number is not in the specified range. Try again\n\n"); } else { ListFigures.RemoveAt(index); Field = FigurePainter.DrawAll(ListFigures); break; } } Console.WriteLine("Done!\n"); }
public ActionWithShapes(WorkingWithField field, List <Figure> listFigures) { Field = field; ListFigures = listFigures; FigurePainter = new FigurePainter(field); Start(); }
public AddShapeAction(WorkingWithField field, List <Figure> listFigures) { Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-en"); Field = field; ListFigures = listFigures; FigurePainter = new FigurePainter(field); Start(); }
internal FigurePainter(WorkingWithField field) => Field = field;
private void MoveShape() { if (ListFigures.Count == 0) { Console.WriteLine("You have no figures!\n"); return; } int index; while (true) { Console.Write("Enter shape index: "); if (!int.TryParse(Console.ReadLine(), out index)) { Console.WriteLine("The only numbers can be entered. Try again\n\n"); } else if (index < 0 || index > ListFigures.Count - 1) { Console.WriteLine("The number is not in the specified range. Try again\n\n"); } else { break; } } Console.WriteLine("How do you want to move the shape?\nW(w)\t—\tNorth;\nS(s)\t—\tSouth;\n" + "A(a)\t—\tWest;\nD(d)\t—\tEast;\n"); Console.Write("Enter 1 of 4 ways: "); var tap = Console.ReadKey(); while (tap.Key != ConsoleKey.W && tap.Key != ConsoleKey.S && tap.Key != ConsoleKey.A && tap.Key != ConsoleKey.D) { Console.Write("\nPlease choose 1 of 2 ways: "); tap = Console.ReadKey(); } Console.WriteLine("\n"); int distance; while (true) { Console.Write("Enter distance: "); if (!int.TryParse(Console.ReadLine(), out distance)) { Console.WriteLine("The only numbers can be entered. Try again\n\n"); } else if (distance < 1 || distance > Field.N) { Console.WriteLine($"The number is not in the specified range (0(not including), {Field.N}). Try again\n\n"); } else { break; } } var points = new List <(int, int)>(); if (tap.Key == ConsoleKey.W) { var figure = ListFigures[index]; points = figure.Points .Select(x => (x.Item1, x.Item2 + distance > 75 ? 75 : x.Item2 + distance)).ToList(); ListFigures[index] = new Figure(figure.Title, points, figure.ContourOnly); } else if (tap.Key == ConsoleKey.S) { var figure = ListFigures[index]; points = figure.Points .Select(x => (x.Item1, x.Item2 - distance < -75 ? 075 : x.Item2 - distance)).ToList(); ListFigures[index] = new Figure(figure.Title, points, figure.ContourOnly); } else if (tap.Key == ConsoleKey.A) { var figure = ListFigures[index]; points = figure.Points .Select(x => (x.Item1 - distance < -75 ? -75 : x.Item1 - distance, x.Item2)).ToList(); ListFigures[index] = new Figure(figure.Title, points, figure.ContourOnly); } else if (tap.Key == ConsoleKey.D) { var figure = ListFigures[index]; points = figure.Points .Select(x => (x.Item1 + distance > 75 ? 75 : x.Item1 + distance, x.Item2)).ToList(); ListFigures[index] = new Figure(figure.Title, points, figure.ContourOnly); } Field = FigurePainter.DrawAll(ListFigures); Console.WriteLine("Done!\n"); }