/// <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(); } }
/// <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(); } } }
protected void PlaySound() { if (!isParking) { SoundGame.SoundMove(); } else if (isParking) { SoundGame.SoundStop(); } }
/// <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(); } }
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++; } }
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; } }
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++; } }
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(); } } }