示例#1
0
 public void Solucion()
 {
     listaSoluciones = new ListaVectores(null);
     armarMatriz(MatrizPocisiones);
     iN = 0;
     SolucionR(0, 0);
 }
示例#2
0
 public void Restar(ListaVectores lista)
 {
     foreach (Vector v in lista)
     {
         this.sacarVectorXValores(v);
     }
 }
示例#3
0
 public void MostrarListaVectoresEnGrilla(ListaVectores LV)
 {
     foreach (Vector v in LV)
     {
         this.MostrarVectorEnGrilla(v);
     }
 }
示例#4
0
        public ListaVectores FactorialValores(Vector V)
        {
            ListaVectores L = new ListaVectores(this);

            if (V.Count == 2)
            {
                L.Add(V.Clon());

                Vector v2 = V.Clon();
                IntercambioValores(v2[0], v2[1]);
                L.Add(v2);
            }
            else
            {
                for (int i = 0; i < V.Count; i++)
                {
                    Vector V2 = V.Clon();
                    V2.RemoveByIndex(i);
                    ListaVectores L2 = FactorialValores(V2);
                    for (int j = 0; j < L2.Count; j++)
                    {
                        L2[j].Insert(0, V[i]);
                        L.Add(L2[j]);
                    }
                }
            }
            return(L);
        }
示例#5
0
        public GrillaWN(Grid G, Color pColorCelda) : base(G, pColorCelda)
        {
            MisVectores = new ListaVectores(this);
            WN_Vectores = new ListaVectores(this);

            this.Tile_Click      += GrillaWN_Tile_Click;
            this.Tile_ClickLento += GrillaWN_Tile_ClickLento;
            this.Tile_MoveFrom   += GrillaWN_Tile_MoveFrom;
            this.Tile_MoveTo     += GrillaWN_Tile_MoveTo;
            this.Tile_DobleClick += GrillaWN_Tile_DobleClick;
        }
示例#6
0
        public ListaVectores VectoresEnCR(int Col, int Row)
        {//Devuelve una lista con los vectores de la lista this, que pasan por Col, Row
            ListaVectores R = new ListaVectores(Grilla);

            foreach (Vector V in this)
            {
                if (V.BuscarTile(Col, Row) >= 0)
                {
                    R.Add(V);
                }
            }

            return(R);
        }
示例#7
0
        private ListaVectores ConvertirLista(ListaVectores L)
        {/* Sisi, perdimos la elegancia....*/
            ListaVectores LR = new ListaVectores(this);

            foreach (Vector V in L)
            {
                Vector VR = new Vector(this);
                foreach (Tiles T in V)
                {
                    TilesWN TW = new TilesWN(this, T.Col, T.Row, T.Valor);
                    VR.Add(TW);
                }
                LR.Add(VR);
            }

            return(LR);
        }
示例#8
0
 private void GrillaWN_Tile_ClickLento(object sender, TileEventArgs e)
 {
     if (vectorSeleccionado != null)
     {
         if (tileSeleccionado != null)
         {
             //Vector V = this.MisVectores.BuscarVectorByCR(tileSeleccionado.Col, tileSeleccionado.Row);
             ListaVectores L = this.MisVectores.VectoresEnCR(tileSeleccionado.Col, tileSeleccionado.Row);
             L.MoverAlFondo(vectorSeleccionado);
             vectorSeleccionado = L[0];
             this.MisVectores.MoverAlFrente(vectorSeleccionado);
             vectorSeleccionado.MostrarEnColor(Color.DarkGoldenrod);
             int Indice = vectorSeleccionado.BuscarTile(tileSeleccionado.Col, tileSeleccionado.Row);
             tileSeleccionado = vectorSeleccionado[Indice];
         }
     }
 }
