Пример #1
0
        /// <summary>
        /// Guarda las opciones
        /// </summary>
        /// <param name="b">Bean de opciones</param>
        public void guardaOpciones(BeanOpciones b)
        {
            XmlDataDocument xml = getXML(rutaOpciones);

            xml.GetElementsByTagName("esGorda")[0].InnerText              = b.EsGorda ? "1" : "0";
            xml.GetElementsByTagName("sacaLengua")[0].InnerText           = b.SacaLengua ? "1" : "0";
            xml.GetElementsByTagName("frecuenciaSacaLengua")[0].InnerText = b.FrecuenciaSacaLengua.ToString();
            xml.GetElementsByTagName("indiceManzana")[0].InnerText        = b.IndiceManzana.ToString();

            xml.Save(rutaOpciones);
        }
Пример #2
0
        /// <summary>
        /// Devuelve las opciones guardadas
        /// </summary>
        /// <returns>Bean de opciones</returns>
        public BeanOpciones getOpciones()
        {
            XmlDataDocument xml     = getXML(rutaOpciones);
            BeanOpciones    retorna = new BeanOpciones();

            retorna.EsGorda              = xml.GetElementsByTagName("esGorda")[0].InnerText == "1";
            retorna.SacaLengua           = xml.GetElementsByTagName("sacaLengua")[0].InnerText == "1";
            retorna.FrecuenciaSacaLengua = int.Parse(xml.GetElementsByTagName("frecuenciaSacaLengua")[0].InnerText);
            retorna.IndiceManzana        = int.Parse(xml.GetElementsByTagName("indiceManzana")[0].InnerText);

            return(retorna);
        }
Пример #3
0
        /// <summary>
        /// Muestra la pantalla de opciones
        /// </summary>
        /// <param name="pos">Posición del marcador</param>
        /// <param name="serpiente">Representación gráfica de la serpiente</param>
        /// <param name="opciones">Información de opciones que se mostrarán</param>
        public void pantallaOpciones(int pos, char[,] serpiente, BeanOpciones opciones)
        {
            // Líneas del recuadro de la serpiente
            string[] serpienteDibujo = new string[11];
            serpienteDibujo[0]  = new string(' ', 14);
            serpienteDibujo[1]  = " ╔" + new String('═', 11) + '╗';
            serpienteDibujo[2]  = " ║" + new String(' ', 11) + '║';
            serpienteDibujo[8]  = " ║" + new String(' ', 11) + '║';
            serpienteDibujo[9]  = " ╚" + new String('═', 11) + '╝';
            serpienteDibujo[10] = serpienteDibujo[0];
            for (int i = 0; i < 5; i++)
            {
                char[] temp = new char[5];
                Buffer.BlockCopy(serpiente, i * 5 * 2, temp, 0, 5 * 2);
                serpienteDibujo[i + 3] = " ║   " + new String(temp) + "   ║";
            }

            // Líneas de las opciones
            string[] opcionesDibujo = new string[11];
            opcionesDibujo[0]  = "  " + (pos == 0 ? '>' : ' ') + " GROSOR      ";
            opcionesDibujo[0] += opciones.EsGorda ? " CULEBRILLA  [ANACONDA]" :
                                 "[CULEBRILLA]  ANACONDA ";

            opcionesDibujo[2]  = "  " + (pos == 1 ? '>' : ' ') + " LENGUA      ";
            opcionesDibujo[2] += opciones.SacaLengua ? "[BURLONA]  TÍMIDA " :
                                 " BURLONA  [TÍMIDA]";

            opcionesDibujo[4]  = "  " + (pos == 2 ? '>' : ' ') + " FRECUENCIA  ";
            opcionesDibujo[4] += opciones.SacaLengua ? $"<{opciones.FrecuenciaSacaLengua}%>" : "[LAS SERPIENTES TÍMIDAS NO SACAN LA LENGUA]";

            opcionesDibujo[6]  = "  " + (pos == 3 ? '>' : ' ') + " MANZANA     ";
            opcionesDibujo[6] += $"< {opciones.Manzana} > {comentarioManzana[opciones.IndiceManzana]}";

            opcionesDibujo[8]  = "  " + (pos == 4 ? '>' : ' ') + " GUARDAR     ";
            opcionesDibujo[10] = "  " + (pos == 5 ? '>' : ' ') + " SALIR       ";


            // Borrar consola y dibujar
            Console.Clear();

            foreach (string s in letrasIntro)
            {
                Console.WriteLine(s);
            }
            Console.WriteLine();
            for (int i = 0; i < serpienteDibujo.Length; i++)
            {
                Console.WriteLine(serpienteDibujo[i] + opcionesDibujo[i]);
            }
        }
Пример #4
0
 public GameManager()
 {
     ag           = new AdaptadorGrafico();
     modelo       = new Modelo();
     beanOpciones = modelo.getOpciones();
 }
