Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
        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;
            }
            }
        }
Ejemplo n.º 3
0
 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;
     }
 }
Ejemplo n.º 4
0
 //проверяет, пересекается ли выбранное кольцо со стержнем и перемещает кольцо на новый стержень
 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;
 }