/// <summary>
        /// отрисовка персонажа
        /// </summary>
        private void DrawGamer()
        {
            Graphics  g           = PB_Game.CreateGraphics();
            Brush     b           = new SolidBrush(Color.Red);
            Rectangle myRectangle = new Rectangle(X * size + 4, Y * size + 4, sizeHero, sizeHero);

            g.FillRectangle(b, myRectangle);
        }
 /// <summary>
 /// Обновление отрисовки
 /// </summary>
 private void DrawUpdate(int x, int y)
 {
     if (game)
     {
         bool      go          = false;
         Rectangle myRectangle = Rectangle.Empty;
         if (x == 1)
         {
             //право
             go          = cells[Y][X].Right;
             myRectangle = new Rectangle(X * size + 4, Y * size + 4, sizeHero * 2 + 4, sizeHero);
         }
         else if (x == -1)
         {
             //лево
             go          = cells[Y][X].Left;
             myRectangle = new Rectangle((X - 1) * size + 4, Y * size + 4, sizeHero * 2 + 7, sizeHero);
         }
         else if (y == 1)
         {
             //низ
             go          = cells[Y][X].Down;
             myRectangle = new Rectangle(X * size + 4, Y * size + 4, sizeHero, sizeHero * 2 + 4);
         }
         else if (y == -1)
         {
             //верх
             go          = cells[Y][X].Top;
             myRectangle = new Rectangle(X * size + 4, (Y - 1) * size + 4, sizeHero, sizeHero * 2 + 7);
         }
         if (go)
         {
             Graphics g = PB_Game.CreateGraphics();
             Brush    b = new SolidBrush(Color.Black);
             g.FillRectangle(b, myRectangle);
             X += x;
             Y += y;
             DrawGamer();
             if (X == sizePole - 1 && Y == sizePole - 1)
             {
                 X = 0;
                 Y = 0;
                 NextLevel();
                 NewGame();
             }
         }
     }
 }
        private void CreateGraf()
        {
            for (int i = 0; i < sizePole; i++)
            {
                for (int j = 0; j < sizePole; j++)
                {
                    cells[i][j].Num = sizePole * sizePole;
                }
            }
            cells[sizePole - 1][sizePole - 1].Num = 0;
            Graphics g = PB_Game.CreateGraphics();

            g.DrawString(cells[sizePole - 1][sizePole - 1].Num.ToString(), new Font("Arial", 8), Brushes.Black,
                         new Point(2 + size * (sizePole - 1), 2 + size * (sizePole - 1)));
            RecCreateGraf(sizePole - 1, sizePole - 1, 0);
        }
        /// <summary>
        /// вырисосвывем лабиринт
        /// </summary>
        private void DrawingLab()
        {
            Graphics g = PB_Game.CreateGraphics();

            g.Clear(Color.White);
            //создаем ручку черного цвета и толщиной в 1 (чего конкретно 1 хз, но буква f указывает что это переменная типа float)
            Pen p = new Pen(Color.Black, 1.0f);

            //сначала рисуем квадрат sizePoleхsizePole
            Point startHorizontal = new Point(0, 0);               //верхняя горизонталь
            Point stopHorizontal  = new Point(0, size * sizePole); //нижняя горизонталь

            g.DrawLine(p, startHorizontal, stopHorizontal);

            startHorizontal = new Point(size * sizePole, 0);               //верхняя горизонталь
            stopHorizontal  = new Point(size * sizePole, size * sizePole); //нижняя горизонталь
            g.DrawLine(p, startHorizontal, stopHorizontal);

            startHorizontal = new Point(0, 0);               //левая вертикаль
            stopHorizontal  = new Point(size * sizePole, 0); // правая вертикаль
            g.DrawLine(p, startHorizontal, stopHorizontal);

            startHorizontal = new Point(0, size * sizePole);               //левая вертикаль
            stopHorizontal  = new Point(size * sizePole, size * sizePole); // правая вертикаль
            g.DrawLine(p, startHorizontal, stopHorizontal);

            //а теперь внутренность квадрата (сам лабиринт)
            for (int i = 0; i < cells.Count; i++)
            {
                for (int j = 0; j < cells[i].Length; j++)
                {
                    if (!cells[i][j].Right)
                    {
                        startHorizontal = new Point(size * (j + 1), size * i);        //верхняя горизонталь
                        stopHorizontal  = new Point(size * (j + 1), size * i + size); //нижняя горизонталь
                        g.DrawLine(p, startHorizontal, stopHorizontal);
                    }

                    if (!cells[i][j].Down)
                    {
                        startHorizontal = new Point(size * j, size * (i + 1));        //верхняя вертикаль
                        stopHorizontal  = new Point(size * j + size, size * (i + 1)); //нижняя вертикаль
                        g.DrawLine(p, startHorizontal, stopHorizontal);
                    }
                }
            }
        }
        private void RecCreateGraf(int x, int y, int num)
        {
            Graphics g = PB_Game.CreateGraphics();

            if (CheckWay(x, y, x, y - 1) && cells[x][y - 1].Num > num + 1) //влево
            {
                cells[x][y - 1].Num = num + 1;

                Rectangle myRectangle = new Rectangle((y - 1) * size + 2, x * size + 2, sizeClaer, sizeClaer);
                g.FillRectangle(br, myRectangle);
                g.DrawString(cells[x][y - 1].Num.ToString(), new Font("Arial", sizeFont), Brushes.Black, new Point(1 + size * (y - 1), 2 + size * x));
                System.Threading.Thread.Sleep(pause);

                myRectangle = new Rectangle((y - 1) * size + 2, x * size + 2, sizeClaer, sizeClaer);
                g.FillRectangle(bw, myRectangle);
                g.DrawString(cells[x][y - 1].Num.ToString(), new Font("Arial", sizeFont), Brushes.Black, new Point(1 + size * (y - 1), 2 + size * x));

                if (maxNum > num)
                {
                    RecCreateGraf(x, y - 1, num + 1);
                }
            }
            if (CheckWay(x, y, x - 1, y) && cells[x - 1][y].Num > num + 1) //вверх
            {
                cells[x - 1][y].Num = num + 1;

                Rectangle myRectangle = new Rectangle(y * size + 2, (x - 1) * size + 2, sizeClaer, sizeClaer);
                g.FillRectangle(br, myRectangle);
                g.DrawString(cells[x - 1][y].Num.ToString(), new Font("Arial", sizeFont), Brushes.Black, new Point(1 + size * y, 2 + size * (x - 1)));
                System.Threading.Thread.Sleep(pause);

                myRectangle = new Rectangle(y * size + 2, (x - 1) * size + 2, sizeClaer, sizeClaer);
                g.FillRectangle(bw, myRectangle);
                g.DrawString(cells[x - 1][y].Num.ToString(), new Font("Arial", sizeFont), Brushes.Black, new Point(1 + size * y, 2 + size * (x - 1)));

                if (maxNum > num)
                {
                    RecCreateGraf(x - 1, y, num + 1);
                }
            }
            if (CheckWay(x, y, x, y + 1) && cells[x][y + 1].Num > num + 1) //вправо
            {
                cells[x][y + 1].Num = num + 1;

                Rectangle myRectangle = new Rectangle((y + 1) * size + 2, x * size + 2, sizeClaer, sizeClaer);
                g.FillRectangle(br, myRectangle);
                g.DrawString(cells[x][y + 1].Num.ToString(), new Font("Arial", sizeFont), Brushes.Black, new Point(1 + size * (y + 1), 2 + size * x));
                System.Threading.Thread.Sleep(pause);

                myRectangle = new Rectangle((y + 1) * size + 2, x * size + 2, sizeClaer, sizeClaer);
                g.FillRectangle(bw, myRectangle);
                g.DrawString(cells[x][y + 1].Num.ToString(), new Font("Arial", sizeFont), Brushes.Black, new Point(1 + size * (y + 1), 2 + size * x));

                if (maxNum > num)
                {
                    RecCreateGraf(x, y + 1, num + 1);
                }
            }
            if (CheckWay(x, y, x + 1, y) && cells[x + 1][y].Num > num + 1) //вниз
            {
                cells[x + 1][y].Num = num + 1;

                Rectangle myRectangle = new Rectangle(y * size + 2, (x + 1) * size + 2, sizeClaer, sizeClaer);
                g.FillRectangle(br, myRectangle);
                g.DrawString(cells[x + 1][y].Num.ToString(), new Font("Arial", sizeFont), Brushes.Black, new Point(1 + size * y, 2 + size * (x + 1)));
                System.Threading.Thread.Sleep(pause);

                myRectangle = new Rectangle(y * size + 2, (x + 1) * size + 2, sizeClaer, sizeClaer);
                g.FillRectangle(bw, myRectangle);
                g.DrawString(cells[x + 1][y].Num.ToString(), new Font("Arial", sizeFont), Brushes.Black, new Point(1 + size * y, 2 + size * (x + 1)));

                if (maxNum > num)
                {
                    RecCreateGraf(x + 1, y, num + 1);
                }
            }
        }