/// <summary> /// метод для изменения состояния объектов. /// </summary> public static void Update() { foreach (BaseObject obj in _objs) { obj.Update(); } _bullet?.Update(); // предшествующий вариант описания поведения астероидов //foreach (BaseObject obj in _asteroids) //{ // obj.Update(); // if (obj.Collision(_bullet)) //обнаружение столкновений // { // obj.Crash(); /*при столкновениях пули с астероидом пуля и астероид регенерировались*/ // //в разных концах экрана; // _bullet.Crash(); // System.Media.SystemSounds.Hand.Play(); // } //} for (var i = 0; i < _asteroids.Length; i++) { if (_asteroids[i] == null) { continue; // если объект не определен продолжить обход цикла далее } _asteroids[i].Update(); // иначе обновить положение астероида стандартно if (_bullet != null && _bullet.Collision(_asteroids[i])) //если снаряд не нулл и снаряд столкнулся с астероидом { System.Media.SystemSounds.Hand.Play(); //звуковой сигнал _asteroids[i] = null; // этот астероид уничтожается - нулл _bullet?.Destroyed(); _bullet = null; // снаряд уничтожается - нулл continue; // если продолжить обход цикла далее } if (!_ship.Collision(_asteroids[i])) { continue; //если корабль и этот астероид в цикле не столкнулись продолжить обход цикла } var rnd = new Random(); _ship?.EnergyLow(rnd.Next(1, 10)); // иначе корабль потерял энергию _ship.LooseEnerg(); // Loosing energy System.Media.SystemSounds.Asterisk.Play(); if (_ship.Energy <= 0) { _ship?.Die(); //если энергия корабля меньше или равна нулю корабль погибает } } }
public static void Update() { ConsoleMessage <string> strTarget = new ConsoleMessage <string>(StringTarget); //foreach (BaseObject obj in objs) obj.Update(); bullet?.Update(); heal?.Update(); if (heal != null && heal.Collision(ship)) { if (ship.Energy <= 90) { ship?.EnergyHeal(10); strTarget("Ship is healed"); } else { ship.EnergyClear(); } Random rnd = new Random(); heal = new Heal(new Point(Game.Width, rnd.Next(20, 1000)), new Point(rnd.Next(3, 10), rnd.Next(3, 10)), new Size(5, 5)); } for (var i = 0; i < asteroids.Length; i++) { if (asteroids[i] == null) { continue; } asteroids[i].Update(); if (bullet != null && bullet.Collision(asteroids[i])) { System.Media.SystemSounds.Hand.Play(); asteroids[i] = null; bullet = null; Count++; strTarget("Asteroid is hit"); continue; } if (!ship.Collision(asteroids[i])) { continue; } var rnd = new Random(); ship?.EnergyLow(rnd.Next(1, 10)); strTarget("Ship is hit"); System.Media.SystemSounds.Asterisk.Play(); if (ship.Energy <= 0) { ship?.Die(); } } }