Exemplo n.º 1
0
 public static void Timer_Tick(object sender, EventArgs e)
 {
     Clear();
     _medkit.Draw();
     _ship.Draw();
     Draw(_star);
     Draw(_bullets);
     Draw(_lasteroids);
     //Update(_lasteroids);
     Update(_star);
     Update();
     s.Draw();
     s.Update();
     _medkit.Update();
     if (_log != null)
     {
         _log("Статус");
         _log -= Hit;
         _log -= ShipHit;
     }
 }
Exemplo n.º 2
0
        static public void Update()
        {
            foreach (BaseObject obj in objs)
            {
                obj.Update();
            }

            foreach (Bullet b in bullet)
            {
                if (b != null)
                {
                    b.Update();
                }
            }

            for (int i = 0; i < asteroids.Count; i++)
            {
                if (asteroids[i] != null)
                {
                    asteroids[i].Update();
                    for (int j = 0; j < bullet.Count; j++)
                    {
                        if (asteroids[i] != null && bullet[j].Collision(asteroids[i]))
                        {
                            score += 1;
                            bullet.RemoveAt(j);
                            buffer.Graphics.DrawString("Score: " + score, SystemFonts.DefaultFont, Brushes.White, new Point(80, 10));
                            Console.WriteLine("Little asteriod killed. Score: {0}", score);
                            j--;
                            asteroids[i] = null;
                            continue;
                        }
                    }

                    if (asteroids[i] != null && ship.Collision(asteroids[i]))
                    {
                        asteroids[i].Reset();
                        ship.Reset();
                        ship.Health -= 10;
                        Console.WriteLine("Collision with little asteroid. Health: {0}", ship.Health);
                        if (ship.Health <= 0)
                        {
                            ship.Die();
                            Console.WriteLine("Game Over!!");
                        }
                    }
                }
                else
                {
                    asteroids.RemoveAt(i);
                    i--;
                    Console.WriteLine("Small asteroids left: {0}", asteroids.Count);
                }
            }

            for (int i = 0; i < asteroidsBig.Count; i++)
            {
                if (asteroidsBig[i] != null)
                {
                    asteroidsBig[i].Update();
                    for (int j = 0; j < bullet.Count; j++)
                    {
                        if (asteroidsBig[i] != null && bullet[j].Collision(asteroidsBig[i]))
                        {
                            asteroidsBig[i].Power -= bullet[j].Damage;
                            bullet.RemoveAt(j);
                            if (asteroidsBig[i].Power == 0)
                            {
                                asteroidsBig[i] = null;
                                score          += 3;
                                Console.WriteLine("Big asteriod killed. Score: {0}", score);
                            }
                            buffer.Graphics.DrawString("Score: " + score, SystemFonts.DefaultFont, Brushes.White, new Point(80, 10));
                            j--;
                            continue;
                        }
                    }
                    if (asteroidsBig[i] != null && ship.Collision(asteroidsBig[i]))
                    {
                        asteroidsBig[i].Reset();
                        ship.Reset();
                        ship.Health -= 30;
                        Console.WriteLine("Collision with Big asteroid. Health: {0}", ship.Health);
                        if (ship.Health <= 0)
                        {
                            ship.Die();
                            Console.WriteLine("Game Over!!");
                        }
                    }
                }
                else
                {
                    asteroidsBig.RemoveAt(i);
                    i--;
                    Console.WriteLine("Big asteroids left: {0}", asteroidsBig.Count);
                }
            }

            for (int i = 0; i < nebula.Count; i++)
            {
                if (nebula[i] != null)
                {
                    nebula[i].Update();
                    for (int j = 0; j < bullet.Count; j++)
                    {
                        if (nebula[i] != null && bullet[j].Collision(nebula[i]))
                        {
                            nebula[i].Power -= bullet[j].Damage;
                            bullet.RemoveAt(j);
                            if (nebula[i].Power == 0)
                            {
                                nebula[i] = null;
                                score    += 5;
                                Console.WriteLine("Big asteriod killed. Score: {0}", score);
                            }
                            buffer.Graphics.DrawString("Score: " + score, SystemFonts.DefaultFont, Brushes.White, new Point(80, 10));
                            j--;
                            continue;
                        }
                    }
                    if (nebula[i] != null && ship.Collision(nebula[i]))
                    {
                        nebula[i].Reset();
                        ship.Reset();
                        ship.Health -= 50;
                        Console.WriteLine("Collision with Big asteroid. Health: {0}", ship.Health);
                        if (ship.Health <= 0)
                        {
                            ship.Die();
                            Console.WriteLine("Game Over!!");
                        }
                    }
                }
                else
                {
                    nebula.RemoveAt(i);
                    i--;
                    Console.WriteLine("Nebula left: {0}", nebula.Count);
                }
            }

            for (int i = 0; i < boss.Count; i++)
            {
                if (boss[i] != null)
                {
                    boss[i].Update();
                    for (int j = 0; j < bullet.Count; j++)
                    {
                        if (boss[i] != null && bullet[j].Collision(boss[i]))
                        {
                            boss[i].Power -= bullet[j].Damage;
                            bullet.RemoveAt(j);
                            if (boss[i].Power == 0)
                            {
                                boss[i] = null;
                                score  += 20;
                                Console.WriteLine("Boss killed. Score: {0}", score);
                                waveCount = 0;
                            }
                            buffer.Graphics.DrawString("Score: " + score, SystemFonts.DefaultFont, Brushes.White, new Point(80, 10));
                            j--;
                            continue;
                        }
                    }
                    if (boss[i] != null && ship.Collision(boss[i]))
                    {
                        ship.Reset();
                        boss[i].Reset();
                        ship.Health -= 70;
                        buffer.Graphics.DrawString("Health: " + ship.Health, SystemFonts.DefaultFont, Brushes.White, new Point(10, 10));
                        Console.WriteLine("Collision with Boss. Health: {0}", ship.Health);
                        if (ship.Health <= 0)
                        {
                            ship.Die();
                            Console.WriteLine("Game Over!!");
                        }
                    }
                }
                else
                {
                    boss.RemoveAt(i);
                    i--;
                    Console.WriteLine("Boss left: {0}", boss.Count);
                }
            }

            if (ship.Collision(medkit))
            {
                ship.Health += medkit.Restore;
                buffer.Graphics.DrawString("Health: " + ship.Health, SystemFonts.DefaultFont, Brushes.White, new Point(10, 10));
                Console.WriteLine("Collected MedKit. Health: {0}", ship.Health);
                medkit.Reset();
            }

            medkit.Update();
            ship.Update();

            if (asteroids.Count == 0 && asteroidsBig.Count == 0 && nebula.Count == 0 && boss.Count == 0)
            {
                waveCount++;
                if (waveCount == 3)
                {
                    BossCreate();
                }
                if (waveCount < 3)
                {
                    Reload(asteroidsCount, asteroidsBigCount, nebulaCount, waveCount);
                }
            }
        }