コード例 #1
0
ファイル: Ship.cs プロジェクト: mrAlexGusev/AsteroidsDemo
        /// <summary>
        /// Метод вывода объекта Ship на экран.
        /// </summary>
        public override void Draw()
        {
            Game.Buffer.Graphics.DrawImage(Sprite, Pos.X, Pos.Y, Size.Width, Size.Height);

            // Выводим пул снарядов.
            BulletPool.Draw();
        }
コード例 #2
0
ファイル: Ship.cs プロジェクト: mrAlexGusev/AsteroidsDemo
        /// <summary>
        /// Метод изменения состояния объекта Ship.
        /// </summary>
        public override void Update()
        {
            // Обновляем пул снарядов.
            BulletPool.Update();

            // Устанавливаем направление объекта.
            SetDirection();

            // Перемещаем объект.
            Pos.X += Dir.X * Game.DeltaTime;
            Pos.Y += Dir.Y * Game.DeltaTime;

            // Если объект вышел за границу, то возвращаем обратно.
            if (Pos.X < -Size.Width * 0.3)
            {
                Pos.X = (int)(-Size.Width * 0.3);
            }
            if (Pos.X > Game.Width - Size.Width)
            {
                Pos.X = Game.Width - Size.Width;
            }
            if (Pos.Y < 0)
            {
                Pos.Y = 0;
            }
            if (Pos.Y > Game.Height - Size.Height)
            {
                Pos.Y = Game.Height - Size.Height;
            }

            if (KeysHandler.IsPressed(Keys.Space))
            {
                Shoot();
            }
        }
コード例 #3
0
ファイル: Ship.cs プロジェクト: mrAlexGusev/AsteroidsDemo
        /// <summary>
        /// Выстрел снарядов.
        /// </summary>
        public void Shoot()
        {
            if (ShotsDelay < _lastShotCounter)
            {
                _lastShotCounter = 0;

                BulletPool.GetNext(_bulletSpawn + Pos);

                _shotSound.Play();
            }
            else
            {
                _lastShotCounter += Game.DeltaTime;
            }
        }