예제 #1
0
 /// <summary>
 /// начало боя,делаем кнопки активными
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void label14_Click(object sender, EventArgs e)
 {
     if (label14.Text == "Нажмите для НАЧАЛА БОЯ")
     {
         label14.Text    = "Выберите юнита, которым будете атаковать!";
         button1.Enabled = true;
         button2.Enabled = true;
         button3.Enabled = true;
         button4.Enabled = true;
         button5.Enabled = true;
         //если игра из сохранения и какие то из юнитов уже убиты
         if (Player1UnitsList[0].Health == 0)
         {
             button1.Enabled = false;
         }
         if (Player1UnitsList[1].Health == 0)
         {
             button2.Enabled = false;
         }
         if (Player1UnitsList[2].Health == 0)
         {
             button3.Enabled = false;
         }
         if (Player1UnitsList[3].Health == 0)
         {
             button4.Enabled = false;
         }
         if (Player1UnitsList[4].Health == 0)
         {
             button5.Enabled = false;
         }
         //если все юниты игрока1 убиты
         if ((Player1UnitsList[0].Health + Player1UnitsList[1].Health + Player1UnitsList[2].Health + Player1UnitsList[3].Health + Player1UnitsList[4].Health) == 0)
         {
             this.Hide();
             Lose lose = new Lose();
             lose.Show();
         }
         //если все юниты игрока2 убиты
         if ((Player2UnitsList[0].Health + Player2UnitsList[1].Health + Player2UnitsList[2].Health + Player2UnitsList[3].Health + Player2UnitsList[4].Health) == 0)
         {
             this.Hide();
             Win win = new Win();
             win.Show();
         }
         List <Units> TempBotList = new List <Units>();
         foreach (var unit in Player2UnitsList)
         {
             TempBotList.Add(unit);
         }
         for (int i = 0; i < Player2UnitsList.Count(); i++)
         {
             if (Player2UnitsList[i].Health <= 0)
             {
                 TempBotList.Remove(Player2UnitsList[i]);
             }
         }
         Player2UnitsList.Clear();
         foreach (var unit in TempBotList)
         {
             Player2UnitsList.Add(unit);
         }
     }
 }
