public void Heal(MedPack med) { Energy += med.Value; if (Energy > 100) { Energy = 100; } HealMessage?.Invoke(); }
static public void Load() { Random rand = new Random(); // Переменная для генерации стартовой позиции и вектора для объектов bullets = new List <Bullet>(); // Инициализируем список пуль ship = new Ship(new Point(10, 290), new Point(0, 0), new Size(40, 20)); // Инициализируем космический корабль // Инициализируем массивы звезд, задаем им позиции и векторы starsLittle = new BaseObject[35]; for (int i = 0; i < starsLittle.Length; i++) { starsLittle[i] = new Star(new Point(rand.Next(-100, 800), rand.Next(0, 500)), new Point(-1, 0), new Size(1, 1)); } starsMedium = new BaseObject[15]; for (int i = 0; i < starsMedium.Length; i++) { starsMedium[i] = new Star(new Point(rand.Next(-100, 800), rand.Next(0, 500)), new Point(-2, 0), new Size(5, 5)); } starsBig = new BaseObject[4]; for (int i = 0; i < starsBig.Length; i++) { starsBig[i] = new Star(new Point(rand.Next(-100, 800), rand.Next(0, 500)), new Point(-3, 0), new Size(10, 10)); } // Инициализируем списки астероидов, задаем им позиции и векторы asteroidsLittle = new List <Asteroid>(); for (int i = 0; i < 3; i++) { asteroidsLittle.Add(new Asteroid(new Point(rand.Next(800, 1300), rand.Next(1, 500)), new Point(rand.Next(-5, -5), rand.Next(-5, 5)), new Size(30, 30), powLittle)); } asteroidsMedium = new List <Asteroid>(); for (int i = 0; i < 2; i++) { asteroidsMedium.Add(new Asteroid(new Point(rand.Next(800, 1300), rand.Next(1, 500)), new Point(rand.Next(-5, -5), rand.Next(-5, 5)), new Size(40, 40), powMedium)); } asteroidsBig = new List <Asteroid>(); for (int i = 0; i < 1; i++) { asteroidsBig.Add(new Asteroid(new Point(rand.Next(800, 1300), rand.Next(1, 500)), new Point(rand.Next(-5, -5), rand.Next(-2, 2)), new Size(80, 66), powBig)); } // Инициализируем массив аптечек med = new BaseObject[2]; for (int i = 0; i < med.Length; i++) { med[i] = new MedPack(new Point(rand.Next(800, 1300), rand.Next(1, 500)), new Point(rand.Next(-7, -5), rand.Next(-5, 5)), new Size(30, 30)); } }
static public void Load() { ship = new Ship(new Point(10, 400), new Point(5, 5), new Size(220, 150)); medPack = new MedPack(new Point(Width + 50, 700), new Point(-4, 0), new Size(50, 50)); objs = new BaseObject[133]; for (int i = 0; i < 100; i++) { objs[i] = new Star(new Point(rnd.Next(0, Width + 20), rnd.Next(-20, Height + 20)), new Point(-1 * rnd.Next(1, 3), 0), new Size(20, 20)); } for (int i = 100; i < 130; i++) { objs[i] = new Star(new Point(rnd.Next(0, Width + 20), rnd.Next(-20, Height + 20)), new Point(-1 * rnd.Next(2, 4), 0), new Size(45, 45)); } objs[130] = new Planet(new Point(1000, 300), new Point(-1, 0), new Size(100, 100), Planet.imagePlanet); objs[131] = new Planet(new Point(2700, 600), new Point(-2, 0), new Size(138, 138), Planet.imageSun); objs[132] = new Planet(new Point(2500, 120), new Point(-1, 0), new Size(110, 110), Planet.imageNeptune); AsteroidsLoad(); }
static public void Update() { foreach (BaseObject obj in objs) { obj.Update(); } if (asteroids.Count != 0) { for (int i = 0; i < bullets.Count; i++) { for (int j = 0; j < asteroids.Count; j++) { if (bullets[i] != null && bullets[i].Collision(asteroids[j])) { System.Media.SystemSounds.Asterisk.Play(); asteroids.RemoveAt(j); bullets[i] = null; score++; MessageToLog.Invoke("Bullet hit an asteroid"); MessageToLog.Invoke("Asteroid crashed"); } } } } else { asteroidsCount++; AsteroidsLoad(); } for (int i = 0; i < asteroids.Count; i++) { if (ship.Collision(asteroids[i])) { ship.EnergyLow(50); asteroids.RemoveAt(i); MessageToLog.Invoke("Ship collided with an asteroid"); } } if (ship.Collision(medPack)) { System.Media.SystemSounds.Hand.Play(); ship.EnergyHeight(50); medPack = new MedPack(new Point(rnd.Next(Width, Width + 10), rnd.Next(20, Height - 20)), new Point(-4, 0), new Size(50, 50)); MessageToLog.Invoke("Ship got medpack"); } for (int i = 0; i < bullets.Count; i++) { if (bullets[i] != null) { bullets[i].Update(); } else { bullets.RemoveAt(i); } } foreach (Asteroid a in asteroids) { a.Update(); } medPack?.Update(); }