Пример #5
0
        /// <summary>
        /// Controla la pantalla de opciones
        /// </summary>
        private void opciones()
        {
            // Marcador de opción y minitablero para serpiente de muestra
            int marcador = 0;

            char[,] tableroOpciones = new char[5, 5];

            // Se cargan las opciones en el bean para modificar sobre la marcha
            BeanOpciones opcionesTemp = new BeanOpciones();

            opcionesTemp.EsGorda              = beanOpciones.EsGorda;
            opcionesTemp.SacaLengua           = beanOpciones.SacaLengua;
            opcionesTemp.FrecuenciaSacaLengua = beanOpciones.FrecuenciaSacaLengua;
            opcionesTemp.Manzana              = arrayManzana[beanOpciones.IndiceManzana];
            opcionesTemp.IndiceManzana        = beanOpciones.IndiceManzana;

            // Se instancia la serpiente de muestra
            Sierpe serpienteDeLasOpciones = new Sierpe(5, 5, Direccion.Izquierda, (opcionesTemp.SacaLengua ? opcionesTemp.FrecuenciaSacaLengua : 0), opcionesTemp.EsGorda);

            serpienteDeLasOpciones.prepararParaOpciones();

            while (true)
            {
                // Para que la interfaz responda mejor, se actualiza la lectura de
                // tecla cada 30ms pero se mueve la serpiente cada 300
                for (int i = 0; i < 10; i++)
                {
                    Thread.Sleep(30);
                    if (Console.KeyAvailable)
                    {
                        ConsoleKey k = Console.ReadKey(true).Key;

                        switch (k)
                        {
                        case ConsoleKey.UpArrow:
                            if (marcador > 0)
                            {
                                marcador--;
                            }
                            break;

                        case ConsoleKey.DownArrow:
                            if (marcador < 5)
                            {
                                marcador++;
                            }
                            break;

                        case ConsoleKey.RightArrow:
                            if (marcador == 0 && !opcionesTemp.EsGorda)
                            {
                                opcionesTemp.EsGorda = true;
                            }
                            else if (marcador == 1 && opcionesTemp.SacaLengua)
                            {
                                opcionesTemp.SacaLengua = false;
                            }
                            else if (marcador == 2 && opcionesTemp.FrecuenciaSacaLengua < 100)
                            {
                                opcionesTemp.FrecuenciaSacaLengua += 5;
                            }
                            else if (marcador == 3 && opcionesTemp.IndiceManzana < arrayManzana.Length - 1)
                            {
                                opcionesTemp.IndiceManzana++;
                                opcionesTemp.Manzana = arrayManzana[opcionesTemp.IndiceManzana];
                            }
                            break;

                        case ConsoleKey.LeftArrow:
                            if (marcador == 0 && opcionesTemp.EsGorda)
                            {
                                opcionesTemp.EsGorda = false;
                            }
                            else if (marcador == 1 && !opcionesTemp.SacaLengua)
                            {
                                opcionesTemp.SacaLengua = true;
                            }
                            else if (marcador == 2 && opcionesTemp.FrecuenciaSacaLengua > 0)
                            {
                                opcionesTemp.FrecuenciaSacaLengua -= 5;
                            }
                            else if (marcador == 3 && opcionesTemp.IndiceManzana > 0)
                            {
                                opcionesTemp.IndiceManzana--;
                                opcionesTemp.Manzana = arrayManzana[opcionesTemp.IndiceManzana];
                            }
                            break;

                        case ConsoleKey.Enter:
                            if (marcador == 4)
                            {
                                // Se guardan las opciones en el modelo
                                modelo.guardaOpciones(opcionesTemp);
                                beanOpciones = modelo.getOpciones();
                                return;
                            }
                            else if (marcador == 5)
                            {
                                return;
                            }
                            break;

                        case ConsoleKey.Escape:
                            return;
                        }

                        // Se actualizan los parámetros de la serpiente
                        serpienteDeLasOpciones.cambiarParametrosParaOpciones(opcionesTemp.SacaLengua ? opcionesTemp.FrecuenciaSacaLengua : 0, opcionesTemp.EsGorda);


                        // Se limpia el array y se rellena
                        Array.Clear(tableroOpciones, 0, tableroOpciones.Length);
                        rellenarArrayConSerpiente(tableroOpciones, serpienteDeLasOpciones);

                        // Se dibuja en pantalla y se espera
                        ag.pantallaOpciones(marcador, tableroOpciones, opcionesTemp);
                    }
                }

                // Código copiado vilmente para evitar modularización innecesaria
                // (la única diferencia es el segundo comando)

                // Se actualizan los parámetros de la serpiente y se mueve
                serpienteDeLasOpciones.cambiarParametrosParaOpciones(opcionesTemp.SacaLengua ? opcionesTemp.FrecuenciaSacaLengua : 0, opcionesTemp.EsGorda);
                serpienteDeLasOpciones.moverParaOpciones();

                // Se limpia el array y se rellena
                Array.Clear(tableroOpciones, 0, tableroOpciones.Length);
                rellenarArrayConSerpiente(tableroOpciones, serpienteDeLasOpciones);

                // Se dibuja en pantalla y se espera
                ag.pantallaOpciones(marcador, tableroOpciones, opcionesTemp);
            }
        }