コード例 #1
0
 public void TestMovementDelta()
 {
     _bullet = new Bullet(0, 0, 1, 3, 50, SwinGameSDK.Color.Red, Alignment.Player);
     //loop a few times, it shouldn't have moved
     for (int i = 0; i < 3; i++)
     {
         _bullet.Update();
     }
     Assert.AreEqual(_bullet.X, 3);
     Assert.AreEqual(_bullet.Y, 9);
 }
コード例 #2
0
ファイル: Game.cs プロジェクト: vitakomov/CSharpAdvanced
 public static void Update()
 {
     foreach (Asteroid a in asteroids)
     {
         a.Update();
         if (a.Collision(bullet))
         {
             Random rnd = new Random(); bullet = new Bullet(new Point(0, rnd.Next(20, 600)), new Point(rnd.Next(3, 10), 0), new Size(1, 3));
         }
     }
     bullet.Update();
 }
コード例 #3
0
        /// <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();   //если энергия корабля меньше или равна нулю корабль погибает
                }
            }
        }
コード例 #4
0
        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();
                }
            }
        }
コード例 #5
0
 /// <summary>
 /// Метод меняет позиции каждого объекта на игровом поле
 /// </summary>
 public static void UpdatePosition()
 {
     foreach (BaseObject obj in objs)
     {
         try
         {
             obj.Update();
         }
         catch { }
     }
     bullet.Update();
     foreach (Asteroid aster in asteroids)
     {
         aster.Update();
         if (aster.Collision(bullet))
         {
             System.Media.SystemSounds.Hand.Play();
             Console.WriteLine("столкновение пули и астероида");
             aster.UpdateAfterCollision();
             bullet.UpdateAfterCollision();
         }
     }
 }