/// <summary>
        /// Создание набора элементов, которые мы хотим отрисовать
        /// </summary>
        public static void Load()
        {
            _objs = new BaseObject[30];
            for (var i = 0; i < _objs.Length - 1; i++)
            {
                int r = rnd.Next(5, 50);
                _objs[i] = new Star(new Point(1000, rnd.Next(0, Game.Height)), new Point(-r, r), new Size(3, 3));
            }
            _objs[_objs.Length - 1] = new ImageObject(new Point(rnd.Next(0, Width), rnd.Next(0, Height)),
                                                      new Point(-_objs.Length + 10, _objs.Length - 10),
                                                      new Size(30, 30), Image.FromFile(@"img\comet.png"));

            _asteroids = NewAsteroids(difficulty);
            _medkit    = NewMedkit();

            ////Мы решили создать 30 объектов на экране
            //_objs = new BaseObject[30];
            //Random rnd = new Random();

            //// Кометы - одна пятая всех объектов
            //for (int i = 0; i < _objs.Length / 5; i++)
            //    _objs[i] = new ImageObject(new Point(600, i * 60), new Point(-i - 1, i + 1),
            //                               new Size(30, 30), Image.FromFile(@"img\comet.png"));

            //// Обычные звезды - одна пятая всех объектов
            //for (int i = _objs.Length / 5; i < _objs.Length / 5 * 2; i++)
            //    _objs[i] = new Star(new Point(400, i * 90 - 550), new Point(-i, 0), new Size(5, 5));

            //// Круглые звезды - одна пятая всех объектов
            //for (int i = _objs.Length / 5 * 2; i < _objs.Length / 5 * 3; i++)
            //    _objs[i] = new StationaryCircle(new Point(rnd.Next(0, Width), rnd.Next(0, Height)),
            //                                    new Point(-i, 0), new Size(13, 13), Brushes.Yellow);

            //// Насыщенные голубые звезды  - две пятых всех объектов
            //for (int i = _objs.Length / 5 * 3; i < _objs.Length; i++)
            //    _objs[i] = new ThickStar(new Point(200, i * 50 - 970), new Point(-i, 0),
            //                             new Size(9, 9), Pens.Aquamarine);
        }
        /// <summary>
        /// Перевод всех объектов игры к следующему положению и состоянию, в соответсвии с их внутренней логикой
        /// Проверка на попадание объектов в друг-друга
        /// </summary>
        public static void Update()
        {
            foreach (BaseObject obj in _objs)
            {
                obj.Update();
            }
            for (int i = 0; i < _bullets.Count; i++)
            {
                if (_bullets[i].OutOfZone(Width, Height))
                {
                    _bullets.RemoveAt(i);
                    i--;
                }
            }
            foreach (Bullet b in _bullets)
            {
                b.Update();
            }
            _medkit?.Update();

            if (_ship.Collision(_medkit))
            {
                log?.Invoke($"Найдена аптечка. Энергия корабля будет восстановлена на {_medkit.Power} единиц");
                _ship.Heal(_medkit.Power);
                _medkit = NewMedkit();
            }

            for (var i = 0; i < _asteroids.Count; i++)
            {
                if (_asteroids[i] == null)
                {
                    continue;
                }
                _asteroids[i].Update();
                for (int j = 0; j < _bullets.Count; j++)
                {
                    if (_asteroids[i] != null && _bullets[j].Collision(_asteroids[i]))
                    {
                        System.Media.SystemSounds.Hand.Play();
                        log?.Invoke($"Пуля попала в астероид, астероид уничтожен, вы заработали {_asteroids[i].Power} очков");
                        score        += _asteroids[i].Power;
                        _asteroids[i] = null;
                        _bullets.RemoveAt(j);
                        j--;
                    }
                }

                if (_asteroids[i] == null || !_ship.Collision(_asteroids[i]))
                {
                    continue;
                }

                _ship.EnergyLow(_asteroids[i].Power);
                System.Media.SystemSounds.Asterisk.Play();
                log?.Invoke($"Корабль столкнулся с Астероидом и получил {_asteroids[i].Power} урона.");
                if (_ship.Energy <= 0)
                {
                    _ship?.Die();
                    log?.Invoke($"Корабль уничтожен, конец игры. Уровень: {level}, суммарно очков набрано: {score}");
                    // Вероятно тут нужно будет добавить конец игры
                    timer.Stop();
                    DrawEndOfGame();
                }
            }
            _asteroids.RemoveAll(a => a == null);
            if (_asteroids.Count == 0)
            {
                _asteroids = NewAsteroids(++difficulty);
                level++;
            }
        }