예제 #1
0
파일: Game.cs 프로젝트: JovannyM/DB
 private void BulletsCollisionAndMove()
 {
     foreach (Bullet bullet in AllBullets)
     {
         foreach (Sprite wall in TMXMap.Walls) // стены
         {
             if (Intersects(bullet.Sprite, wall))
             {
                 DeleteBullets.Add(bullet);
             }
         }
         if (!DeleteBullets.Contains(bullet) && bullet.WhoIs == WhoIs._enemy && Intersects(bullet.Sprite, Tank.Bounds[0])) //Игрок
         {
             if (Tank.Health <= 0)
             {
                 TankDestroy();
             }
             TankSubstractHealthEvent.Invoke(this, new TankSubstructHealthArgs(5));
             DeleteBullets.Add(bullet);
         }
         if (!DeleteBullets.Contains(bullet) && bullet.WhoIs == WhoIs._player) //Противник
         {
             foreach (Enemies enemy in Enemies)
             {
                 if (Intersects(bullet.Sprite, enemy.Sprite))
                 {
                     Rang++;
                     if (enemy.Heath <= 1)
                     {
                         DeleteEnemies.Add(enemy);
                         DeleteBullets.Add(bullet);
                         DeathSound.SoundBuffer = Resurses.SoundBuffersDeathEnemy[Rnd.Next(0, 4)];
                         DeathSound.Play();
                     }
                     else
                     {
                         enemy.Hit();
                         DeleteBullets.Add(bullet);
                     }
                 }
             }
         }
     }
     foreach (Bullet bullet in DeleteBullets)
     {
         AllBullets.Remove(bullet);
     }
     DeleteBullets.Clear();
     foreach (Enemies enemy in DeleteEnemies)
     {
         Enemies.Remove(enemy);
     }
     DeleteEnemies.Clear();
     foreach (Bullet bullet in AllBullets)
     {
         bullet.Move(TimeOneFrame);
     }
 }
예제 #2
0
파일: Game.cs 프로젝트: JovannyM/DB
 private void TankDestroy()
 {
     TankSubstractHealthEvent.Invoke(this, new TankSubstructHealthArgs(-10));
     Tank.Position = new Vector2f(-250, -250);
     Enemies.Clear();
     AllBullets.Clear();
     Resurses.Musics[Level].Loop = false;
     Resurses.Musics[Level].Stop();
     Level = 0;
     Resurses.Musics[Level].Loop = true;
     Resurses.Musics[Level].Play();
     TMXMap.Load(LevelName[0], SpawnNewBullet);
     MainView = new View(new Vector2f(640, 360), new Vector2f(1280, 720));
 }
예제 #3
0
파일: Game.cs 프로젝트: JovannyM/DB
 private void CollisionEnemyAndTank()
 {
     foreach (Enemies enemy in Enemies)
     {
         if (Intersects(enemy.Sprite, Tank.Bounds[0]))
         {
             Rang++;
             DeleteEnemies.Add(enemy);
             TankSubstractHealthEvent.Invoke(this, new TankSubstructHealthArgs(1));
             DeathSound.SoundBuffer = Resurses.SoundBuffersDeathEnemy[Rnd.Next(0, 4)];
             DeathSound.Play();
         }
         else if (new Vector(enemy.Position.X - Tank.Position.X, enemy.Position.Y - Tank.Position.Y).Length <= 700 && !ChekVisibleTankAndEnemy(Tank.Position, enemy.Position))
         {
             enemy.Move(Tank.Position, TimeOneFrame);
             if (enemy is TorEnemy)
             {
                 for (int i = 0; i < enemy.ETowers.Length; i++)
                 {
                     enemy.ETowers[i].OnShoot(Tank.Position, TimeOneFrame);
                     SplashSound.SoundBuffer = Resurses.SoundBuffersSplashEnemy[Rnd.Next(0, 2)];
                     SplashSound.Play();
                 }
             }
         }
     }
     foreach (Enemies enemy in DeleteEnemies)
     {
         Enemies.Remove(enemy);
     }
     DeleteEnemies.Clear();
     if (Tank.Health <= 0)
     {
         TankDestroy(); return;
     }
 }