Exemplo n.º 1
0
        private Matriz encontrarMatriz(String nombre)
        {
            Matriz m = matriz;

            if (nombre.ToLower().Contains("submarino"))
            {
                m = m.Anterior;
            }
            else if (nombre.ToLower().Contains("caza") || nombre.ToLower().Contains("bombardero") || nombre.ToLower().Contains("helicoptero"))
            {
                m = m.Siguiente;
            }
            else if (m.Siguiente != null && nombre.ToLower().Contains("neosatelite"))
            {
                m = m.Siguiente.Siguiente;
            }
            return(m);
        }
Exemplo n.º 2
0
        private Matriz generarNuevaMatriz(String nick)
        {
            Matriz m = new Matriz(1);

            if (matriz.Anterior != null)
            {
                Encabezado fila = matriz.Anterior.Filas.Cabeza;
                while (fila != null)
                {
                    NodoMatriz n = fila.Acceso;
                    while (n != null)
                    {
                        if (n.Nave.Nickname.Equals(nick))
                        {
                            m.Insertar(n.Fila, n.Columna, n.Nave.Nombre, nick);
                        }
                        n = n.Derecha;
                    }
                    fila = fila.Siguiente;
                }
            }

            return(m);
        }
Exemplo n.º 3
0
 public void reiniciarMatriz()
 {
     matriz        = new Matriz(1);
     partidaActiva = false;
 }
Exemplo n.º 4
0
        public String atacarUnidad(String nombre, int columna, int fila, String nickname, int nivel)
        {
            String resultado = "";
            String receptor;

            if (nickname.Equals(jugador1))
            {
                receptor = jugador2;
            }
            else
            {
                receptor = jugador1;
            }
            Matriz     m        = encontrarMatriz(nombre);
            NodoMatriz atacante = null;

            if (m != null)
            {
                atacante = m.getNodo(nombre);
            }


            m = matriz;
            if (nivel == 0)
            {
                m = m.Anterior;
            }
            else if (nivel == 2)
            {
                m = m.Siguiente;
            }
            else if (nivel == 3 && m.Siguiente != null)
            {
                m = m.Siguiente.Siguiente;
            }

            NodoMatriz victima = null;

            if (m != null)
            {
                victima = m.getNodo(fila, columna);
            }
            if (atacante != null && victima != null && String.Compare(atacante.Nave.Nickname, victima.Nave.Nickname) != 0 && String.Compare(atacante.Nave.Nickname, nickname) == 0 && atacante.Nave.Atacar == 0)
            {
                int rango = Math.Abs(atacante.Fila - fila) + Math.Abs(atacante.Columna - columna);
                if (rango <= atacante.Nave.Alcance)
                {
                    if (nombre.ToLower().Contains("fragata"))
                    {
                        if (rango >= 2 && rango <= 6)
                        {
                            atacante.Nave.Atacar = 1;
                            victima.Nave.Vida    = victima.Nave.Vida - atacante.Nave.Daño;
                            if (victima.Nave.Vida <= 0)
                            {
                                m.Eliminar(victima.Nave.Nombre);
                                resultado = victima.Nave.Nombre;
                                historial.Insertar(columna, fila, nombre, 0, victima.Nave.Nombre, nickname, receptor, DateTime.Today.ToString(), tiempo2, 0);
                                consola = consola + nickname + ": ataco a la unidad " + victima.Nave.Nombre + ". \n";
                            }
                            else
                            {
                                resultado = "1," + victima.Nave.Nombre;
                                consola   = consola + nickname + ": derrivo a la unidad " + victima.Nave.Nombre + ". \n";
                                historial.Insertar(columna, fila, nombre, 1, victima.Nave.Nombre, nickname, receptor, DateTime.Today.ToString(), tiempo2, 0);
                            }
                        }
                        else
                        {
                            resultado = "error";
                        }
                    }
                    else if (nombre.ToLower().Contains("bombardero") || nombre.ToLower().Contains("neosatelite"))
                    {
                        if (atacante.Abajo == victima)
                        {
                            atacante.Nave.Atacar = 1;
                            victima.Nave.Vida    = victima.Nave.Vida - atacante.Nave.Daño;
                            if (victima.Nave.Vida <= 0)
                            {
                                m.Eliminar(victima.Nave.Nombre);
                                resultado = victima.Nave.Nombre;
                                historial.Insertar(columna, fila, nombre, 0, victima.Nave.Nombre, nickname, receptor, DateTime.Today.ToString(), tiempo2, 0);
                            }
                            else
                            {
                                resultado = "1," + victima.Nave.Nombre;
                                historial.Insertar(columna, fila, nombre, 1, victima.Nave.Nombre, nickname, receptor, DateTime.Today.ToString(), tiempo2, 0);
                            }
                        }
                        else
                        {
                            resultado = "error";
                        }
                    }
                    else
                    {
                        atacante.Nave.Atacar = 1;
                        victima.Nave.Vida    = victima.Nave.Vida - atacante.Nave.Daño;
                        if (victima.Nave.Vida <= 0)
                        {
                            m.Eliminar(victima.Nave.Nombre);
                            resultado = victima.Nave.Nombre;
                            historial.Insertar(columna, fila, nombre, 0, victima.Nave.Nombre, nickname, receptor, DateTime.Today.ToString(), tiempo2, 0);
                        }
                        else
                        {
                            resultado = "1," + victima.Nave.Nombre;
                            historial.Insertar(columna, fila, nombre, 1, victima.Nave.Nombre, nickname, receptor, DateTime.Today.ToString(), tiempo2, 0);
                        }
                    }
                }
                else
                {
                    resultado = "error";
                }
            }
            else
            {
                resultado = "error";
            }

            return(resultado);
        }
