Перемещение объектов по случайной траектории - C#

Узнай цену своей работы

Формулировка задачи:

Подскажите как реализовать перемещение объектов по случайной траектории с шагом не более 20 пикселей.. Именно в этом шаге и проблема. Он формирует случайные числа так, что перемещение идет по диагонали вниз да и еще с шагом явно превышающим 20 пикселей..

Решение задачи: «Перемещение объектов по случайной траектории»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
namespace lr3
{
    delegate void Tik(object sender, Graphics gr);
    class SourceTik
    {
        public event Tik Mail;
        Graphics gr;
        public System.Timers.Timer timer;
 
        protected virtual void OnMail()
        {
            if (Mail != null) Mail(this, gr);
        }
        public SourceTik(Graphics GR)
        {
            timer = new System.Timers.Timer();
            timer.Interval = 2000d;
            timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
            timer.Start();
            gr = GR;
        }
 
        void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
 
            OnMail();
        }
 
    }
 
 
   
    public class Class_2
    {
        public int[] С1;
        public int[] С2;
        public int[] C3;
 
        public Point[] T1;
        public Point[] T2;
        
        Random Rand;
 
        int X;
        int Y;
        SourceTik obj;
 
 
        public void Stop()
        {
            obj.timer.Stop();
        }
        
        void obj_TikTak( object sender,Graphics gr)
{
            Draw(gr);
}
 
 
        public Class_2(Graphics GR)
        {
            obj = new SourceTik(GR);
           С1 = new int[3];
           С2 = new int[3];
           C3 = new int[3];
 
           T1 = new Point[3];
           T2 = new Point[3];
 
           Rand = new Random();
 
           X = 400;
           Y = 200;
        }
        public void Changes()
        {
            X = 25 + Rand.Next(720); //Rand.Next(X - 20, X + 20);
            Y = 25 + Rand.Next(500);//Rand.Next(Y - 20, Y + 20);
 
            int k = Rand.Next(100);
            С1[0] = X;
            С1[1] = Y + 35;
            С1[2] = 105;
 
            X += 100;
            С2[0] = X;
            С2[1] = Y;
            С2[2] = 75;
 
            X -= 70;
            Y += 130;
            C3[0] = X;
            C3[1] = Y;
            C3[2] = 107;
      
            T1[0] = new Point(X+k, Y + 120+k);
            T1[1] = new Point(X - 75-k, Y - 30-k);
            T1[2] = new Point(X + 50+k, Y - 70+k);
 
            X += 100;
            T2[0] = new Point(X+120+k, Y-50-k);
            T2[1] = new Point(X + 20+k, Y - 130-k);
            T2[2] = new Point(X -75 -k, Y +20-k);
        }
 
        public void Draw(Graphics gr)
        {
            obj.Mail -= new Tik(obj_TikTak);
            obj.Mail += new Tik(obj_TikTak);
 
            gr.Clear(Color.Gainsboro);
            this.Changes();
           
            gr.DrawEllipse(new Pen(Color.Green, 5), С1[0], С1[1], С1[2], С1[2]);
            gr.DrawPolygon(new Pen(Color.Honeydew, 5), T1);
            gr.DrawEllipse(new Pen(Color.Green, 5), С2[0], С2[1], С2[2], С2[2]);
            gr.DrawEllipse(new Pen(Color.Green, 5), C3[0], C3[1], C3[2], C3[2]);
            gr.DrawPolygon(new Pen(Color.Honeydew, 5), T2);
            
        }
    }
}

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


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

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

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