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;
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы