public void Solucion() { listaSoluciones = new ListaVectores(null); armarMatriz(MatrizPocisiones); iN = 0; SolucionR(0, 0); }
public void Restar(ListaVectores lista) { foreach (Vector v in lista) { this.sacarVectorXValores(v); } }
public void MostrarListaVectoresEnGrilla(ListaVectores LV) { foreach (Vector v in LV) { this.MostrarVectorEnGrilla(v); } }
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); }
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; }
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); }
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); }
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]; } } }
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(); }
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(); }
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); }