Пацаны, хелпаните, в общем сделал подобие лифта, который катается по этажам. Нужно сделать такую хуевину, чтобы лифт не менял направления движения, пока не обработает все вызовы в текущем направлении, но так же подсаживал пассажиров по пути движения. У меня блять хуета получилась, если он едет на заданный этаж и я нажимаю другой этаж то он уже хуй забивает на ранее заданный этаж и едет на новый и не ждет пассажиров нихуя, с открытыми дверьми уезжает и похуй. Так же надо сделать, чтобы при нажатии на вызов лифта кнопка деактивировалась. За хорошую помощь отблагодарю, над сделать до завтра, поэтому завтра уже не актуально будет. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp7 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Button[] lift_buttons; // массив кнопок на этажах. Button[] etages; // массив кнопок в самом лифте. int kol_et; // кол-во этаж int n; int et = 1; // этаж где находится лифт int v = 0; // скорость int sost = 0; // состояние лифта private void call_handler(object sender, EventArgs e) { n = kol_et + 1 - Convert.ToInt32((sender as Button).Text); timer1.Enabled = true; sost = 1; } private void Form1_Load(object sender, EventArgs e) { } private void numericUpDown1_ValueChanged(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { pictureBox1.Visible = true; textBox1.Visible = true; textBox2.Visible = true; button1.Enabled = false; numericUpDown1.Enabled = false; int top = 900; int top2 = 900; int down = 0; // int left = 10; //int left2 = 700; kol_et = (int)numericUpDown1.Value; lift_buttons = new Button[kol_et + 1]; // создаем массив кнопок нужной длин etages = new Button[kol_et + 1]; for (int i = 1; i <= kol_et; i++) { // textBox1.Width = 18; down += 1; pictureBox1.Top = 40 * down; textBox1.Top = 40 * down; textBox2.Top = 40 * down; lift_buttons[i] = new Button(); // создаем очередную кнопку lift_buttons[i].Left = 720; // расстояние от левого конца формы lift_buttons[i].Top = 30 * down ; // расстояние от верхнего конца формы lift_buttons[i].Text = Convert.ToString(kol_et - down + 1); lift_buttons[i].Width = 30; lift_buttons[i].Name = Convert.ToString(i); lift_buttons[i].Click += call_handler; // подписываем ее на событие Click, обработчик которого назовем call_handler this.Controls.Add(lift_buttons[i]); // добавляем кнопку к форме (this - форма) // top += lift_buttons[i].Height - 55; // расстояние между кнопками etages[i] = new Button(); etages[i].Left = 10; // расстояние от левого конца формы etages[i].Top = 40* down; // расстояние от верхнего конца формы etages[i].Text = Convert.ToString(kol_et - down + 1); etages[i].Name = Convert.ToString(i); etages[i].Click += call_handler; // подписываем ее на событие Click, обработчик которого назовем call_handler this.Controls.Add(etages[i]); // добавляем кнопку к форме (this - форма) // top2 += etages[i].Height - 80; } } int t; private void timer1_Tick(object sender, EventArgs e) { switch (sost) { case 1: if (textBox1.Top > etages[n].Top) { textBox1.Top--; textBox2.Top--; pictureBox1.Top--; } else if (textBox1.Top < etages[n].Top) { textBox1.Top++; textBox2.Top++; pictureBox1.Top++; } else { sost = 2; } break; case 2: timer1.Interval = 20; if (textBox1.Width > 5) { textBox1.Width -= 1; textBox2.Width -= -1; etages[n].Enabled = true; } else { sost = 4; t = 0; } break; case 3: if (textBox1.Width < 18) { textBox1.Width += 1; textBox2.Width += -1; } else { sost = 0; timer1.Enabled = false; etages[n].Enabled = true; } break; case 4: t++; if (t>100) { sost = 3; } break; } } private void textBox1_TextChanged(object sender, EventArgs e) { } } } Код using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp7 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Button[] lift_buttons; // массив кнопок на этажах. Button[] etages; // массив кнопок в самом лифте. int kol_et; // кол-во этаж int n; int et = 1; // этаж где находится лифт int v = 0; // скорость int sost = 0; // состояние лифта private void call_handler(object sender, EventArgs e) { n = kol_et + 1 - Convert.ToInt32((sender as Button).Text); timer1.Enabled = true; sost = 1; } private void Form1_Load(object sender, EventArgs e) { } private void numericUpDown1_ValueChanged(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { pictureBox1.Visible = true; textBox1.Visible = true; textBox2.Visible = true; button1.Enabled = false; numericUpDown1.Enabled = false; int top = 900; int top2 = 900; int down = 0; // int left = 10; //int left2 = 700; kol_et = (int)numericUpDown1.Value; lift_buttons = new Button[kol_et + 1]; // создаем массив кнопок нужной длин etages = new Button[kol_et + 1]; for (int i = 1; i <= kol_et; i++) { // textBox1.Width = 18; down += 1; pictureBox1.Top = 40 * down; textBox1.Top = 40 * down; textBox2.Top = 40 * down; lift_buttons[i] = new Button(); // создаем очередную кнопку lift_buttons[i].Left = 720; // расстояние от левого конца формы lift_buttons[i].Top = 30 * down ; // расстояние от верхнего конца формы lift_buttons[i].Text = Convert.ToString(kol_et - down + 1); lift_buttons[i].Width = 30; lift_buttons[i].Name = Convert.ToString(i); lift_buttons[i].Click += call_handler; // подписываем ее на событие Click, обработчик которого назовем call_handler this.Controls.Add(lift_buttons[i]); // добавляем кнопку к форме (this - форма) // top += lift_buttons[i].Height - 55; // расстояние между кнопками etages[i] = new Button(); etages[i].Left = 10; // расстояние от левого конца формы etages[i].Top = 40* down; // расстояние от верхнего конца формы etages[i].Text = Convert.ToString(kol_et - down + 1); etages[i].Name = Convert.ToString(i); etages[i].Click += call_handler; // подписываем ее на событие Click, обработчик которого назовем call_handler this.Controls.Add(etages[i]); // добавляем кнопку к форме (this - форма) // top2 += etages[i].Height - 80; } } int t; private void timer1_Tick(object sender, EventArgs e) { switch (sost) { case 1: if (textBox1.Top > etages[n].Top) { textBox1.Top--; textBox2.Top--; pictureBox1.Top--; } else if (textBox1.Top < etages[n].Top) { textBox1.Top++; textBox2.Top++; pictureBox1.Top++; } else { sost = 2; } break; case 2: timer1.Interval = 20; if (textBox1.Width > 5) { textBox1.Width -= 1; textBox2.Width -= -1; etages[n].Enabled = true; } else { sost = 4; t = 0; } break; case 3: if (textBox1.Width < 18) { textBox1.Width += 1; textBox2.Width += -1; } else { sost = 0; timer1.Enabled = false; etages[n].Enabled = true; } break; case 4: t++; if (t>100) { sost = 3; } break; } } private void textBox1_TextChanged(object sender, EventArgs e) { } } }
lapsicanders, как есть, на гуру c# не претендую, все по учебнику делал, если сможешь сделай понятно, т.к. мне над ее защищать еще.