public void AddBody(SpaceBody body) { if (!Play) { space.AddBody(body); } }
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; } }
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; } }
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; } } }
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(); } }
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); }
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("Такое имя уже существует"); } }
public SpaceStaticBody(SpaceBody other) : base(other) { }
public void RemoveBody(SpaceBody body) { ResetFuture(); lock (bodies) bodies.Remove(body); }
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); }