Example #1
0
        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;
                }
            }
        }
Example #2
0
        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("Фигура добавлена. Отобразите холст, чтобы увидеть изменения.");
        }
Example #3
0
        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;
        }