private void imprimirSolucion() { if (coloresElejidos == null) { sol = ApartadoDVentana.SolucionColorear( new Tuple <ApartadoDVentana.Mapa, List <ColorProvincia> >(ApartadoDVentana.andalucia, ApartadoDVentana.coloresDisponibles)); } else { sol = ApartadoDVentana.SolucionColorear( new Tuple <ApartadoDVentana.Mapa, List <ColorProvincia> >(ApartadoDVentana.andalucia, coloresElejidos)); } // Pintar la nueva provincia en mapa if (sol == null || sol.Count < ApartadoDVentana.provs.Count) { Console.WriteLine("No hay colores suficientes para encontrar una soluciĆ³n"); } else { FuncionIntroducirProvincias(sol); } }
private void button_Click(object sender, EventArgs e) { Control ctrl = ((Control)sender); if (primerClick == false) // Primera coordenada seleccionada { primerClick = true; ctrl.BackColor = Color.Aqua; pos1 = this.tableLayoutPanel1.GetCellPosition((Control)sender); } else // Segunda coordenada seleccionada { pos2 = this.tableLayoutPanel1.GetCellPosition((Control)sender); if (pos2.Row < pos1.Row || pos2.Column < pos1.Column) { this.tableLayoutPanel1.GetControlFromPosition(pos1.Column, pos1.Row).BackColor = Color.White; } else { ctrl.BackColor = Color.Aqua; ApartadoDVentana.Provincia prov = new ApartadoDVentana.Provincia(pos1.Column, pos1.Row, pos2.Column + 1, pos2.Row + 1, cont.ToString()); cont++; // Meter provincia en la lista ApartadoDVentana.provs.Add(prov); // Comprobar solapados if (ApartadoDVentana.CuadradosSolapados(ApartadoDVentana.provs)) { ApartadoDVentana.provs.RemoveAt(ApartadoDVentana.provs.Count - 1); Console.WriteLine("ERROR: La provincia \"{0}\" NO ha sido introducida", prov.Nombre); this.tableLayoutPanel1.GetControlFromPosition(pos1.Column, pos1.Row).BackColor = Color.White; this.tableLayoutPanel1.GetControlFromPosition(pos2.Column, pos2.Row).BackColor = Color.White; } else { // Encontrar fronteras ApartadoDVentana.fronteras = ApartadoDVentana.EncontrarFronteras(ApartadoDVentana.provs); // Creamos Mapa try { ApartadoDVentana.andalucia = new ApartadoDVentana.Mapa(ApartadoDVentana.provs, ApartadoDVentana.fronteras); } catch (ApartadoDVentana.CuadradosSolapadosException error) { Console.WriteLine("CuadradosSolapadosException: " + error.Message); } // Encontrar solucion imprimirSolucion(); } } primerClick = false; } }