Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
        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;
            }
        }