Exemplo n.º 5
0
        public Byte[] MatrizGrafo(int nivel, String nick)
        {
            Matriz m = matriz;

            if (m.Nivel != nivel)
            {
                if (nivel == 0)
                {
                    if (nick.Equals(""))
                    {
                        m = m.Anterior;
                    }
                    else
                    {
                        m = generarNuevaMatriz(nick).Anterior;
                    }
                }
                else if (nivel >= 2)
                {
                    m = m.Siguiente;
                    while (m != null)
                    {
                        if (m.Nivel == nivel)
                        {
                            break;
                        }
                        m = m.Siguiente;
                    }
                }
            }

            if (m != null)
            {
                dot = "digraph Matriz{\n rankdir=UD;\n node[shape=box];\n {\n rank=min;\n m[label=\"Matriz " + m.Nivel.ToString() + "\"];\n";
                Encabezado column = m.Columnas.Cabeza;
                while (column != null)
                {
                    dot    = dot + "Y" + column.Id.ToString() + "[label=\"" + Convert.ToChar(column.Id).ToString() + "\",rankdir=LR];\n";
                    column = column.Siguiente;
                }

                dot = dot + "}\n";

                Encabezado f = m.Filas.Cabeza;
                NodoMatriz n;
                while (f != null)
                {
                    dot = dot + "{\n rank=same;\n X" + f.Id.ToString() + "[label=\"" + f.Id.ToString() + "\"]\n";
                    n   = f.Acceso;
                    while (n != null)
                    {
                        dot = dot + "F" + n.Fila.ToString() + "_C" + Convert.ToChar(n.Columna).ToString() + "[label=\"Nombre: " + n.Nave.Nombre + "--Vida: " + n.Nave.Vida.ToString() + "\"]\n";
                        n   = n.Derecha;
                    }
                    dot = dot + "}\n";
                    f   = f.Siguiente;
                }

                //ENLACES COLUMNAS
                column = m.Columnas.Cabeza;

                if (column != null)
                {
                    dot = dot + "m->Y" + column.Id.ToString() + ";\n";
                    while (column.Siguiente != null)
                    {
                        dot    = dot + "Y" + column.Id.ToString() + "->Y" + column.Siguiente.Id.ToString() + ";\n";
                        dot    = dot + "Y" + column.Siguiente.Id.ToString() + "->Y" + column.Id.ToString() + ";\n";
                        column = column.Siguiente;
                    }

                    column = m.Columnas.Cabeza;
                    while (column != null)
                    {
                        dot    = dot + "Y" + column.Id.ToString() + "->F" + column.Acceso.Fila.ToString() + "_C" + Convert.ToChar(column.Id).ToString() + ";\n";
                        column = column.Siguiente;
                    }
                }

                //ENLACES FILAS
                f = m.Filas.Cabeza;
                if (f != null)
                {
                    dot = dot + "m->X" + f.Id.ToString() + "[rankdir=UD];\n";
                    while (f.Siguiente != null)
                    {
                        dot = dot + "X" + f.Id.ToString() + "->X" + f.Siguiente.Id.ToString() + "[rankdir=UD];\n";
                        dot = dot + "X" + f.Siguiente.Id.ToString() + "->X" + f.Id.ToString() + "[rankdir=UD];\n";
                        f   = f.Siguiente;
                    }

                    f = m.Filas.Cabeza;
                    while (f != null)
                    {
                        n   = f.Acceso;
                        dot = dot + "X" + f.Id.ToString() + "->F" + f.Id.ToString() + "_C" + Convert.ToChar(n.Columna).ToString() + "[constraint=false];\n";
                        while (n.Derecha != null)
                        {
                            dot = dot + "F" + n.Fila.ToString() + "_C" + Convert.ToChar(n.Columna).ToString() + "->F" + n.Derecha.Fila.ToString() + "_C" + Convert.ToChar(n.Derecha.Columna).ToString() + "[constraint=false];\n";
                            dot = dot + "F" + n.Derecha.Fila.ToString() + "_C" + Convert.ToChar(n.Derecha.Columna).ToString() + "->F" + n.Fila.ToString() + "_C" + Convert.ToChar(n.Columna).ToString() + "[constraint=false];\n";
                            n   = n.Derecha;
                        }
                        f = f.Siguiente;
                    }
                }

                dot = dot + "}\n";

                TextWriter t = new StreamWriter(@"C:\GrafosEDD\grafoMatriz.dot");
                t.WriteLine(dot);
                t.Close();
            }

            Byte[] a = new Byte[0];

            String comando       = "\"C:/Program Files (x86)/Graphviz2.38/bin/dot.exe\" -Tpng C:\\GrafosEDD\\grafoMatriz.dot -o C:\\GrafosEDD\\grafoMatriz.png";
            var    procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd.exe", "/c" + comando);
            var    proc          = new System.Diagnostics.Process {
                StartInfo = procStartInfo
            };

            proc.Start();
            proc.WaitForExit();

            FileStream foto = new FileStream("C:\\GrafosEDD\\grafoMatriz.png", FileMode.OpenOrCreate, FileAccess.ReadWrite);

            a = new Byte[foto.Length];
            BinaryReader reader = new BinaryReader(foto);

            a = reader.ReadBytes(Convert.ToInt32(foto.Length));
            foto.Close();

            return(a);
        }
Exemplo n.º 6
0
 public void reiniciarMatriz()
 {
     matriz = new Matriz(1);
 }