示例#1
0
    {   //Doge
        static void Main(string[] args)
        {
            bool ingame = true;

            Console.Beep();
            while (ingame == true)
            {
                Console.Title           = "Intérprete de tablas Fadic : Selector inicial";
                Console.ForegroundColor = ConsoleColor.Gray;
                string path = Interfaz.abrirArchivo(); //Abre un archivo desde consola. Entrega el path del archivo XML
                bool   modo = Interfaz.modo;           //true = juego, false = editor
                if (modo)
                {
                    Mapa tabla = new Mapa(path); //Abrir en modo juego
                    ingame = tabla.jugar();
                }
                else
                {
                    Escritor_imagen imagen = new Escritor_imagen(path, "new", 6, 6);
                    Mapa            tabla  = new Mapa(path, true); //Crear un mapa nuevo
                    tabla.editar();
                    Console.Clear();
                }
            }
        }
示例#2
0
        public static void imprimirTabla(char[,] tabla, bool movmode, Escritor_imagen imagen)       //Este métodoimprime en el bmp, y en la consola, a la vez
        {
            if (Interfaz.modo == true)
            {
                Console.Clear();
            }
            Console.CursorSize      = 1;
            Console.BackgroundColor = ConsoleColor.White;
            for (int j = 0; j < tabla.GetLength(1); j++)
            {
                for (int i = 0; i < tabla.GetLength(0); i++)
                {
                    imagen.dibujar_cuadro(i, j, tabla[i, j], tabla.GetLength(0), tabla.GetLength(1));
                }
            }
            for (int j = 0; j < tabla.GetLength(1); j++)
            {
                for (int i = 0; i < tabla.GetLength(0); i++)
                {
                    switch (tabla[i, j])
                    {
                    case 'W':
                        Console.ForegroundColor = ConsoleColor.Gray;
                        Console.Write('█');
                        break;

                    case 'R':
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.Write('█');
                        break;

                    case 'r':
                        Console.ForegroundColor = ConsoleColor.DarkRed;
                        Console.Write('█');
                        break;

                    case 'G':
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.Write('█');
                        break;

                    case 'g':
                        Console.ForegroundColor = ConsoleColor.DarkGreen;
                        Console.Write('█');
                        break;

                    case 'Y':
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        Console.Write('█');
                        break;

                    case 'y':
                        Console.ForegroundColor = ConsoleColor.DarkYellow;
                        Console.Write('█');
                        break;

                    case 'P':
                        Console.ForegroundColor = ConsoleColor.Magenta;
                        Console.Write('█');
                        break;

                    case 'p':
                        Console.ForegroundColor = ConsoleColor.DarkMagenta;
                        Console.Write('█');
                        break;

                    case 'B':
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.Write('█');
                        break;

                    case 'b':
                        Console.ForegroundColor = ConsoleColor.DarkBlue;
                        Console.Write('█');
                        break;

                    case 'O':
                        Console.ForegroundColor = ConsoleColor.Cyan;
                        Console.Write('█');
                        break;

                    case 'o':
                        Console.ForegroundColor = ConsoleColor.DarkCyan;
                        Console.Write('█');
                        break;

                    default:
                        Console.Write(' ');
                        break;
                    }
                    Console.ForegroundColor = ConsoleColor.White;
                }
                Console.WriteLine();
            }
            Console.BackgroundColor = ConsoleColor.Black;
            if (Interfaz.modo == true)
            {
                Console.WriteLine();
                Console.Write("Marcando ruta : ");
                Console.Write(movmode);             //Header
                Console.WriteLine();
            }
            else if (Interfaz.modo == false)
            {
                Console.WriteLine();
            }

            Console.CursorSize = 100;
        }
示例#3
0
        public void editar()
        {
            Escritor_imagen imagen = new Escritor_imagen(path, nombre, lx, ly);

            Console.WriteLine("Iniciando editor");
            bool finedit = false;       //Finalizó editor

            Mapasig = new char[lx, ly];
            for (int j = 0; j < ly; j++)
            {
                for (int i = 0; i < lx; i++)
                {
                    Mapasig[i, j] = ' ';
                }
            }
            int    posx = 0;
            int    posy = 3;
            string modo = "Void";

            while (finedit == false)
            {
                Console.Clear();
                Console.BackgroundColor = ConsoleColor.Black;
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.Title           = ("Nombre = " + nombre + ".xml | " + "Modo cursor : " + modo);
                Console.WriteLine("Nombre = " + nombre + ".xml | Largo = " + lx + " - Ancho = " + ly);
                Console.Write("Modo cursor : |");
                //Selector de color para el cuadrito pequeño
                imprimirCuadritoColor(modo);
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.WriteLine("| " + modo);
                Console.WriteLine("[ ] Abrir paleta visual de colores");
                Interfaz.imprimirTabla(Mapasig, false, imagen);
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.SetCursorPosition(posx, posy);
                Console.CursorSize = 100;
                ConsoleKeyInfo tecla = Console.ReadKey();
                if (tecla.Key == ConsoleKey.UpArrow && posy >= 3)
                {
                    if (posy == 3)
                    {
                        posy--;
                        posx = 1;
                    }
                    else
                    {
                        posy--;
                    }
                }
                else if (tecla.Key == ConsoleKey.DownArrow && posy < ly + 3 - 1)
                {
                    posy++;
                }
                else if (tecla.Key == ConsoleKey.RightArrow && posx < lx)
                {
                    posx++;
                }
                else if (tecla.Key == ConsoleKey.LeftArrow && posx > 0)
                {
                    posx--;
                }
                else if (tecla.Key == ConsoleKey.Spacebar)
                {
                    if (posx == 1 && posy == 2)     //Vamos a la paleta de colores
                    {
                        bool s2done = false;
                        posy = 2;
                        while (s2done == false)
                        {
                            Console.Clear();
                            Console.BackgroundColor = ConsoleColor.Black;
                            Console.ForegroundColor = ConsoleColor.Gray;
                            Console.WriteLine("Seleccione un elemento para posicionar en su mapa");
                            Console.WriteLine();
                            #region
                            Console.Write("[ ] ");
                            imprimirCuadritoColor("Void");
                            Console.WriteLine(" Void");

                            Console.Write("[ ] ");
                            imprimirCuadritoColor("Wall");
                            Console.WriteLine(" Wall");

                            Console.Write("[ ] ");
                            imprimirCuadritoColor("Purple");
                            Console.WriteLine(" Purple");

                            Console.Write("[ ] ");
                            imprimirCuadritoColor("Blue");
                            Console.WriteLine(" Blue");

                            Console.Write("[ ] ");
                            imprimirCuadritoColor("Red");
                            Console.WriteLine(" Red");

                            Console.Write("[ ] ");
                            imprimirCuadritoColor("Yellow");
                            Console.WriteLine(" Yellow");

                            Console.Write("[ ] ");
                            imprimirCuadritoColor("Orange");
                            Console.WriteLine(" Orange (Cyan)");

                            Console.Write("[ ] ");
                            imprimirCuadritoColor("Green");
                            Console.WriteLine(" Green");
                            #endregion
                            Console.SetCursorPosition(1, posy);
                            Console.CursorSize = 100;
                            ConsoleKeyInfo tecla2 = Console.ReadKey();
                            if (tecla2.Key == ConsoleKey.UpArrow && posy > 2)
                            {
                                posy--;
                            }
                            else if (tecla2.Key == ConsoleKey.DownArrow && posy < 9)
                            {
                                posy++;
                            }
                            else if (tecla2.Key == ConsoleKey.Spacebar)
                            {
                                switch (posy - 2)
                                {
                                case 0:
                                    modo = "Void";
                                    break;

                                case 1:
                                    modo = "Wall";
                                    break;

                                case 2:
                                    modo = "Purple";
                                    break;

                                case 3:
                                    modo = "Blue";
                                    break;

                                case 4:
                                    modo = "Red";
                                    break;

                                case 5:
                                    modo = "Yellow";
                                    break;

                                case 6:
                                    modo = "Orange";
                                    break;

                                case 7:
                                    modo = "Green";
                                    break;
                                }
                                s2done = true;
                            }
                        }
                    }
                    else if (posx < lx && posy < ly + 3)
                    {
                        int relx = posx;
                        int rely = posy - 3;
                        if (modo == "Wall" || modo == "Void")            //Poner una muralla  o un espacio es muy simple, solo hemos de ponerla
                        {
                            switch (modo)
                            {
                            case "Wall":
                                Mapasig[relx, rely] = 'W';
                                break;

                            case "Void":
                                Mapasig[relx, rely] = ' ';
                                break;
                            }
                        }
                        if (modo != "Wall" && modo != "Void")           //Algun nodo de color...
                        {
                            bool otronododone = false;
                            int  porx         = posx;
                            int  pory         = posy;
                            switch (modo)
                            {
                            case "Purple":
                                Mapasig[relx, rely] = 'P';
                                break;

                            case "Blue":
                                Mapasig[relx, rely] = 'B';
                                break;

                            case "Red":
                                Mapasig[relx, rely] = 'R';
                                break;

                            case "Yellow":
                                Mapasig[relx, rely] = 'Y';
                                break;

                            case "Orange":
                                Mapasig[relx, rely] = 'O';
                                break;

                            case "Green":
                                Mapasig[relx, rely] = 'G';
                                break;
                            }
                            while (otronododone == false)           //Modo seleccion del otro par: asi siempre tenemos un par de nodos
                            {
                                Console.Clear();
                                Console.BackgroundColor = ConsoleColor.Black;
                                Console.ForegroundColor = ConsoleColor.Gray;
                                Console.Title           = ("Nombre = " + nombre + ".xml | " + "Modo cursor : " + modo);
                                Console.WriteLine("Nombre = " + nombre + ".xml | Largo = " + lx + " - Ancho = " + ly);
                                Console.Write("Modo cursor : |");
                                //Selector de color para el cuadrito pequeño
                                imprimirCuadritoColor(modo);
                                Console.ForegroundColor = ConsoleColor.Gray;
                                Console.WriteLine("| " + modo);
                                Console.WriteLine("Seleccione otro lugar para poner el otro nodo del mismo color"); // modos disponibles: pintando x color, eliminando, seleccionando
                                Interfaz.imprimirTabla(Mapasig, false, imagen);
                                Console.WriteLine("NOTA: No puede atravesar murallas; si puede sobreescribir nodos ya existentes");
                                Console.SetCursorPosition(posx, posy);
                                Console.CursorSize = 100;
                                ConsoleKeyInfo tecla2 = Console.ReadKey();
                                if (tecla2.Key == ConsoleKey.UpArrow && posy > 3)
                                {
                                    if (Mapasig[posx, posy - 3 - 1] != 'W')
                                    {
                                        posy--;
                                    }
                                }
                                else if (tecla2.Key == ConsoleKey.DownArrow && posy < ly + 2)
                                {
                                    if (Mapasig[posx, posy - 3 + 1] != 'W')
                                    {
                                        posy++;
                                    }
                                }
                                else if (tecla2.Key == ConsoleKey.RightArrow && posx < lx - 1)
                                {
                                    if (Mapasig[posx + 1, posy - 3] != 'W')
                                    {
                                        posx++;
                                    }
                                }
                                else if (tecla2.Key == ConsoleKey.LeftArrow && posx > 0)
                                {
                                    if (Mapasig[posx - 1, posy - 3] != 'W')
                                    {
                                        posx--;
                                    }
                                }
                                else if (tecla2.Key == ConsoleKey.Spacebar && !(posx == porx && pory == posy))
                                {
                                    relx = posx;
                                    rely = posy - 3;
                                    switch (modo)
                                    {
                                    case "Purple":
                                        Mapasig[relx, rely] = 'P';
                                        break;

                                    case "Blue":
                                        Mapasig[relx, rely] = 'B';
                                        break;

                                    case "Red":
                                        Mapasig[relx, rely] = 'R';
                                        break;

                                    case "Yellow":
                                        Mapasig[relx, rely] = 'Y';
                                        break;

                                    case "Orange":
                                        Mapasig[relx, rely] = 'O';
                                        break;

                                    case "Green":
                                        Mapasig[relx, rely] = 'G';
                                        break;
                                    }
                                    otronododone = true;
                                }
                            }
                        }
                    }
                }
                switch (tecla.Key)  //Es posible seleccionar mediante la paleta en pantalla, o con las teclas asignadas a cada pincel
                {
                case ConsoleKey.P:
                    modo = "Purple";
                    break;

                case ConsoleKey.B:
                    modo = "Blue";
                    break;

                case ConsoleKey.R:
                    modo = "Red";
                    break;

                case ConsoleKey.Y:
                    modo = "Yellow";
                    break;

                case ConsoleKey.O:
                    modo = "Orange";
                    break;

                case ConsoleKey.G:
                    modo = "Green";
                    break;

                case ConsoleKey.W:
                    modo = "Wall";
                    break;

                case ConsoleKey.V:
                    modo = "Void";
                    break;

                case ConsoleKey.Escape:                 //Comando de salida
                    finedit = true;
                    break;
                }
            }
            Console.WriteLine("Escribiendo archivo XML");
            this.ImprimirXML();
            Console.WriteLine("Edición finalizada. Pulse cualquier tecla para continuar");
        }
示例#4
0
        public Mapa(string path)                //Inicializado como objeto abierto
        {
            XmlDocument xDoc = new XmlDocument();

            xDoc.Load(path);                //Load path
            Console.WriteLine("Archivo bien cargado");
            XmlNodeList nnstage = xDoc.SelectNodes("//stage");
            XmlNode     nstage  = nnstage[0];
            string      nombre  = path.Split('/').Last();

            lx     = Convert.ToInt32(nstage.Attributes["width"].Value);  //obten
            ly     = Convert.ToInt32(nstage.Attributes["height"].Value);
            imagen = new Escritor_imagen(path.Substring(0, path.Length - nombre.Length), nombre.Substring(0, nombre.Length - 4), lx, ly);
            XmlNodeList dat = xDoc.SelectNodes("//stage/nodeList/node");   //Cargar los nodos

            Mapasig = new char[lx, ly];
            for (int j = 0; j < ly; j++)
            {
                for (int i = 0; i < lx; i++)
                {
                    Mapasig[i, j] = ' ';
                }
            }
            int[] nnodos = { 0, 0, 0, 0, 0, 0 };
            for (int i = 0; i < dat.Count; i++)
            {
                string contenido = dat[i].Attributes["content"].Value;            //obtengo el tipo de nodo
                int    x         = Convert.ToInt32(dat[i].Attributes["i"].Value); //y su posicion
                int    y         = Convert.ToInt32(dat[i].Attributes["j"].Value);
                if (contenido == "wall")
                {
                    Mapasig[x, y] = 'W';
                }
                else if (contenido == "blue")
                {
                    Mapasig[x, y] = 'B';
                    nnodos[0]++;
                }
                else if (contenido == "red")
                {
                    Mapasig[x, y] = 'R';
                    nnodos[1]++;
                }
                else if (contenido == "purple")
                {
                    Mapasig[x, y] = 'P';
                    nnodos[2]++;
                }
                else if (contenido == "yellow")
                {
                    Mapasig[x, y] = 'Y';
                    nnodos[3]++;
                }
                else if (contenido == "orange")
                {
                    Mapasig[x, y] = 'O';
                    nnodos[4]++;
                }
                else if (contenido == "green")
                {
                    Mapasig[x, y] = 'G';
                    nnodos[5]++;
                }
            }
            foreach (int numno in nnodos)
            {
                if (numno == 2)
                {
                    nconex += 1;              //Formula para las conexiones posibles de los nodos....
                }
                if (numno >= 3)
                {
                    nconex += numno - 1;
                }
            }
            Interfaz.imprimirTabla(Mapasig, false, imagen);
        }