Graphics: Движение объектов по одной траектории - C#
Формулировка задачи:
Ребят помогите пожалуйста.У меня программа на C# ,она создаёт два объекта,после нажимаем на кнопку "запуск 1 объекта,начинает двигаться 1 объект по вытян.параболе.Затем нажимаем на Запуск 2 объекта ,он должен догнать первый.И в этом прблемма,второй объект двигаеться но не по той же траектории что и первый! Как быть? вот код
Заранее спасибо кто поможет
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace laba_4 { public partial class Form1 : Form { bool l = false; MyLabel1 D; MyLabel T; static public arch d = new arch(); public class MyLabel1 { public System.Windows.Forms.Label m3; public System.Windows.Forms.Timer MyTimer1; double y0; double x0; double M; public MyLabel1(Control Sender) { m3 = new Label(); m3.Parent = Sender; m3.Size = new System.Drawing.Size(100, 100); m3.Top = 190; m3.BackColor = System.Drawing.SystemColors.Desktop; MyTimer1 = new Timer(); MyTimer1.Interval = 1; MyTimer1.Tick += new System.EventHandler(movett); } public double x1 { set { x0 = value; double Mhor = m3.Parent.Width / 3000.0; m3.Left = System.Convert.ToInt32(x0 * Mhor); } get { return x0; } } public double y1 { set { y0 = value; double Mhor = m3.Parent.Width / 3000.0; m3.Top = -System.Convert.ToInt32(y0 * Mhor) + m3.Parent.Height / 2 - m3.Height; } get { return y0; } } public void movett(object sender, EventArgs e) { if (d.archx >= x1) x1 = x1 + 2; else x1 = x1 - 2; if (d.archy >= y1) y1 = y1 + 2; else y1 = y1 - 2; } } public class arch //класс архив нужен чтобы второй объект получал координаты от первого { public double archx; public double archy; } public class MyLabel { double y0; double x0; double a = 10; double k = 0.0003; public System.Windows.Forms.Label m; public System.Windows.Forms.Label m1; public System.Windows.Forms.Label m2; public System.Windows.Forms.Timer MyTimer; //конструктор класса public MyLabel(Control Sender) { m = new Label(); m.BackColor = System.Drawing.SystemColors.GradientActiveCaption; m.Parent = Sender; m.Text = " 1 "; m.Click += new System.EventHandler(this.move); m.Left = 150; m.Top = 190; m.Width = 100; m.Height = 30; m1 = new Label(); m1.BackColor = System.Drawing.SystemColors.GradientActiveCaption; m1.Parent = Sender; m1.Text = " 2 "; m1.Click += new System.EventHandler(this.move); m1.Top = 190; m1.Left = m.Width / 2 - (m1.Width / 2); m1.Left = 4; m1.Width = 50; m1.Height = 30; m2 = new Label(); m2.BackColor = System.Drawing.SystemColors.GradientActiveCaption; m2.Parent = Sender; m2.Text = " 3 "; m2.Click += new System.EventHandler(this.move); m2.Width = 25; m2.Left = m.Width / 2 - (m2.Width / 2); m2.Left = 10; m2.Top = 180; m2.Width = 25; m2.Height = 30; MyTimer = new Timer(); MyTimer.Interval = 2; MyTimer.Tick += new System.EventHandler(this.move1); } public void move(object sender, EventArgs e) { x = x + 1; y = y + 1; } public void move1(object sender, EventArgs e) { xcor = x + a; d.archx = xcor; k = 0.0003; ycor = k * Math.Pow(x, 2); d.archy = ycor; } public double xcor { set { x0 = value; double Mhor = m.Parent.Width / 3000.0; m.Left = System.Convert.ToInt32(x0 * Mhor); m1.Left = m.Left + m.Width / 2 - (m.Width / 4); m2.Left = m.Left + m.Width / 2 - (m.Width / 10); } get { return x0; } } public double ycor { set { y0 = value; double Mhor = m.Parent.Height / 3000.0; m.Top = (m.Parent.Height - (m.Height + 30)) - System.Convert.ToInt32(y0 * Mhor); m1.Top = m.Top - m.Height; m2.Top = m.Top - m.Height - m1.Height; } get { return y0; } } public double x//класс координация меток на форме по Х { set { x0 = value; double Mhor = m.Parent.Width / 3000.0; m.Left = System.Convert.ToInt32(x0 * Mhor); m1.Left = m.Left + m.Width / 2 - (m.Width / 4); m2.Left = m.Left + m.Width / 2 - (m.Width / 10); } get { return x0; } } public double y//класс координация меток на форме по У { set { y0 = value; double Mhor = m.Parent.Height / 3000.0; m.Top = (m.Parent.Height - (m.Height + 30)) - System.Convert.ToInt32(y0 * Mhor); m1.Top = m.Top - m.Height; m2.Top = m.Top - m.Height - m1.Height; } get { return y0; } } // public void movet(object sender, EventArgs e) // { // xcor = x + 1; // ycor = y + 1; // } } public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) {// d = new arch(this); T = new MyLabel(this); T.x = 0; T.y = 0; D = new MyLabel1(this); } private void button2_Click(object sender, EventArgs e) { if (l == false) l = true; else l = false; T.MyTimer.Enabled = l; } private void button3_Click(object sender, EventArgs e) { if (l == false) l = true; else l = false; D.MyTimer1.Enabled = l; } } }
Решение задачи: «Graphics: Движение объектов по одной траектории»
textual
Листинг программы
public void movett(object sender, EventArgs e) { if (d.archx >= x1) x1 = x1 + 2; else x1 = x1 - 2; if (d.archy >= y1) y1 = y1 + 2; else y1 = y1 - 2; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д