/// <summary> /// Обновление всех объектов /// </summary> public static void Update() { foreach (Star star in _stars) { star.Update(); } foreach (Bullet bullet in Bullets) { bullet.Update(); } foreach (Asteroid asteroid in _asteroids.ToArray()) { asteroid.Update(); foreach (Bullet bullet in Bullets.ToArray()) { if (asteroid.Collision(bullet)) { GameMessage?.Invoke($"Попадание в {nameof(asteroid)}! Нанесено урона: {bullet.Damage}"); asteroid.ToDamage(bullet.Damage); Bullets.Remove(bullet); if (_ship.Heath <= 5) { GameMessage?.Invoke( $"Внимание!!! Низкий уровень здоровья!!! Осталось жизней: {_ship.Heath}"); if (_aidKit == null) { _aidKit = new AidKit(new Point(50, Rnd.Next(Height)), new Point(1, 0), new Size(20, 20)); } } } } if (_ship.Collision(asteroid)) { GameMessage?.Invoke($"Столкновение с {nameof(asteroid)}! Получено урона: {asteroid.Damage}"); _ship.ToDamage(asteroid.Damage); asteroid.ToDamage(1); } if (asteroid.Health <= 0) { GameMessage?.Invoke($"{nameof(asteroid)} уничтожен! Текущий счет: {_ship.Score}"); _asteroids.Remove(asteroid); _ship.Score++; if (_asteroids.Count == 0) { _countAsteroids++; CreateAsteroids(); } } } _ship.Update(); if (_aidKit != null) { if (_ship.Collision(_aidKit)) { GameMessage?.Invoke($"Аптечка поднята! Жизней восстановлено: {_aidKit.Health}"); _ship.Heath += _aidKit.Health; _aidKit = null; } } if (_ship.Heath <= 0) { GameMessage?.Invoke($"{nameof(_ship)} уничтожен!"); _ship.ToDie(); } }