예제 #1
0
        /// <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);
            }
        }
예제 #2
0
        /// <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();
        }
예제 #3
0
        /// <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();
            }
        }