public void AddBody(SpaceBody body)
 {
     if (!Play)
     {
         space.AddBody(body);
     }
 }
Beispiel #2
0
 private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
 {
     MousDownCheck  = true;
     MousButtonLeft = e.Button == MouseButtons.Left;
     MousDownPoint  = MousPrevPoint = e.Location;
     currentBody    = space.FindBody(MousDownPoint);
 }
        private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            int k = 0;

            for (int i = 0; i < checkedListBox1.Items.Count; i++)
            {
                if (checkedListBox1.GetItemChecked(i))
                {
                    if (form2 != null)
                    {
                        if (form2.body == form.space.AllBodies()[i])
                        {
                            checkedListBox1.SetItemChecked(i, false);
                            k--;
                        }
                    }
                    k++;
                    Body = form.space.FindBody(checkedListBox1.Items[i].ToString());
                }
            }
            if (k == 1)
            {
                AddButton.Enabled = true;
            }
            else
            {
                AddButton.Enabled = false;
            }
        }
Beispiel #4
0
        private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            int k = 0;

            for (int i = 0; i < checkedListBox1.Items.Count; i++)
            {
                if (checkedListBox1.GetItemChecked(i))
                {
                    k++;
                    Body = form.space.FindBody(checkedListBox1.Items[i].ToString());
                }
            }
            if (k == 1)
            {
                ShowButton.Enabled   = true;
                FollowButton.Enabled = true;
                ChangeButton.Enabled = true;
            }
            else
            {
                ShowButton.Enabled   = false;
                FollowButton.Enabled = false;
                ChangeButton.Enabled = false;
            }
        }
        public FormChangeBody(FormMain form, SpaceBody body)
        {
            InitializeComponent();
            this.form              = form;
            this.body              = body;
            Text                   = body.Name;
            textBox1.Text          = Convert.ToString(body.point.X);
            textBox2.Text          = Convert.ToString(body.point.Y);
            textBox4.Text          = Convert.ToString(body.speed.X);
            textBox3.Text          = Convert.ToString(body.speed.Y);
            textBox5.Text          = Convert.ToString(body.Weight);
            textBox6.Text          = body.Name;
            StaticCheckBox.Checked = body is SpaceStaticBody;
            FollowCheckBox.Checked = body == form.space.GetSpace().follow;
            colorBody              = body.color;
            Bitmap   bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            Graphics g   = Graphics.FromImage(bmp);

            g.Clear(colorBody);
            pictureBox1.Image = bmp;
            if (body is SpaceShip)
            {
                textBox5.Enabled       = false;
                StaticCheckBox.Text    = "Driving";
                StaticCheckBox.Checked = body == form.drawingShip;
            }
        }
Beispiel #6
0
 private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
 {
     MousDownCheck = false;
     if (e.Location == MousDownPoint && !space.Play && currentBody != null)
     {
         FormChangeBody form = new FormChangeBody(this, currentBody);
         form.ShowDialog();
     }
     currentBody = null;
 }
 public void AddBody(PointF point, float Weight, string Name)
 {
     if (!Play)
     {
         point.X += space.Beginning.X;
         point.Y += space.Beginning.Y;
         SpaceBody body = new SpaceBody(point, Weight, Name);
         space.AddBody(body);
     }
 }
 public void ChangeSpeedVector(SpaceBody b, Point p)
 {
     if (!Play)
     {
         lock (Lock)
         {
             b.sX = (p.X + space.Beginning.X - b.X) / (float)16.0;
             b.sY = (p.Y + space.Beginning.Y - b.Y) / (float)16.0;
         }
     }
 }
 public void MoveBody(SpaceBody b, Point p)
 {
     if (b != null && !Play)
     {
         lock (Lock)
         {
             b.X += p.X;
             b.Y += p.Y;
         }
     }
 }
Beispiel #10
0
 public SpaceShip(SpaceBody other) : base(other)
 {
     Weight = 0;
     if (other is SpaceShip)
     {
         Gas         = ((SpaceShip)other).Gas;
         RotateLeft  = ((SpaceShip)other).RotateLeft;
         RotateRight = ((SpaceShip)other).RotateRight;
         Angle       = ((SpaceShip)other).Angle;
         MaxPower    = ((SpaceShip)other).MaxPower;
         shipImage   = (Bitmap)((SpaceShip)other).shipImage.Clone();
     }
     else
     {
         DrawShip();
     }
 }
Beispiel #11
0
        public override float SpeedCorrection(SpaceBody other, float slow)
        {
            if (other == this)
            {
                return(0);
            }
            int minFuture = Math.Min(FutureLength, other.FutureLength);

            lock (lockTrail)
                if (Distance2(other, minFuture) > 100)
                {
                    return(SpeedCorrection(this, other, slow, minFuture));
                }
                else
                {
                    Collision(other, minFuture);
                }
            return(0);
        }