예제 #2
0
        /// <summary>
        /// Метод для описывания атаки
        /// </summary>
        private void Attack()
        {
            //выбор атакующего юнита ботом
            int botNumber = generator.Next(0, Player2UnitsList.Count());
            //боец бота
            Units BotFighter = Player2UnitsList[botNumber];
            //боец игрока
            Units PlayerFighter = Player1UnitsList[selectedButton];
            //расчитываем очки бота
            double BotPoints = BotFighter.Defence + BotFighter.Speed * 0.7 + 0.22 * BotFighter.Growth + 0.2 * BotFighter.AI_Value;
            //расчитываем очки игрока
            double PlayerPoints = PlayerFighter.Attack + PlayerFighter.Speed * 0.8 + 0.1 * PlayerFighter.Growth + 0.2 * PlayerFighter.AI_Value;

            //если атака не прошла
            if (((PlayerPoints - BotPoints) / (PlayerFighter.Health - BotFighter.Health) < 0) || (PlayerFighter.Health == BotFighter.Health))
            {
                MessageBox.Show($"{PlayerFighter.Unit_name} атакует {BotFighter.Unit_name} , однако броня слишком прочная, атака была отражена!");
            }
            //если разность меньше 0.4 и юнит бота погибает,изменяем здоровье на лейбле, убираем юнита из листа юнитов бота
            //меняем здоровье юнита на 0 в FullBotUnitsLIst
            else if ((PlayerPoints - BotPoints) / (PlayerFighter.Health - BotFighter.Health) < 0.4)
            {
                BotFighter.Health = 0;
                MessageBox.Show($"{PlayerFighter.Unit_name} атакует {BotFighter.Unit_name} , удар оказался настолько мощным, что противник погиб на месте!");
                if (BotFighter == FullBotUnitsList[0])
                {
                    label6.Text = $"{FullBotUnitsList[0].Unit_name} \n Health = {0}";
                    FullBotUnitsList[0].Health = 0;
                }
                if (BotFighter == FullBotUnitsList[1])
                {
                    label7.Text = $"{FullBotUnitsList[1].Unit_name} \n Health = {0}";
                    FullBotUnitsList[1].Health = 0;
                }
                if (BotFighter == FullBotUnitsList[2])
                {
                    label8.Text = $"{FullBotUnitsList[2].Unit_name} \n Health = {0}";
                    FullBotUnitsList[2].Health = 0;
                }
                if (BotFighter == FullBotUnitsList[3])
                {
                    label9.Text = $"{FullBotUnitsList[3].Unit_name} \n Health = {0}";
                    FullBotUnitsList[3].Health = 0;
                }
                if (BotFighter == FullBotUnitsList[4])
                {
                    label10.Text = $"{FullBotUnitsList[4].Unit_name} \n Health = {0}";
                    FullBotUnitsList[4].Health = 0;
                }
                Player2UnitsList.Remove(Player2UnitsList[botNumber]);
            }
            // Если атака нанесена,и здоровье защищающегося юнита бота<=0, юнит бота погибает,изменяем здоровье на лейбле, убираем юнита из листа юнитов бота
            //меняем здоровье юнита на 0 в FullBotUnitsLIst
            else
            {
                BotFighter.Health = BotFighter.Health - (PlayerFighter.Maximum_Damage + PlayerFighter.Minimum_Damage) / 2.0;
                if (BotFighter.Health <= 0)
                {
                    BotFighter.Health = 0;
                    MessageBox.Show($"{PlayerFighter.Unit_name} атакует {BotFighter.Unit_name} , здоровье противника упало до критической отметки, он повержен!");
                    if (BotFighter == FullBotUnitsList[0])
                    {
                        label6.Text = $"{FullBotUnitsList[0].Unit_name} \n Health = {0}";
                        FullBotUnitsList[0].Health = 0;
                    }
                    if (BotFighter == FullBotUnitsList[1])
                    {
                        label7.Text = $"{FullBotUnitsList[1].Unit_name} \n Health = {0}";
                        FullBotUnitsList[1].Health = 0;
                    }
                    if (BotFighter == FullBotUnitsList[2])
                    {
                        label8.Text = $"{FullBotUnitsList[2].Unit_name} \n Health = {0}";
                        FullBotUnitsList[2].Health = 0;
                    }
                    if (BotFighter == FullBotUnitsList[3])
                    {
                        label9.Text = $"{FullBotUnitsList[3].Unit_name} \n Health = {0}";
                        FullBotUnitsList[3].Health = 0;
                    }
                    if (BotFighter == FullBotUnitsList[4])
                    {
                        label10.Text = $"{FullBotUnitsList[4].Unit_name} \n Health = {0}";
                        FullBotUnitsList[4].Health = 0;
                    }
                    Player2UnitsList.Remove(Player2UnitsList[botNumber]);
                }
                //Если атака нанесена,и здоровье защищающегося юнита бота>0,изменяем здоровье на лейбле, изменяем здоровье в листе юнитов бота
                //меняем здоровье юнита на нанесенную атаку в FullBotUnitsLIst
                else
                {
                    MessageBox.Show($"{PlayerFighter.Unit_name} атакует {BotFighter.Unit_name} и наносит {(PlayerFighter.Maximum_Damage + PlayerFighter.Minimum_Damage) / 2.0} урона");
                    if (BotFighter == FullBotUnitsList[0])
                    {
                        label6.Text = $"{FullBotUnitsList[0].Unit_name} \n Health = {BotFighter.Health}";
                        FullBotUnitsList[0].Health = BotFighter.Health;
                    }
                    if (BotFighter == FullBotUnitsList[1])
                    {
                        label7.Text = $"{FullBotUnitsList[1].Unit_name} \n Health = {BotFighter.Health}";
                        FullBotUnitsList[1].Health = BotFighter.Health;
                    }
                    if (BotFighter == FullBotUnitsList[2])
                    {
                        label8.Text = $"{FullBotUnitsList[2].Unit_name} \n Health = {BotFighter.Health}";
                        FullBotUnitsList[2].Health = BotFighter.Health;
                    }
                    if (BotFighter == FullBotUnitsList[3])
                    {
                        label9.Text = $"{FullBotUnitsList[3].Unit_name} \n Health = {BotFighter.Health}";
                        FullBotUnitsList[3].Health = BotFighter.Health;
                    }
                    if (BotFighter == FullBotUnitsList[4])
                    {
                        label10.Text = $"{FullBotUnitsList[4].Unit_name} \n Health = {BotFighter.Health}";
                        FullBotUnitsList[4].Health = BotFighter.Health;
                    }
                    Player2UnitsList[botNumber].Health = BotFighter.Health;
                }
            }
            //если все войска бота убиты-вы победили
            if (Player2UnitsList.Count() == 0)
            {
                this.Hide();
                Win win = new Win();
                win.Show();
            }
            //переход к защите
            else
            {
                label14.Text = "Выберите юнита, которым будете защищаться!";
            }
        }