// move player
        public void movePlayer(Enemy enemy, Map map, HorizontalEnemy[] horizontalEnemy, StillEnemy stillEnemy, RandomEnemy[] randomEnemy, Boss boss)
        {
            ConsoleKeyInfo input;

            input = Console.ReadKey(true);
            if (playerMoving == true)
            {
                // takes damage from enemy if conditions are right
                //if (enemy.HorizontalDealDamage == true) { TakeDamge(enemy, 50); }
                //if (enemy.StillDealDamage == true) { TakeDamge(enemy, 10); }
                for (int d = 0; d < 10; d++)
                {
                    if (randomEnemy[d].EnemyDealDamage == true || horizontalEnemy[d].EnemyDealDamage == true || stillEnemy.EnemyDealDamage == true)
                    {
                        TakeDamge(enemy, 0, horizontalEnemy[d], stillEnemy, randomEnemy[d], boss);
                    }
                }
                PushBackX = X;
                PushBackY = Y;
                // check if player pressed w
                if (input.KeyChar == 'w')
                {
                    Console.SetCursorPosition(X, Y);

                    moving = true;
                    // check to see if there is a border and if so make player cant move that way and plays a sound
                    if (map.displayMap[X, Y - 1] == 'x')
                    {
                        moving = false; Console.Beep(300, 100);
                    }
                    // makes the player move depending on the key pressed
                    else if (map.displayMap[X, Y] == '.' && moving == true)
                    {
                        Y = Y - 1;
                    }
                }
                else if (input.KeyChar == 's')
                {
                    Console.SetCursorPosition(X, Y);
                    moving = true;
                    if (map.displayMap[X, Y + 1] == 'x')
                    {
                        moving = false; Console.Beep(300, 100);
                    }
                    else if (map.displayMap[X, Y] == '.' && moving == true)
                    {
                        Y = Y + 1;
                    }
                }
                else if (input.KeyChar == 'a')
                {
                    moving = true;
                    if (map.displayMap[X - 1, Y] == 'x')
                    {
                        moving = false; Console.Beep(300, 100);
                    }
                    else if (map.displayMap[X, Y] == '.' && moving == true)
                    {
                        X = X - 1;
                    }
                }
                else if (input.KeyChar == 'd')
                {
                    Console.SetCursorPosition(70, 15);
                    moving = true;
                    if (map.displayMap[X + 1, Y] == 'x')
                    {
                        moving = false; Console.Beep(300, 100);
                    }
                    else if (map.displayMap[X, Y] == '.' && moving == true)
                    {
                        X = X + 1;
                    }
                }
            }
        }
        // checks to see if player colided with any game objects
        public void CheckCollision(Enemy enemy, StatHud statHud, Items[] healthPack, Items powerUp, Items armor, HorizontalEnemy[] horizontalEnemy, StillEnemy stillEnemy, RandomEnemy[] randomEnemy, Boss boss)
        {
            for (int r = 0; r < 10; r++)
            {
                if (Y == randomEnemy[r].Y)
                {
                    if (X == randomEnemy[r].X)
                    {
                        Console.SetCursorPosition(70, 15);
                        Console.Beep(170, 200);
                        //map.winScreen();

                        Y = PushBackY;
                        X = PushBackX;
                        statHud.horizontalEnemyStats  = false;
                        statHud.stillEnemyStats       = false;
                        statHud.enemyStats            = true;
                        randomEnemy[r].enemyTakeDamge = true;
                    }
                }
            }
            for (int h = 0; h < 10; h++)
            {
                if (Y == horizontalEnemy[h].Y)
                {
                    if (X == horizontalEnemy[h].X)
                    {
                        Console.SetCursorPosition(70, 15);
                        Y = PushBackY;
                        X = PushBackX;
                        horizontalEnemy[h].enemyTakeDamge = true;
                        statHud.stillEnemyStats           = false;
                        statHud.enemyStats           = false;
                        statHud.horizontalEnemyStats = true;
                        //map.winScreen();
                    }
                }
            }
            if (Y == stillEnemy.Y)
            {
                if (X == stillEnemy.X)
                {
                    Console.SetCursorPosition(70, 15);
                    Console.Beep(170, 200);
                    Y = PushBackY;
                    X = PushBackX;
                    stillEnemy.enemyTakeDamge    = true;
                    statHud.horizontalEnemyStats = false;
                    statHud.enemyStats           = false;
                    statHud.stillEnemyStats      = true;
                }
            }
            if (Y == boss.Y)
            {
                if (X == boss.X)
                {
                    Console.SetCursorPosition(70, 15);
                    Console.Beep(170, 200);
                    Y = PushBackY;
                    X = PushBackX;
                    boss.enemyTakeDamge          = true;
                    statHud.horizontalEnemyStats = false;
                    statHud.enemyStats           = false;
                    statHud.stillEnemyStats      = false;
                }
            }
            //map.winScreen();
            //    }
            //
            for (int i = 0; i < 5; i++)
            {
                if (Y == healthPack[i].Y)
                {
                    if (X == healthPack[i].X)
                    {
                        if (healthPack[i].Used == false)
                        {
                            health += 50;
                            if (health >= 100)
                            {
                                health = 100;
                            }
                            healthPack[i].X    = 0;
                            healthPack[i].Y    = 0;
                            healthPack[i].Used = true;
                        }
                    }
                }
            }
            if (Y == armor.Y)
            {
                if (X == armor.X)
                {
                    Console.SetCursorPosition(70, 15);
                    Console.WriteLine("tryx" + X);
                    if (armor.Used == false)
                    {
                        shields += 50;
                        if (shields >= 100)
                        {
                            shields = 100;
                        }
                        armor.X    = 0;
                        armor.Y    = 0;
                        armor.Used = true;
                    }
                }
            }
            if (Y == powerUp.Y)
            {
                if (X == powerUp.X)
                {
                    if (powerUp.Used == false)
                    {
                        enemy.DamageBoost = true;
                        powerUp.X         = 0;
                        powerUp.Y         = 0;
                        powerUp.Used      = true;
                    }
                }
            }
        }
 // player takes damage depending on the enemy
 private void TakeDamge(Enemy enemy, int damage, HorizontalEnemy horizontalEnemy, StillEnemy stillEnemy, RandomEnemy randomEnemy, Boss boss)
 {
     if (horizontalEnemy.EnemyDealDamage == true)
     {
         damage = 50;
     }
     if (randomEnemy.EnemyDealDamage == true)
     {
         damage = 10;
     }
     if (stillEnemy.EnemyDealDamage == true)
     {
         damage = 10;
     }
     if (boss.EnemyDealDamage == true)
     {
         damage = 15;
     }
     if (shields == 0)
     {
         health -= damage;
     }
     if (horizontalEnemy.EnemyDealDamage == true)
     {
         if (shields > 0)
         {
             shields = shields - damage;
         }
         horizontalEnemy.EnemyDealDamage = false;
     }
     if (randomEnemy.EnemyDealDamage == true)
     {
         if (shields > 0)
         {
             shields = shields - damage;
         }
     }
     if (stillEnemy.EnemyDealDamage == true)
     {
         if (shields > 0)
         {
             shields = shields - damage;
         }
         stillEnemy.EnemyDealDamage = false;
     }
     if (boss.EnemyDealDamage == true)
     {
         if (shields > 0)
         {
             shields = shields - damage;
         }
     }
     boss.EnemyDealDamage = false;
     if (shields > 0)
     {
         remainingShields -= damage;
     }
     if (shields < 0)
     {
         shields          = 0;
         health          += remainingShields;
         remainingShields = 0;
     }
     if (health <= 0)
     {
         health       = 0;
         playerMoving = false;
     }
 }
        public void RunGame()
        {
            Player player = new Player();
            Map    map    = new Map();

            EnemyManager enemyManager = new EnemyManager();

            RandomEnemy[] randomEnemy = new RandomEnemy[10];
            randomEnemy[0] = new RandomEnemy();
            randomEnemy[1] = new RandomEnemy();
            randomEnemy[2] = new RandomEnemy();
            randomEnemy[3] = new RandomEnemy();
            randomEnemy[4] = new RandomEnemy();
            randomEnemy[5] = new RandomEnemy();
            randomEnemy[6] = new RandomEnemy();
            randomEnemy[7] = new RandomEnemy();
            randomEnemy[8] = new RandomEnemy();
            randomEnemy[9] = new RandomEnemy();
            //HorizontalEnemy[] horizontalEnemy = new HorizontalEnemy[10];
            enemyManager.horizontalEnemy[0] = new HorizontalEnemy(100);
            enemyManager.horizontalEnemy[1] = new HorizontalEnemy(25);
            enemyManager.horizontalEnemy[2] = new HorizontalEnemy(25);
            enemyManager.horizontalEnemy[3] = new HorizontalEnemy(25);
            enemyManager.horizontalEnemy[4] = new HorizontalEnemy(25);
            enemyManager.horizontalEnemy[5] = new HorizontalEnemy(25);
            enemyManager.horizontalEnemy[6] = new HorizontalEnemy(25);
            enemyManager.horizontalEnemy[7] = new HorizontalEnemy(25);
            enemyManager.horizontalEnemy[8] = new HorizontalEnemy(25);
            enemyManager.horizontalEnemy[9] = new HorizontalEnemy(25);
            StillEnemy stillEnemy = new StillEnemy();
            StatHud    statsHUD   = new StatHud();

            Items[] healthPack = new Items[5];
            healthPack[0] = new Items("H", "HealthPack", 45, 14);
            healthPack[1] = new Items("H", "HealthPack", 44, 14);
            healthPack[2] = new Items("H", "HealthPack", 43, 14);
            healthPack[3] = new Items("H", "HealthPack", 42, 14);
            healthPack[4] = new Items("H", "HealthPack", 41, 14);

            Items         powerUp       = new Items("P", "PowerUp", 15, 4);
            Items         armor         = new Items("A", "Armor", 15, 1);
            GameCharacter gameCharacter = new GameCharacter();

            // game loop
            while (true)
            {
                // draws the map
                map.DrawBorder(player);
                // showsthe characters Stats
                statsHUD.ShowHUD(player, enemyManager.enemy, healthPack[0]);

                // draws the game objects
                randomEnemy[0].drawEnemy(10, 2);
                enemyManager.boss.drawEnemy(16, 20);
                enemyManager.horizontalEnemy[0].drawEnemy(1, 4);
                if (enemyManager.boss.sendEnemy)
                {
                    enemyManager.horizontalEnemy[enemyManager.boss.enemyCount].drawEnemy(enemyManager.boss.X, enemyManager.boss.Y);
                }
                stillEnemy.drawEnemy(56, 8);
                // enemy.drawhorizontalEnemy();
                // enemy.StilldrawEnemy();
                healthPack[1].Draw();
                healthPack[0].Draw();
                healthPack[2].Draw();
                healthPack[3].Draw();
                healthPack[4].Draw();
                powerUp.Draw();
                armor.Draw();
                player.drawPlayer(enemyManager.enemy);
                //moves the player
                player.movePlayer(enemyManager.enemy, map, enemyManager.horizontalEnemy, stillEnemy, randomEnemy, enemyManager.boss);

                // checks if player had any collision
                if (player.playerMoving == true)
                {
                    player.CheckCollision(enemyManager.enemy, statsHUD, healthPack, powerUp, armor, enemyManager.horizontalEnemy, stillEnemy, randomEnemy, enemyManager.boss);
                }



                //moves the enemies
                randomEnemy[0].enemyMove(map, player);
                enemyManager.boss.enemyMove(enemyManager.horizontalEnemy, map, player);
                enemyManager.horizontalEnemy[0].enemyMove(map, player);
                enemyManager.horizontalEnemy[1].enemyMove(map, player);
                enemyManager.horizontalEnemy[2].enemyMove(map, player);
                enemyManager.horizontalEnemy[3].enemyMove(map, player);
                enemyManager.horizontalEnemy[4].enemyMove(map, player);
                enemyManager.horizontalEnemy[5].enemyMove(map, player);
                enemyManager.horizontalEnemy[6].enemyMove(map, player);
                enemyManager.horizontalEnemy[7].enemyMove(map, player);
                enemyManager.horizontalEnemy[8].enemyMove(map, player);
                enemyManager.horizontalEnemy[9].enemyMove(map, player);
                for (int b = 1; b < enemyManager.boss.enemyCount; b++)
                {
                    enemyManager.horizontalEnemy[b].enemyMove(map, player);
                }

                stillEnemy.enemyMove(map, player);
                //enemy.horizontalEnemyMove(map, player);
                // enemy.stillEnemyMove(map, player);
                // check to see if enemy hit player
                if (randomEnemy[0].enemyDead == false)
                {
                    randomEnemy[0].CheckAllPlayer(player);
                }

                if (enemyManager.horizontalEnemy[0].enemyDead == false)
                {
                    enemyManager.horizontalEnemy[0].CheckAllPlayer(player);
                }
                if (enemyManager.horizontalEnemy[1].enemyDead == false)
                {
                    enemyManager.horizontalEnemy[1].CheckAllPlayer(player);
                }
                if (enemyManager.horizontalEnemy[2].enemyDead == false)
                {
                    enemyManager.horizontalEnemy[2].CheckAllPlayer(player);
                }
                if (enemyManager.horizontalEnemy[3].enemyDead == false)
                {
                    enemyManager.horizontalEnemy[3].CheckAllPlayer(player);
                }
                if (enemyManager.horizontalEnemy[4].enemyDead == false)
                {
                    enemyManager.horizontalEnemy[4].CheckAllPlayer(player);
                }
                if (enemyManager.horizontalEnemy[5].enemyDead == false)
                {
                    enemyManager.horizontalEnemy[5].CheckAllPlayer(player);
                }
                if (enemyManager.horizontalEnemy[6].enemyDead == false)
                {
                    enemyManager.horizontalEnemy[6].CheckAllPlayer(player);
                }
                if (enemyManager.horizontalEnemy[7].enemyDead == false)
                {
                    enemyManager.horizontalEnemy[7].CheckAllPlayer(player);
                }
                if (enemyManager.horizontalEnemy[8].enemyDead == false)
                {
                    enemyManager.horizontalEnemy[8].CheckAllPlayer(player);
                }
                if (enemyManager.horizontalEnemy[9].enemyDead == false)
                {
                    enemyManager.horizontalEnemy[9].CheckAllPlayer(player);
                }
                if (enemyManager.boss.enemyDead == false)
                {
                    enemyManager.boss.CheckAllPlayer(player);
                }
                if (stillEnemy.enemyDead == false)
                {
                    stillEnemy.CheckAllPlayer(player);
                }

                Console.SetCursorPosition(0, 0);
            }
        }