Example #1
0
        /// <summary>
        /// Guarda el tablero en un fichero xml
        /// </summary>
        /// <returns></returns>
        public Boolean GuardarTablero()
        {
            string        nombre;
            XmlTextWriter writer;

            Nodo <Casilla> aux = primero;

            if (aux == null)
            {
                return(false);
            }
            DirectoryInfo di = new DirectoryInfo(@Directory.GetCurrentDirectory().ToString() + "\\Tableros");

            if (di.GetFiles().Length > 0)
            {
                Console.WriteLine("\n Tableros existentes (si no quieres sobreescribir selecciona un nombre distinto\n a los existentes)\n");

                foreach (var fi in di.GetFiles("*.xml"))
                {
                    Console.WriteLine(fi.Name);
                }
            }
            Console.WriteLine("\n Introduce el nombre del fichero xml para guardar el tablero (con la extension):");
            nombre = Console.ReadLine();
            string ruta = @Directory.GetCurrentDirectory().ToString() + "\\Tableros\\" + nombre;

            writer = new XmlTextWriter(ruta, Encoding.UTF8);

            writer.Formatting = Formatting.Indented;
            writer.WriteStartDocument(false);

            writer.WriteStartElement(nombre);
            writer.WriteStartElement("Tablero");
            while (aux != null)
            {
                writer.WriteStartElement("Casilla");

                writer.WriteStartElement("Fila");
                writer.WriteString(aux.GetDato().Fila().ToString());
                writer.WriteEndElement();

                writer.WriteStartElement("Columna");
                writer.WriteString(aux.GetDato().Columna().ToString());
                writer.WriteEndElement();

                writer.WriteStartElement("Valor");
                writer.WriteString(aux.GetDato().Valor.ToString());
                writer.WriteEndElement();

                writer.WriteEndElement();
                aux = aux.GetSiguiente();
            }

            writer.WriteEndElement();
            writer.Flush();
            writer.WriteEndDocument();
            writer.Close();

            return(true);
        }
Example #2
0
        /// <summary>
        /// Borra todas las casillas incorrectas del tablero
        /// </summary>
        public void LimpiarErrores()
        {
            Nodo <Casilla> aux = primero;

            while (aux != null)
            {
                if (aux.GetDato().Valor < 0)
                {
                    aux.GetDato().Valor = 0;
                }

                aux = aux.GetSiguiente();
            }
        }
Example #3
0
        /// <summary>
        /// Borra todas las casillas no estaticas del tablero
        /// </summary>
        public void LimpiarTablero()
        {
            Nodo <Casilla> aux = primero;

            while (aux != null)
            {
                if (aux.GetDato().Estatico == false)
                {
                    aux.GetDato().Valor = 0;
                }

                aux = aux.GetSiguiente();
            }
        }
Example #4
0
        /// <summary>
        /// Comprueba si ext
        /// </summary>
        /// <param name="c"></param>
        /// <returns></returns>
        public Boolean Existe(Casilla c)
        {
            Nodo <Casilla> aux = primero;

            while (aux != null)
            {
                if (aux.GetDato().CasillasIguales(c) == true)
                {
                    return(true);
                }

                aux = aux.GetSiguiente();
            }
            return(false);
        }
Example #5
0
        /// <summary>
        /// Comprueba si el tablero esta lleno
        /// </summary>
        /// <returns></returns>
        public Boolean TableroLleno()
        {
            Nodo <Casilla> aux = primero;

            while (aux != null)
            {
                if (aux.GetDato().Valor == 0)
                {
                    return(false);
                }

                aux = aux.GetSiguiente();
            }

            return(true);
        }
Example #6
0
        /// <summary>
        /// Guarda el tablero en un fichero xml
        /// </summary>
        /// <returns></returns>
        public Boolean GuardarTablero(Stream file)
        {
            XmlTextWriter writer;

            Nodo <Casilla> aux = primero;

            if (aux == null)
            {
                return(false);
            }

            writer = new XmlTextWriter(file, Encoding.UTF8);

            writer.Formatting = Formatting.Indented;
            writer.WriteStartDocument(false);
            this.ComprobarTablero();
            this.LimpiarErrores();

            writer.WriteStartElement("Tablero");
            while (aux != null)
            {
                writer.WriteStartElement("Casilla");

                writer.WriteStartElement("Fila");
                writer.WriteString(aux.GetDato().Fila().ToString());
                writer.WriteEndElement();

                writer.WriteStartElement("Columna");
                writer.WriteString(aux.GetDato().Columna().ToString());
                writer.WriteEndElement();

                writer.WriteStartElement("Valor");
                writer.WriteString(aux.GetDato().Valor.ToString());
                writer.WriteEndElement();

                writer.WriteEndElement();
                aux = aux.GetSiguiente();
            }

            writer.WriteEndElement();
            writer.Flush();
            writer.WriteEndDocument();
            writer.Close();

            return(true);
        }
Example #7
0
        /// <summary>
        /// Devuelve una casilla con las coordenadas indicadas
        /// </summary>
        /// <param name="fila"></param>
        /// <param name="columna"></param>
        /// <returns></returns>
        public Casilla BuscarCasilla(int fila, int columna)
        {
            Casilla        miCas = new Casilla(fila, columna);
            Nodo <Casilla> aux   = primero;

            while (aux != null)
            {
                if (aux.GetDato().CasillasIguales(miCas) == true)
                {
                    miCas = aux.GetDato();
                    return(miCas);
                }

                aux = aux.GetSiguiente();
            }


            return(null);
        }
Example #8
0
        /// <summary>
        /// Comprueba si el tablero esta correctamente resuelto
        /// </summary>
        /// <returns></returns>
        public Boolean ComprobarTablero()
        {
            Nodo <Casilla> aux = primero;
            Boolean        fin = true;

            while (aux != null)
            {
                if (ComprobarCasillaVal(aux.GetDato().Fila(), aux.GetDato().Columna()) == false && aux.GetDato().Estatico == false && aux.GetDato().Valor != 0)
                {
                    if (aux.GetDato().Valor > 0)
                    {
                        aux.GetDato().Valor *= -1;
                    }
                    fin = false;
                }
                else if (ComprobarCasillaVal(aux.GetDato().Fila(), aux.GetDato().Columna()) == false && aux.GetDato().Valor != 0)
                {
                    fin = false;
                }

                aux = aux.GetSiguiente();
            }
            return(fin);
        }