示例#9
0
        public void RecuperarDeArchivos()
        {
            var documents = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
            var filenameVectoresNuevos   = Path.Combine(documents, "VectoresNuevos.txt");
            var filenameVectoresEnemigos = Path.Combine(documents, "VectoresEnemigos.txt");
            var filenameVectoresSoldados = Path.Combine(documents, "VectoresSoldados.txt");

            string jsonVectoresSoldados = File.ReadAllText(filenameVectoresSoldados);

            MisVectores = JsonConvert.DeserializeObject <ListaVectores>(jsonVectoresSoldados);
            MisVectores.SetGrilla(this);
            MisVectores = ConvertirLista(MisVectores);
            MisVectores.RenumerarVectores();

            string jsonVectoresEnemigos = File.ReadAllText(filenameVectoresEnemigos);

            WN_Vectores = JsonConvert.DeserializeObject <ListaVectores>(jsonVectoresEnemigos);
            WN_Vectores.SetGrilla(this);
            WN_Vectores = ConvertirLista(WN_Vectores);
            WN_Vectores.RenumerarVectores();

            string jsonVectoresNuevos = File.ReadAllText(filenameVectoresNuevos);

            VectoresNuevos = JsonConvert.DeserializeObject <ListaVectores>(jsonVectoresNuevos);
            VectoresNuevos.SetGrilla(this);
            VectoresNuevos = ConvertirLista(VectoresNuevos);
            VectoresNuevos.RenumerarVectores();

            ValorTotalVectoresNuevos = VectoresNuevos.ValorTotal();

            VectoresNuevos.Restar(MisVectores);

            PuntosSoldados = VectoresNuevos.ValorTotal() + MisVectores.ValorTotal();
            PuntosEnemigos = WN_Vectores.ValorTotal();

            RecuperarMejorRazon();
        }
示例#10
0
        public void NuevoJuego(int Cant_Soldados, int Tam_Soldado, int Cant_Enemigos, int Tam_Enemigo)
        {
            tileSeleccionado   = null;
            vectorSeleccionado = null;
            vectorNuevo        = null;

            MisVectores.Clear();
            WN_Vectores.Clear();

            RandomizeFHA.Reset();

            //Enemigos
            WN_Vectores.Clear();
            WN_Vectores.GenerarVectores(Cant_Enemigos, Tam_Enemigo, this, false);

            foreach (Vector v in WN_Vectores)
            {
                foreach (Tiles T in v)
                {
                    T.Valor = T.Valor * -1;
                }
            }

            LimpiarGrilla();

            Mostrar();

            //Soldados
            VectoresNuevos = new ListaVectores(this);
            VectoresNuevos.GenerarVectores(Cant_Soldados, Tam_Soldado, this, true);

            PuntosSoldados = VectoresNuevos.ValorTotal();
            PuntosEnemigos = WN_Vectores.ValorTotal();

            RecuperarMejorRazon();
        }
示例#11
0
        public Boolean SolucionR(int Index_Azul, int Nivel)
        {
            Boolean Retorno = false;

            if (TapeTodo())
            {
                Retorno = true;
            }
            else
            if (Index_Azul < VectoresNuevos.Count)
            {
                Vector v_Azul = this.VectoresNuevos[Index_Azul];

                if (Nivel == 5)
                {
                    Nivel = 5;
                }

                foreach (Vector v_Rojo in this.WN_Vectores)
                {
                    if (Retorno)
                    {
                        break;
                    }

                    foreach (Tiles T_Rojo in v_Rojo)            //Recorro todos los Tiles Rojos
                    {
                        if (Retorno)
                        {
                            break;
                        }
                        ListaVectores listaFactorial = FactorialValores(v_Azul);
                        foreach (Vector v_Factorial in listaFactorial)
                        {
                            if (Retorno)
                            {
                                break;
                            }

                            for (int i = 63; i >= 0; i--)
                            {
                                iN++;
                                v_Factorial[0].Col = T_Rojo.Col;
                                v_Factorial[0].Row = T_Rojo.Row;
                                for (int j = 1; j <= 3; j++)
                                {
                                    v_Factorial[j].Col = v_Factorial[j - 1].Col + DicColRow[MatrizPocisiones[i, j], 0];
                                    v_Factorial[j].Row = v_Factorial[j - 1].Row + DicColRow[MatrizPocisiones[i, j], 1];
                                }
                                Vector Solucion = v_Factorial.Clon();
                                listaSoluciones.Add(Solucion);

                                if (SolucionR(Index_Azul + 1, Nivel + 1))
                                {
                                    Retorno = true;
                                    break;
                                }
                                else
                                {
                                    listaSoluciones.RemoveAt(listaSoluciones.Count - 1); //saco el ultimo
                                }
                            }
                        }
                    }
                }
            }
            ;

            return(Retorno);
        }