コード例 #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            label6.Visible = false;
            label7.Visible = false;
            label8.Visible = false;
            label7.Text    = "Расстояние между телами равно";
            var stoneTohorizont = new StoneToHorizont();
            var stone           = new StoneThrow.Stone();

            try
            {
                double angle = Convert.ToDouble(textBox1.Text);
                double speed = Convert.ToDouble(textBox2.Text);
                double time  = Convert.ToDouble(textBox3.Text);

                #region Обработка ввода данных об угле броска
                if (angle < 0)
                {
                    MessageBox.Show("Угол не может быть отрицательным\nВведите число >=0");
                    return;
                }
                else
                {
                    while (angle > 360)
                    {
                        angle -= 360;
                    }
                }
                if (angle == 90)
                {
                    MessageBox.Show("Вы бросили оба камня вверх");
                    stoneTohorizont.Angle = angle;
                }
                if (angle == 0 || angle >= 180)
                {
                    MessageBox.Show("Вы оставили 2-ой камень на земле");
                    stoneTohorizont.Angle = 0;
                }
                else
                {
                    stoneTohorizont.Angle = angle;
                }
                #endregion

                #region Обработка ввода данных о скорости
                if (speed < 0)
                {
                    MessageBox.Show("Скорость не может быть отрицательна\nВведите число >=0");
                    return;
                }
                else if (speed == 0)
                {
                    MessageBox.Show("Вы оставили камни у себя в руках,\nчтобы кинуть их, введите число >0");
                    label5.Visible = true;
                    label6.Visible = true;
                    label6.Text   += "\n0 м";
                    return;
                }
                else
                {
                    stone.Speed = stoneTohorizont.Speed = speed;
                }
                #endregion

                #region Обработка ввода данных о времени полёта
                if (time < 0)
                {
                    MessageBox.Show("Время не может быть отрицательным\nВведите число >=0");
                    return;
                }
                else if (time == 0)
                {
                    MessageBox.Show("Вы оставили камни у себя в руках,\nчтобы кинуть их, введите число >0");
                    label5.Visible = true;
                    label6.Visible = true;
                    label6.Text   += "\n0 м";
                    return;
                }
                else
                {
                    stone.Time = stoneTohorizont.Time = time;
                }
                #endregion

                if (stoneTohorizont.IsFall())
                {
                    if (angle == 90)
                    {
                        label8.Text    = "Камни упали";
                        label8.Visible = true;
                        label7.Visible = true;
                        label7.Text   += "\n0 м";
                    }
                    else if (angle == 0 || angle >= 180)
                    {
                        if (stone.IsFall())
                        {
                            label8.Text    = "Объект №1 упал";
                            label8.Visible = true;
                            label7.Visible = true;
                            label7.Text   += "\n0 м";
                        }
                        else
                        {
                            label7.Visible = true;
                            label7.Text   += "\n" + stone.Distance() + " м";
                        }
                    }
                    //при броске объекта №2 под углом к горизонту
                    else if (stone.IsFall())
                    {
                        label8.Text    = "Камни упали";
                        label8.Visible = true;
                        label7.Visible = true;
                        label7.Text   += "\n" + stoneTohorizont.Distance(true) + " м";
                    }
                    else
                    {
                        label8.Text    = "Объект 2-ой упал";
                        label8.Visible = true;
                        label7.Visible = true;
                        label7.Text   += "\n" + stoneTohorizont.Distance(false) + " м";
                    }
                }
                else if (angle == 90)
                {
                    label7.Visible = true;
                    label7.Text   += "\n0 м";
                }
                else
                {
                    label7.Visible = true;
                    label7.Text   += "\n" + stoneTohorizont.Distance(false) + " м";
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Введите данные во все поля\nВвод букв, спец.символом и знаков действий запрещён");
            }
        }