Beispiel #12
0
        public void Orbit(SpaceBody SunBody, SpaceBody PlanetBody, bool clockwise)
        {
            PointF ImpulseSystem = PointF.Empty;

            ImpulseSystem.X += SunBody.Weight * SunBody.sX + PlanetBody.Weight * PlanetBody.sX;
            ImpulseSystem.Y += SunBody.Weight * SunBody.sY + PlanetBody.Weight * PlanetBody.sY;

            double R = Math.Sqrt((PlanetBody.X - SunBody.X) * (PlanetBody.X - SunBody.X) +
                                 (PlanetBody.Y - SunBody.Y) * (PlanetBody.Y - SunBody.Y));

            if (R <= 4d)
            {
                throw new Exception();
            }
            PlanetBody.sX = SunBody.sX;
            PlanetBody.sY = SunBody.sY;
            double AngleA = Math.Atan2(PlanetBody.Y - SunBody.Y, PlanetBody.X - SunBody.X);

            if (clockwise)
            {
                AngleA += Math.PI / 2;
            }
            else
            {
                AngleA -= Math.PI / 2;
            }
            PlanetBody.sX += (float)(Math.Sqrt(SunBody.Weight / R) * Math.Cos(AngleA));
            PlanetBody.sY += (float)(Math.Sqrt(SunBody.Weight / R) * Math.Sin(AngleA));

            ImpulseSystem.X -= SunBody.Weight * SunBody.sX + PlanetBody.Weight * PlanetBody.sX;
            ImpulseSystem.Y -= SunBody.Weight * SunBody.sY + PlanetBody.Weight * PlanetBody.sY;
            SunBody.sX      += ImpulseSystem.X / (PlanetBody.Weight + SunBody.Weight);
            SunBody.sY      += ImpulseSystem.Y / (PlanetBody.Weight + SunBody.Weight);
            PlanetBody.sX   += ImpulseSystem.X / (PlanetBody.Weight + SunBody.Weight);
            PlanetBody.sY   += ImpulseSystem.Y / (PlanetBody.Weight + SunBody.Weight);
        }
        private void SaveButton_Click(object sender, EventArgs e)
        {
            var  bodies      = form.space.AllBodies();
            bool TheOnlyName = true;

            for (int i = 0; i < bodies.Length; i++)
            {
                if (bodies[i].Name == textBox6.Text && bodies[i] != body)
                {
                    TheOnlyName = false;
                }
            }

            if (form.space.GetSpace().follow == body)
            {
                form.space.GetSpace().follow = null;
            }
            if (form.drawingShip == body)
            {
                form.drawingShip = null;
            }

            if (TheOnlyName)
            {
                try
                {
                    body.color = colorBody;

                    if (body.X != (float)Convert.ToDouble(textBox1.Text))
                    {
                        body.X = (float)Convert.ToDouble(textBox1.Text);
                    }
                    if (body.Y != (float)Convert.ToDouble(textBox2.Text))
                    {
                        body.Y = (float)Convert.ToDouble(textBox2.Text);
                    }
                    if (body.sX != (float)Convert.ToDouble(textBox4.Text))
                    {
                        body.sX = (float)Convert.ToDouble(textBox4.Text);
                    }
                    if (body.sY != (float)Convert.ToDouble(textBox3.Text))
                    {
                        body.sY = (float)Convert.ToDouble(textBox3.Text);
                    }
                    body.Weight = (float)Convert.ToDouble(textBox5.Text);
                    body.Name   = textBox6.Text;
                    if (body is SpaceShip)
                    {
                        if (StaticCheckBox.Checked)
                        {
                            form.drawingShip = (SpaceShip)body;
                        }
                        ((SpaceShip)body).DrawShip();
                    }
                    else
                    {
                        SpaceBody t;
                        if (StaticCheckBox.Checked)
                        {
                            t = new SpaceStaticBody(body);
                        }
                        else
                        {
                            t = new SpaceBody(body);
                        }
                        form.space.DeleteBody(body);
                        form.space.AddBody(t);
                        body = t;
                    }

                    if (FollowCheckBox.Checked)
                    {
                        form.space.GetSpace().follow = body;
                    }

                    if (IntoOrbitOfThisBody != null)
                    {
                        try
                        {
                            form.space.Orbit(IntoOrbitOfThisBody, body, clockwise);
                        }
                        catch { MessageBox.Show("R == 0"); }
                    }
                    Close();
                }
                catch
                {
                    MessageBox.Show("Недопустимый параметр");
                }
            }
            else
            {
                MessageBox.Show("Такое имя уже существует");
            }
        }
Beispiel #14
0
 public SpaceStaticBody(SpaceBody other) : base(other)
 {
 }
Beispiel #15
0
 public void RemoveBody(SpaceBody body)
 {
     ResetFuture();
     lock (bodies)
         bodies.Remove(body);
 }
Beispiel #16
0
 public void AddBody(SpaceBody body)
 {
     ResetFuture();
     lock (bodies)
         bodies.Add(body);
 }
 public void Orbit(SpaceBody Main, SpaceBody Satellite, bool clockwise)
 {
     space.Orbit(Main, Satellite, clockwise);
 }
 public void DeleteBody(SpaceBody b)
 {
     space.RemoveBody(b);
 }