Esempio n. 1
0
        public void Inicio()
        {
            Point p = new Point();                      // Creamos un punto que nos ayudará a mover las reinas

            p.X         = 78;                           // Punto X inicial de la Reina 5
            p.Y         = 317;                          // Punto Y inicial de la Reina 5
            R5.Location = p;                            // Cambiamos la locación de la Reina 5

            p.X         = 78;                           // Punto X inicial de la Reina 4
            p.Y         = 258;                          // Punto Y inicial de la Reina 4
            R4.Location = p;                            // Cambiamos la locación de la Reina 4

            p.X         = 78;                           // Punto X inicial de la Reina 3
            p.Y         = 199;                          // Punto Y inicial de la Reina 3
            R3.Location = p;                            // Cambiamos la locación de la Reina 3

            p.X         = 78;                           // Punto X inicial de la Reina 2
            p.Y         = 140;                          // Punto Y inicial de la Reina 2
            R2.Location = p;                            // Cambiamos la locación de la Reina 2

            p.X         = 78;                           // Punto X inicial de la Reina 1
            p.Y         = 80;                           // Punto Y inicial de la Reina 1
            R1.Location = p;                            // Cambiamos la locación de la Reina 1
            R1.Refresh();                               // Refrescamos los pictureboxs para tener la imagen actual de como se verían

            for (int i = 0; i < 5; i++)                 // Ciclo que mueve la Reina 1
            {
                for (int j = 0; j < 5; j++)             // Ciclo que mueve la Reina 2
                {
                    for (int k = 0; k < 5; k++)         // Cliclo que mueve la Reina 3
                    {
                        for (int l = 0; l < 5; l++)     // Ciclo que mueve la Reina 2
                        {
                            for (int m = 0; m < 5; m++) // Ciclo que mueve la Reina 1
                            {
                                tablero[0] = i;         // Colocamos la Reina 1
                                tablero[1] = j;         // Colocamos la Reina 2
                                tablero[2] = k;         // Colocamos la Reina 3
                                tablero[3] = l;         // Colocamos la Reina 4
                                tablero[4] = m;         // Colocamos la Reina 5

                                Thread.Sleep(20);       // Asignamos la velocidad con la que se moverán las reinas

                                // Imprimir picturebox
                                if (Verificar())                                                                                                   // Sí la función devuelve verdadero
                                {
                                    if (MessageBox.Show("Encontró una solución", "!SOLUCION¡", MessageBoxButtons.OKCancel) == DialogResult.Cancel) // Mostramos un mensaje que dice sí queremos continuar o terminar el proceso
                                    {
                                        return;                                                                                                    // Sí damos click en "Cancelar" se tendrá que empezar de nuevo
                                    }
                                }

                                Tablero.Refresh();                    // Refrescamos a la imagen actual del Tablero

                                if (m + 1 != 5)                       // Si la Reina 5 está en la posición 5, no moveremos las reina
                                {
                                    p.X         = R5.Location.X + 59; // Cambiamos el punto X de la Reina 5
                                    p.Y         = R5.Location.Y;      // Cambiamos el punto Y de la Reina 5
                                    R5.Location = p;                  // Movemos la locación de la Reina 5
                                    R5.Refresh();                     // Refrescamos a la imagen actual de la Reina 5
                                }
                            } // Fin for de m

                            p.X         = 78;                     // Cambiamos el punto X al inicial de la Reina 5
                            p.Y         = 317;                    // Cambiamos el punto Y al inicial de la Reina 5
                            R5.Location = p;                      // Movemos la Reina 5 a su punto inicial

                            if (l + 1 != 5)                       // Si la Reina 4 está en la posición 5, no moveremos las reina
                            {
                                p.X         = R4.Location.X + 59; // Cambiamos el punto X de la Reina 4
                                p.Y         = R4.Location.Y;      // Cambiamos el punto Y de la Reina 4
                                R4.Location = p;                  // Movemos la locación de la Reina 4
                            }

                            R4.Refresh(); // Refrescamos a la imagen actual de la Reina 4
                        } // Fin for de l

                        p.X         = 78;                     // Cambiamos el punto X al inicial de la Reina 4
                        p.Y         = 258;                    // Cambiamos el punto Y al inicial de la Reina 4
                        R4.Location = p;                      // Movemos la Reina 4 a su punto inicial

                        if (k + 1 != 5)                       // Si la Reina 3 está en la posición 5, no moveremos las reina
                        {
                            p.X         = R3.Location.X + 59; // Cambiamos el punto X de la Reina 3
                            p.Y         = R3.Location.Y;      // Cambiamos el punto Y de la Reina 3
                            R3.Location = p;                  // Movemos la locación de la Reina 3
                        }

                        R3.Refresh(); // Refrescamos a la imagen actual de la Reina 3
                    } // Fin for de k

                    p.X         = 78;                     // Cambiamos el punto X al inicial de la Reina 3
                    p.Y         = 199;                    // Cambiamos el punto Y al inicial de la Reina 3
                    R3.Location = p;                      // Movemos la Reina 3 a su punto inicial

                    if (j + 1 != 5)                       // Si la Reina 2 está en la posición 5, no moveremos las reina
                    {
                        p.X         = R2.Location.X + 59; // Cambiamos el punto X de la Reina 2
                        p.Y         = R2.Location.Y;      // Cambiamos el punto Y de la Reina 2
                        R2.Location = p;                  // Movemos la locación de la Reina 2
                    }

                    R2.Refresh(); // Refrescamos a la imagen actual de la Reina 2
                } // Fin for de j

                p.X         = 78;                     // Cambiamos el punto X al inicial de la Reina 2
                p.Y         = 140;                    // Cambiamos el punto Y al inicial de la Reina 2
                R2.Location = p;                      // Movemos la Reina 2 a su punto inicial

                if (i + 1 != 5)                       // Si la Reina 1 está en la posición 5, no moveremos las reina
                {
                    p.X         = R1.Location.X + 59; // Cambiamos el punto X de la Reina 1
                    p.Y         = R1.Location.Y;      // Cambiamos el punto Y de la Reina 1
                    R1.Location = p;                  // Movemos la locación de la Reina 1
                }

                R1.Refresh(); // Refrescamos a la imagen actual de la Reina 1
            } // Fin for de i

            p.X         = 78; // Cambiamos el punto X al inicial de la Reina 1
            p.Y         = 80; // Cambiamos el punto Y al inicial de la Reina 1
            R1.Location = p;  // Movemos la Reina 1 a su punto inicial
            R1.Refresh();     // Refrescamos la imagen a la inicial
        }