Пример #1
0
        /// <summary>
        /// Стрильба
        /// </summary>
        /// <param name="nameTank">Имя типа танка</param>
        /// <param name="velocity">Скорость снаряда</param>
        protected void Fire(KeyObjGame nameTank)
        {
            // Если пуля еще летит
            if (shell == null || !shell.IsAlive)
            {
                if (nameTank == KeyObjGame.Player)
                {
                    SoundGame.SoundFire();
                }
                // Создание снаряда в зависимости от направления танка
                switch (direction)
                {
                case Direction.Up:
                    shell = new CollisionShell(new Rectangle(spriteRectangle.Left + (spriteRectangle.Width / 2 - SettingsGame.WidtchShell / 2), spriteRectangle.Top - SettingsGame.HeighShell, SettingsGame.WidtchShell, SettingsGame.HeighShell), this.velosityShel, this.direction, nameTank);
                    break;

                case Direction.Right:
                    shell = new CollisionShell(new Rectangle(spriteRectangle.Right + 1, spriteRectangle.Top + (spriteRectangle.Height / 2 - SettingsGame.HeighShell / 2), SettingsGame.HeighShell, SettingsGame.WidtchShell), this.velosityShel, this.direction, nameTank);
                    break;

                case Direction.Down:
                    shell = new CollisionShell(new Rectangle(spriteRectangle.Left + (spriteRectangle.Width / 2 - SettingsGame.WidtchShell / 2), spriteRectangle.Bottom, SettingsGame.WidtchShell, SettingsGame.HeighShell), this.velosityShel, this.direction, nameTank);
                    break;

                case Direction.Left:
                    shell = new CollisionShell(new Rectangle(spriteRectangle.Left - SettingsGame.WidtchShell, spriteRectangle.Top + (spriteRectangle.Height / 2 - SettingsGame.HeighShell / 2), SettingsGame.HeighShell, SettingsGame.WidtchShell), this.velosityShel, this.direction, nameTank);
                    break;
                }
            }
        }
 public void Response(ShellObj shellObj)
 {
     shellObj.Detonation = true;
     if (shellObj.NameTank == KeyObjGame.Player)
     {
         SoundGame.SoundDetonation();
     }
 }
Пример #3
0
        /// <summary>
        /// Обработка нажатия клавиш
        /// </summary>
        private void ProcessingKeystrokes()
        {
            if (Keyboard.Escape)
            {
                SoundGame.Stop();
                StateOfGame = StateOfGame.Menu;
                Menu.MenuControl.BringToFront();
                Thread.Sleep(100);
            }
            else
            {
                if (Keyboard.Enter && menu.StateMenu == StateMenu.SaveGame && Level.StateOfLevel == StateOfLevel.Game)
                {
                    // Сериализация
                    timer.Stop();
                    var stream    = new FileStream("Serialized", FileMode.Create);
                    var formatter = new BinaryFormatter();
                    formatter.Serialize(stream, level);
                    stream.Close();

                    menu.StateMenu = StateMenu.Game;
                    StateOfGame    = StateOfGame.Menu;
                    Menu.MenuControl.BringToFront();
                    Thread.Sleep(100);
                    timer.Start();
                }
                else if (Keyboard.Enter && menu.StateMenu == StateMenu.LoadGame && Level.StateOfLevel == StateOfLevel.Game)
                {
                    // Десериализвция
                    timer.Stop();
                    level.Clear();
                    var stream    = new FileStream("Serialized", FileMode.Open);
                    var formatter = new BinaryFormatter();
                    level = formatter.Deserialize(stream) as Level;
                    stream.Close();

                    menu.StateMenu = StateMenu.Game;
                    StateOfGame    = StateOfGame.Menu;
                    Menu.MenuControl.BringToFront();
                    Thread.Sleep(100);
                    level.InitStaticFild();
                    timer.Start();
                }
                else if (Keyboard.Enter && StateOfGame == StateOfGame.GameOver)
                {
                    StateOfGame = StateOfGame.Menu;
                    Menu.MenuControl.BringToFront();
                    level.DownloadLevel(1);
                    Thread.Sleep(100);
                }
                else if (Keyboard.Enter && StateOfGame == StateOfGame.Menu && menu.StateMenu == StateMenu.Game)
                {
                    StateOfGame = StateOfGame.Game;
                    screenGame.BringToFront();
                    menu.ResetPosition();
                }
            }
        }
Пример #4
0
 protected void PlaySound()
 {
     if (!isParking)
     {
         SoundGame.SoundMove();
     }
     else if (isParking)
     {
         SoundGame.SoundStop();
     }
 }
Пример #5
0
 /// <summary>
 /// Вызывается при попадании снаряда в обьект
 /// </summary>
 /// <param name="shellObj">Ссылка на снаряд</param>
 public void Response(ShellObj shellObj)
 {
     // Если снаряд выпущен не етим танком
     if (shellObj.NameTank == KeyObjGame.TankEnemy)
     {
         // Удаление со списка обектов игры
         Level.DictionaryObjGame[KeyObjGame.Player].Remove(this);//todo
         shellObj.Detonation = true;
         // Миняем статус Level на game over
         Level.StateOfLevel = StateOfLevel.GameOver;//todo
         new DetonationShellBig(shellObj.Rect.Location, shellObj.Direction, 0);
         SoundGame.Stop();
     }
 }
