static void Main(string[] args)
 {
     int option;
     bool origen = false, destino = false;
     BAmplitud busqueda_amplitud = new BAmplitud();
     matrixState matrix_origin = new matrixState(),
                 matrix_goal   = new matrixState();
     do
     {
         option = menu();
         switch (option)
         {
             case 1:
                 // Ingresa el original
                 matrix_origin = new matrixState(0, 1, 2, 3, 4, 5, 6, 7, 8);
                 busqueda_amplitud.setOrigin(matrix_origin);
                 origen = true;
                 break;
             case 2:
                 // Ingresa meta
                 matrix_goal = new matrixState(1, 2, 3, 4, 5, 6, 7, 8, 0);
                 busqueda_amplitud.setDestiny(matrix_goal);
                 destino = true;
                 break;
             case 3:
                 // Mostrar origen y destino
                 if (origen)
                 {
                     Console.WriteLine("\n\tOrigen:");
                     matrix_origin.printMatrix();
                 }
                 if (destino)
                 {
                     Console.WriteLine("\n\tDestino:");
                     matrix_goal.printMatrix();
                 }
                 Console.ReadLine();
                 break;
             case 4:
                 // Solucion
                 if (origen && destino)
                 {
                     Console.WriteLine("\n\n\t   Busqueda por amplitud");
                     if (busqueda_amplitud.calculate_steps(35))
                     {
                         matrixState auxiliar = new matrixState();
                         matrix_origin.setValues(auxiliar);
                         busqueda_amplitud.goTroughtMovements(auxiliar, busqueda_amplitud.solucion(), true);
                         Console.WriteLine("\n\n\tCantidad optima de movimientos: " +
                             busqueda_amplitud.solucion().Count);
                         Console.WriteLine("\n");
                     }
                     else
                     {
                         Console.WriteLine("\n\n\t No se encontro solucion");
                     }
                 }
                 else
                 {
                     if (!origen)
                         Console.WriteLine("\n  No se ha establecido origen");
                     if (!destino)
                         Console.WriteLine("\n  No se ha establecido destino");
                 }
                 Console.ReadLine();
                 break;
             case 7:
                 //Salir
                 Console.WriteLine("\n\n\t ... Haz elegido salir ...");
                 Console.ReadLine();
                 break;
             default:
                 Console.WriteLine("Opcion invalida");
                 Console.ReadLine();
                 break;
         }
     } while (option != 7);
 }
        static void Main(string[] args)
        {
            int         option;
            bool        origen = false, destino = false;
            BAmplitud   busqueda_amplitud = new BAmplitud();
            matrixState matrix_origin     = new matrixState(),
                        matrix_goal       = new matrixState();

            do
            {
                option = menu();
                switch (option)
                {
                case 1:
                    // Ingresa el original
                    matrix_origin = new matrixState(0, 1, 2, 3, 4, 5, 6, 7, 8);
                    busqueda_amplitud.setOrigin(matrix_origin);
                    origen = true;
                    break;

                case 2:
                    // Ingresa meta
                    matrix_goal = new matrixState(1, 2, 3, 4, 5, 6, 7, 8, 0);
                    busqueda_amplitud.setDestiny(matrix_goal);
                    destino = true;
                    break;

                case 3:
                    // Mostrar origen y destino
                    if (origen)
                    {
                        Console.WriteLine("\n\tOrigen:");
                        matrix_origin.printMatrix();
                    }
                    if (destino)
                    {
                        Console.WriteLine("\n\tDestino:");
                        matrix_goal.printMatrix();
                    }
                    Console.ReadLine();
                    break;

                case 4:
                    // Solucion
                    if (origen && destino)
                    {
                        Console.WriteLine("\n\n\t   Busqueda por amplitud");
                        if (busqueda_amplitud.calculate_steps(35))
                        {
                            matrixState auxiliar = new matrixState();
                            matrix_origin.setValues(auxiliar);
                            busqueda_amplitud.goTroughtMovements(auxiliar, busqueda_amplitud.solucion(), true);
                            Console.WriteLine("\n\n\tCantidad optima de movimientos: " +
                                              busqueda_amplitud.solucion().Count);
                            Console.WriteLine("\n");
                        }
                        else
                        {
                            Console.WriteLine("\n\n\t No se encontro solucion");
                        }
                    }
                    else
                    {
                        if (!origen)
                        {
                            Console.WriteLine("\n  No se ha establecido origen");
                        }
                        if (!destino)
                        {
                            Console.WriteLine("\n  No se ha establecido destino");
                        }
                    }
                    Console.ReadLine();
                    break;

                case 7:
                    //Salir
                    Console.WriteLine("\n\n\t ... Haz elegido salir ...");
                    Console.ReadLine();
                    break;

                default:
                    Console.WriteLine("Opcion invalida");
                    Console.ReadLine();
                    break;
                }
            } while (option != 7);
        }