Перемещение объектов по случайной траектории - 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); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д