Пример #6
0
 public override void Update()
 {
     if (interval == 1)
     {
         SoundGame.SoundBigDetonation();
         interval++;
         // Меняем изображения взрыва
         spriteImage = Properties.Resources.Detonation2;
         // Вычисление положения обьекта
         Position();
     }
     else if (interval == 2)
     {
         interval++;
         // Меняем изображения взрыва
         spriteImage = Properties.Resources.Detonation3;
         // Вычисление положения обьекта
         Position();
     }
     else if (interval == 6)
     {
         interval++;
         // Меняем изображения взрыва
         spriteImage = Properties.Resources.DetonationBig;
         // Вычисление положения обьекта
         Position();
     }
     else if (interval == 8)
     {
         interval++;
         // Меняем изображения взрыва
         spriteImage = Properties.Resources.DetonationBig2;
         // Вычисление положения обьекта
         Position();
     }
     else if (interval == 10)
     {
         Level.DictionaryObjGame[KeyObjGame.Ohter].Remove(this);
         if (countPoints != 0)
         {
             new Points(new Point(spriteRectangle.X + 21, spriteRectangle.Y + 29), countPoints);
         }
     }
     else
     {
         interval++;
     }
 }
Пример #7
0
        public void Update()
        {
            if (spriteRectangle.Y > SettingsGame.HeighWindowGame / 2 - spriteImage.Height / 2)
            {
                spriteRectangle.Y -= 5;
            }

            intervalGameOver--;

            if (intervalGameOver == 190)
            {
                SoundGame.GameOver();
            }

            if (intervalGameOver == 0)
            {
                isShow = false;
                BattleCity.StateOfGame = StateOfGame.GameOver;
            }
        }
Пример #8
0
 public override void Response(ShellObj shellObj)
 {
     // Если снаряд выпущен не етим танком
     if (shellObj.NameTank != KeyObjGame.TankEnemy)
     {
         if (numberOfHits == 0)
         {
             SoundGame.SoundDetonation();
             moweLeft            = moweLeftGren;
             moweRight           = moweRightGren;
             moweUp              = moweUpGren;
             moweDown            = moweDownGren;
             shellObj.Detonation = true;
             numberOfHits++;
         }
         else if (numberOfHits == 1)
         {
             SoundGame.SoundDetonation();
             moweLeft            = moweLeftYellow;
             moweRight           = moweRightYellow;
             moweUp              = moweUpYellow;
             moweDown            = moweDownYellow;
             shellObj.Detonation = true;
             numberOfHits++;
         }
         else if (numberOfHits == 2)
         {
             SoundGame.SoundDetonation();
             moweLeft            = moweLeftGray;
             moweRight           = moweRightGray;
             moweUp              = moweUpGray;
             moweDown            = moweDownGray;
             shellObj.Detonation = true;
             numberOfHits++;
         }
         else if (numberOfHits == 3)
         {
             base.Response(shellObj);
         }
     }
 }
        public void Update()
        {
            if (top.Y < 0)
            {
                top.Y    += 5;
                bottom.Y -= 5;
            }
            else
            {
                countFrame--;
            }

            if (countFrame == 0)
            {
                isShow = false;
                Level.ListInformation.Remove(this);
            }

            if (countFrame == 39)
            {
                SoundGame.GameStart();
            }
        }
 /// <summary>
 /// Обновление состояния обьекта
 /// </summary>
 public override void Update()
 {
     if (!detonation)
     {
         // Передвижение
         this.Move();
         // Столкновение с границами карты
         detonation = this.CollisionsBoundariesPlayingField();
         // Столкновение с обектами игры
         if (!detonation)
         {
             CollisionObjLevel();
         }
         else if (this.nameTank == KeyObjGame.Player)
         {
             SoundGame.SoundDetonation();
         }
     }
     // Если обьект сдетонировал
     else if (detonation && delay == 0)
     {
         new DetonationShell(spriteRectangle.Location, direction);
         delay++;
     }
     else if (delay == 7)
     {
         // Помичаем обьект как умерший
         isAlive = false;
         // Удаляем из списка снарядов
         Level.DictionaryObjGame[KeyObjGame.Shell].Remove(this);
     }
     else if (delay > 0)
     {
         delay++;
     }
 }
Пример #11
0
        public void Update()
        {
            if (StateOfLevel == StateOfLevel.Download)
            {
                if (!informationDownloadLevel.IsShow())
                {
                    listInformation.Remove(informationDownloadLevel);

                    tankPlayer = new SmallTankPlayer(respawnPlayer, Direction.Up);
                    new AppearanceOfTank(respawnPlayer, tankPlayer);

                    enemyTanks = new EnemyTanks(TanksEnemy);
                    enemyTanks.AddEnemy();

                    StateOfLevel = StateOfLevel.Game;
                }
                else
                {
                    informationDownloadLevel.Update();
                }
            }
            if (StateOfLevel != StateOfLevel.GameOver)
            {
                for (int i = 0; i < listPlayer.Count; i++)
                {
                    listPlayer[i].Update();
                }
            }
            for (int i = 0; i < listOther.Count; i++)
            {
                listOther[i].Update();
            }
            foreach (var item in listWater)
            {
                item.Update();
            }
            for (int i = 0; i < listTankEnemy.Count; i++)
            {
                listTankEnemy[i].Update();
            }
            for (int i = 0; i < listShell.Count; i++)
            {
                listShell[i].Update();
            }


            if (StateOfLevel == StateOfLevel.GameOver)
            {
                if (imgGameOver == null)
                {
                    SoundGame.Stop();
                    imgGameOver = new ImgGameOver();
                    listInformation.Add(imgGameOver);
                }
                else
                {
                    imgGameOver.Update();
                }
            }

            if (StateOfLevel == StateOfLevel.Game)
            {
                // Если вражиских танков неосталось
                if (listTankEnemy.Count == 0 && !enemyTanks.IsTanks())
                {
                    if (timerWin == 0)
                    {
                        SoundGame.Stop();
                        TimerWin();
                    }
                    else
                    {
                        timerWin--;
                    }
                }
                else if (listTankEnemy.Count < 3)
                {
                    enemyTanks.AddEnemy();
                }
            }
        }