private static void Start(AbstractCanvas canvas) { _userName = ReadUserName(); Dictionary <string, AbstractFigure> figuresByName = new Dictionary <string, AbstractFigure>(); while (true) { var actionType = ReadActionType(); switch (actionType) { case MainMenuActionType.AddFigure: ReadAndAddFigure(canvas, figuresByName); break; case MainMenuActionType.ActionWithFigure: ReadAndExecuteAction(figuresByName); break; case MainMenuActionType.PrintCanvas: Console.WriteLine(canvas); break; case MainMenuActionType.ClearCanvas: canvas.Clear(); figuresByName.Clear(); break; case MainMenuActionType.ChangeUser: _userName = ReadUserName(); break; case MainMenuActionType.Exit: return; default: break; } } }
private static void ReadAndAddFigure(AbstractCanvas canvas, Dictionary <string, AbstractFigure> figuresByName) { var figureType = ReadFigureType(); var figureCreater = AbstractFigureCreateHelper.GetFigureCreateHelper(figureType); var figureName = ReadFigureNameForCreate(figuresByName.Keys.ToArray()); bool contourOnly = false; if (figureCreater.AskContourOnly) { contourOnly = ReadContourOnly(); } var figure = figureCreater.ReadAndCreate(_userName, contourOnly); canvas.AddFigure(figure); figuresByName.Add(figureName, figure); Console.WriteLine("Фигура добавлена. Отобразите холст, чтобы увидеть изменения."); }
public AbstractGame(int width, int height, int priorityLimit) { if (width <= 0) { throw new ArgumentOutOfRangeException(nameof(width), $"Argument {nameof(width)} must be positive."); } if (height <= 0) { throw new ArgumentOutOfRangeException(nameof(height), $"Argument {nameof(height)} must be positive."); } if (priorityLimit < 0) { throw new ArgumentOutOfRangeException(nameof(priorityLimit), $"Argument {nameof(priorityLimit)} can't be negative."); } TickNumber = 0; Score = 0; IsGameEnded = false; IsWin = false; GameSpeed = 10; Width = width; Height = height; PriorityLimit = priorityLimit; _canvas = new ConsoleCanvas(width, height); _keyPressedHandler = new KeyPressedHandler(InitHandledKeys()); _gameObjectsByPriority = new List <List <AbstractGameObject> >(priorityLimit + 1); for (int i = 0; i < priorityLimit + 1; i++) { _gameObjectsByPriority.Add(new List <AbstractGameObject>()); } _keyPressedHandler.KeyPressed += OnKeyPressed; }