private void Start() { while (k1.Count != 0) { k1.Pop(); } while (k2.Count != 0) { k2.Pop(); } while (k3.Count != 0) //очищает стеки { k3.Pop(); } count = 0; countLabel.Text = "Количество ходов " + count; temp = null; drag = false; if (comboBox1.Text != "") { kol = Convert.ToInt32(comboBox1.Text); } textBox1.Text = ""; rectangleSize(kol); deletePBoxes(kol); changeSizes(kol); }
private void movePBox(InfoRect t, int n)//Перенести пикчербокс на стержень n (1,2,3) { temp = t; switch (n) { case 1: { t.p.Location = new Point(Col1.Width + Col1.Location.X - t.p.Width / 2, 75); break; } case 2: { t.p.Location = new Point(Col2.Width + Col2.Location.X - t.p.Width / 2, 75); break; } case 3: { t.p.Location = new Point(Col3.Width + Col3.Location.X - t.p.Width / 2, 75); break; } default: { break; } } }
private void pictureBox9_MouseDown(object sender, MouseEventArgs e) { if (k1.Count != 0 && k1.Peek().p == pictureBox9) { drag = true; temp = k1.Peek(); dx = e.X; dy = e.Y; } if (k2.Count != 0 && k2.Peek().p == pictureBox9) { drag = true; temp = k2.Peek(); dx = e.X; dy = e.Y; } if (k3.Count != 0 && k3.Peek().p == pictureBox9) { drag = true; temp = k3.Peek(); dx = e.X; dy = e.Y; } }
//проверяет, пересекается ли выбранное кольцо со стержнем и перемещает кольцо на новый стержень private void CheckPBox() { if ((inters(temp.p, Col1)) && (k1.Count != 0 && k1.Peek().number < temp.number || k1.Count == 0)) { if (k2.Count != 0 && k2.Peek() == temp) // Если это кольцо из второго стержня { k2.Pop(); // убираем это кольцо из второго стержня if (k2.Count != 0) { k2.Peek().top = true;//Если на втором стержне остались кольца, отмечаем самую верхнюю } } if (k3.Count != 0 && k3.Peek() == temp) { k3.Pop(); if (k3.Count != 0) { k3.Peek().top = true; } } if (k1.Count != 0) { k1.Peek().top = false; } temp.top = true; temp.p.Location = new Point(Col1.Width + Col1.Location.X - temp.p.Width / 2, Convert.ToInt32(434 - (k1.Count + 1) * high - (k1.Count * 6))); k1.Push(temp); temp = null; drag = false; count++; countLabel.Text = "Количество ходов " + count; return; } if ((inters(temp.p, Col2)) && (k2.Count != 0 && k2.Peek().number < temp.number || k2.Count == 0)) { if (k1.Count != 0 && k1.Peek() == temp) { k1.Pop(); if (k1.Count != 0) { k1.Peek().top = true; } } if (k3.Count != 0 && k3.Peek() == temp) { k3.Pop(); if (k3.Count != 0) { k3.Peek().top = true; } } if (k2.Count != 0) { k2.Peek().top = false; } temp.top = true; temp.p.Location = new Point((Col2.Width + Col2.Location.X - Convert.ToInt32(temp.p.Width / 2)), Convert.ToInt32(434 - (k2.Count + 1) * high - (k2.Count * 6))); k2.Push(temp); temp = null; drag = false; count++; countLabel.Text = "Количество ходов " + count; return; } if ((inters(temp.p, Col3)) && (k3.Count != 0 && k3.Peek().number < temp.number || k3.Count == 0)) { if (k1.Count != 0 && k1.Peek() == temp) { k1.Pop(); if (k1.Count != 0) { k1.Peek().top = true; } } if (k2.Count != 0 && k2.Peek() == temp) { k2.Pop(); if (k2.Count != 0) { k2.Peek().top = true; } } if (k3.Count != 0) { k3.Peek().top = false; } temp.top = true; temp.p.Location = new Point(Col3.Width + Col3.Location.X - temp.p.Width / 2, Convert.ToInt32(434 - (k3.Count + 1) * high - (k3.Count * 6))); k3.Push(temp); temp = null; drag = false; count++; countLabel.Text = "Количество ходов " + count; return; } else { if (k1.Count != 0 && k1.Peek() == temp) { temp.p.Location = new Point(Col1.Width + Col1.Location.X - temp.p.Width / 2, Convert.ToInt32(434 - (k1.Count) * high - ((k1.Count - 1) * 6))); temp = null; drag = false; return; } if (k2.Count != 0 && k2.Peek() == temp) { temp.p.Location = new Point(Col2.Width + Col2.Location.X - temp.p.Width / 2, Convert.ToInt32(434 - (k2.Count) * high - ((k2.Count - 1) * 6))); temp = null; drag = false; return; } if (k3.Count != 0 && k3.Peek() == temp) { temp.p.Location = new Point(Col3.Width + Col3.Location.X - temp.p.Width / 2, Convert.ToInt32(434 - (k3.Count) * high - ((k3.Count - 1) * 6))); temp = null; drag = false; return; } } temp = null; drag = false; }