Ejemplo n.º 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);
         }
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// метод описывающий защиту игрока1
        /// </summary>
        private void Defence()
        {
            //выбор атакующего юнита бота
            int botNumber = generator.Next(0, Player2UnitsList.Count());
            //создание бойца бота
            Units BotFighter = Player2UnitsList[botNumber];
            //создание бойца игрока1
            Units PlayerFighter = Player1UnitsList[selectedButton];
            //расчитываем очки игрока1
            double PlayerPoints = PlayerFighter.Defence + PlayerFighter.Speed * 0.7 + 0.22 * PlayerFighter.Growth + 0.2 * PlayerFighter.AI_Value;
            //расчитываем очки бота
            double BotPoints = BotFighter.Attack + BotFighter.Speed * 0.8 + 0.1 * BotFighter.Growth + 0.2 * BotFighter.AI_Value;

            //если атака не прошла
            if (((BotPoints - PlayerPoints) / (BotFighter.Health - PlayerFighter.Health) < 0) || (PlayerFighter.Health == BotFighter.Health))
            {
                MessageBox.Show($"{BotFighter.Unit_name} атакует {PlayerFighter.Unit_name} , однако броня слишком прочная, атака была отражена!");
            }
            //если разность меньше 0.4 и юнит игрока1 погибает,изменяем здоровье на лейбле, изменяем здоровье юнита на 0
            else if ((BotPoints - PlayerPoints) / (BotFighter.Health - PlayerFighter.Health) < 0.4)
            {
                PlayerFighter.Health = 0;
                MessageBox.Show($"{BotFighter.Unit_name} атакует {PlayerFighter.Unit_name} , удар оказался настолько мощным, что ваш защитник погиб на месте!");
                if (selectedButton == 0)
                {
                    label1.Text = $"{Player1UnitsList[0].Unit_name} \n Health = {0}"; button1.Enabled = false;
                }
                if (selectedButton == 1)
                {
                    label2.Text = $"{Player1UnitsList[1].Unit_name} \n Health = {0}"; button2.Enabled = false;
                }
                if (selectedButton == 2)
                {
                    label3.Text = $"{Player1UnitsList[2].Unit_name} \n Health = {0}"; button3.Enabled = false;
                }
                if (selectedButton == 3)
                {
                    label4.Text = $"{Player1UnitsList[3].Unit_name} \n Health = {0}"; button4.Enabled = false;
                }
                if (selectedButton == 4)
                {
                    label5.Text = $"{Player1UnitsList[4].Unit_name} \n Health = {0}"; button5.Enabled = false;
                }
                Player1UnitsList[selectedButton].Health = 0;
            }
            //если после атаки здоровье юнита игрока1<=0, он погибает,изменяем здоровье на лейбле, изменяем здоровье юнита на 0
            else
            {
                PlayerFighter.Health = PlayerFighter.Health - (BotFighter.Maximum_Damage + BotFighter.Minimum_Damage) / 2.0;
                if (PlayerFighter.Health <= 0)
                {
                    MessageBox.Show($"{BotFighter.Unit_name} атакует {PlayerFighter.Unit_name} , здоровье выбранного защитника упало до критической отметки, он повержен!");
                    if (selectedButton == 0)
                    {
                        label1.Text = $"{Player1UnitsList[0].Unit_name} \n Health = {0}"; button1.Enabled = false;
                    }
                    if (selectedButton == 1)
                    {
                        label2.Text = $"{Player1UnitsList[1].Unit_name} \n Health = {0}"; button2.Enabled = false;
                    }
                    if (selectedButton == 2)
                    {
                        label3.Text = $"{Player1UnitsList[2].Unit_name} \n Health = {0}"; button3.Enabled = false;
                    }
                    if (selectedButton == 3)
                    {
                        label4.Text = $"{Player1UnitsList[3].Unit_name} \n Health = {0}"; button4.Enabled = false;
                    }
                    if (selectedButton == 4)
                    {
                        label5.Text = $"{Player1UnitsList[4].Unit_name} \n Health = {0}"; button5.Enabled = false;
                    }
                    Player1UnitsList[selectedButton].Health = 0;
                }
                //если после атаки здоровье юнита игрока1>0,изменяем здоровье на лейбле, изменяем здоровье юнита с вычетом произвденной атаки
                else
                {
                    MessageBox.Show($"{BotFighter.Unit_name} атакует {PlayerFighter.Unit_name} и наносит {(BotFighter.Maximum_Damage + BotFighter.Minimum_Damage) / 2.0} урона");
                    if (selectedButton == 0)
                    {
                        label1.Text = $"{Player1UnitsList[0].Unit_name} \n Health = {PlayerFighter.Health}";
                    }
                    if (selectedButton == 1)
                    {
                        label2.Text = $"{Player1UnitsList[1].Unit_name} \n Health = {PlayerFighter.Health}";
                    }
                    if (selectedButton == 2)
                    {
                        label3.Text = $"{Player1UnitsList[2].Unit_name} \n Health = {PlayerFighter.Health}";
                    }
                    if (selectedButton == 3)
                    {
                        label4.Text = $"{Player1UnitsList[3].Unit_name} \n Health = {PlayerFighter.Health}";
                    }
                    if (selectedButton == 4)
                    {
                        label5.Text = $"{Player1UnitsList[4].Unit_name} \n Health = {PlayerFighter.Health}";
                    }
                    Player1UnitsList[selectedButton].Health = PlayerFighter.Health;
                }
            }
            //если после хода здоровье всех юнитов игрока1=0 -поражение
            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();
            }
            //иначе записываем автосохранение и переходим к атаке
            else
            {
                Save();
                label14.Text = "Выберите юнита, которым будете атаковать!";
            }
        }