Ejemplo n.º 1
0
 private void SpawnEnemies()
 {
     if (EnemyAppearingSW.Elapsed.TotalSeconds >= 1 / EnemiesPerSecond)
     {
         var enemy = new Enemy(RenderWidth - 1, Rand.Next(0, RenderHeight - 1))
         {
             Health = 25
         };
         Creatures.Add(enemy);
         Enemies.Add(enemy);
         EnemyAppearingSW = Stopwatch.StartNew();
         EnemyAppearingSW.Start();
     }
 }
Ejemplo n.º 2
0
        private void UpdateEnemies()
        {
            foreach (var enemy in Enemies)
            {
                enemy.PreciseX += enemy.Speed * FrameTime.TotalSeconds;
                var eBullet = ((Enemy)enemy).Fire();
                if (eBullet != null)
                {
                    EnemyBullets.Add(eBullet);
                    Creatures.Add(eBullet);
                }
            }

            UpdateEnemyBullets();
        }
Ejemplo n.º 3
0
        public void Run()
        {
            Running = true;
            Thread t = new Thread(() =>
            {
                Console.CursorVisible = false;

                Stopwatch sw = new Stopwatch();
                EnemyAppearingSW.Start();

                State = GameState.Playing;

                InitMenus();

                Creatures.Add(Character);

                while (Running)
                {
                    sw = Stopwatch.StartNew();
                    sw.Start();

                    ProcessInput();
                    Update();
                    Render();

                    sw.Stop();
                    FrameTime = sw.Elapsed;

                    //if (FrameTime.TotalMilliseconds < 33)
                    //{
                    //    sw.Start();
                    //    Thread.Sleep(TimeSpan.FromMilliseconds(33) - FrameTime);
                    //    sw.Stop();
                    //    FrameTime = sw.Elapsed;
                    //}
                }
            });

            t.SetApartmentState(ApartmentState.STA);
            t.Start();
        }
Ejemplo n.º 4
0
        private void UpdateCharacter()
        {
            if (Character.Health <= 0)
            {
                State = GameState.ShowingDeathMessage;
                Creatures.Clear();
                Enemies.Clear();

                return;
            }

            for (int i = 0; i < Character.Bullets.Count; i++)
            {
                var bullet = Character.Bullets[i];
                if (bullet.X >= RenderWidth)
                {
                    Character.Bullets.Remove(bullet);
                }
                else
                {
                    bullet.PreciseX += bullet.Speed * FrameTime.TotalSeconds;
                }

                for (int j = 0; j < Enemies.Count; j++)
                {
                    var enemy = Enemies[j];
                    if (enemy.IsEntityInBounds(bullet.X, bullet.Y))
                    {
                        enemy.Health -= bullet.Damage;
                        Character.Bullets.Remove(bullet);
                        Creatures.Remove(bullet);

                        if (enemy.Health <= 0)
                        {
                            KillEnemy((Enemy)enemy);
                        }
                    }
                }
            }
        }
Ejemplo n.º 5
0
        private void UpdateEnemyBullets()
        {
            for (int bulletIndex = 0; bulletIndex < EnemyBullets.Count; bulletIndex++)
            {
                var enemyBullet = EnemyBullets[bulletIndex];

                if (enemyBullet.X <= 0)
                {
                    Creatures.Remove(enemyBullet);
                    EnemyBullets.Remove(enemyBullet);
                    continue;
                }

                enemyBullet.PreciseX += enemyBullet.Speed * FrameTime.TotalSeconds;

                if (Character.IsEntityInBounds(enemyBullet.X, enemyBullet.Y))
                {
                    Character.Health -= enemyBullet.Damage;
                    EnemyBullets.Remove(enemyBullet);
                    Creatures.Remove(enemyBullet);
                }
            }
        }
Ejemplo n.º 6
0
 private void KillEnemy(Enemy enemy)
 {
     Kills++;
     Creatures.Remove(enemy);
     Enemies.Remove(enemy);
 }
Ejemplo n.º 7
0
        private void ProcessInput()
        {
            if (State == GameState.Typing)
            {
                ProcessTypingInput();
                return;
            }

            if (Keyboard.IsKeyDown(Key.Escape) && State == GameState.Playing)
            {
                State = GameState.OpenedPauseMenu;
            }

            if (Keyboard.IsKeyDown(Key.Escape) && State != GameState.Playing && State != GameState.OpenedPauseMenu)
            {
                State = GameState.OpenedMainMenu;
            }

            if (State == GameState.OpenedMainMenu || State == GameState.OpenedPauseMenu)
            {
                ProcessMenuInput();
                return;
            }

            if (State == GameState.ShowingDeathMessage)
            {
                return;
            }

            if (Keyboard.IsKeyDown(Key.Right))
            {
                if (Character.PreciseX < RenderWidth)
                {
                    Character.PreciseX += Character.Speed * FrameTime.TotalSeconds;
                }
            }

            if (Keyboard.IsKeyDown(Key.Left))
            {
                if (Character.PreciseX > 0)
                {
                    Character.PreciseX -= Character.Speed * FrameTime.TotalSeconds;
                }
            }

            if (Keyboard.IsKeyDown(Key.Up))
            {
                if (Character.PreciseY > 0)
                {
                    Character.PreciseY -= Character.Speed * FrameTime.TotalSeconds;
                }
            }

            if (Keyboard.IsKeyDown(Key.Down))
            {
                if (Character.PreciseY < RenderHeight - Character.Height)
                {
                    Character.PreciseY += Character.Speed * FrameTime.TotalSeconds;
                }
            }

            if (Keyboard.IsKeyDown(Key.Space))
            {
                var bullet = Character.Fire();
                if (bullet != null)
                {
                    Creatures.Add(bullet);
                }
            }
        }