/// <summary> /// Таймер периодического появления аптечки /// </summary> private static void Timer1_Tick(object sender, EventArgs e) { if (aidKit == null) { aidKit = new AidKit(new Point(rand.Next(10, 500), rand.Next(10, 400)), new Point(5, 5), new Size(30, 30), Properties.Resources.AidKit); } }
/// <summary> /// Метод обновления состояния объектов игры /// </summary> public static void Update() { sputnic.Update(); foreach (Bullet b in bullets) { b.Update(); } if (bulletDirections != null) { foreach (KeyValuePair <Bullet, Direction> keyValue in bulletDirections) { keyValue.Value.Invoke(); } } foreach (Asteroid a in asteroids) { a.Update(); //Столкновение космического корабля и астероида if (_ship.Collision(a)) { System.Media.SystemSounds.Asterisk.Play(); _ship?.EnergyLow(5); } } CheckCollisionsAstBull();//Провека столкновений астероида и снаряда if (_ship.Energy <= 0) { _ship.Die(); } if (aidKit != null) { if (_ship.Collision(aidKit)) { _ship.EnergyUp(5); aidKit = null; } } checkCountAsteroids(); }
/// <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(); } }