コード例 #1
0
        public void caudal(T litros)
        {
            Cola <ArbolGeneral <T> > c = new Cola <ArbolGeneral <T> >();
            ArbolGeneral <T>         aux;

            raiz.setDato(litros);
            c.encolar(this);



            while (!c.esVacia())
            {
                aux = c.desencolar();


                Console.WriteLine("La casa tiene " + aux.getDatoRaiz() + " litros");

                if (!aux.esHoja())
                {
                    foreach (ArbolGeneral <T> hijo in aux.getHijos())
                    {
                        int dato = (int)(object)aux.getDatoRaiz() / aux.getHijos().Count;

                        hijo.raiz.setDato((T)(object)dato);
                        c.encolar(hijo);
                    }
                }
            }
        }
コード例 #2
0
        public void ElegirNivel()
        {
            Cola <ArbolGeneral <T> > c = new Cola <ArbolGeneral <T> >();
            ArbolGeneral <T>         arbolAux;
            int nivel = 0;

            Console.WriteLine("Ingrese un nivel para ver las posibles jugadas:");
            int lvl = int.Parse(Console.ReadLine());

            c.encolar(this);
            c.encolar(null);
            while (!c.esVacia())
            {
                arbolAux = c.desencolar();

                if (arbolAux == null)
                {
                    if (!c.esVacia())
                    {
                        c.encolar(null);
                        nivel++;
                    }
                }

                else
                {
                    if (!this.esHoja())
                    {
                        if (nivel == lvl)
                        {
                            Carta e = (Carta)(object)arbolAux.getDatoRaiz();
                            Console.WriteLine("el valor de la carta es " + e.getCarta() + " y su valor heuri es " + e.getHeuris());
                        }

                        foreach (var hijo in arbolAux.getHijos())
                        {
                            c.encolar(hijo);
                        }
                    }

                    else
                    {
                        if (nivel == lvl)
                        {
                            Carta e = (Carta)(object)arbolAux.getDatoRaiz();

                            if (e.getHeuris() == 1)
                            {
                                Console.WriteLine("el valor de la carta es " + e.getCarta() + " y el humano pierde ");
                            }
                            if (e.getHeuris() == -1)
                            {
                                Console.WriteLine("el valor de la carta es " + e.getCarta() + " y la IA pierde");
                            }
                        }
                    }
                }
            }
        }
コード例 #3
0
        public void porNivelesCartas()
        {
            Cola <ArbolGeneral <T> > c = new Cola <ArbolGeneral <T> >();
            ArbolGeneral <T>         arbolAux;

            c.encolar(this);
            c.encolar(null);
            int nivel = 0;

            while (!c.esVacia())
            {
                arbolAux = c.desencolar();

                if (arbolAux == null)
                {
                    if (!c.esVacia())
                    {
                        c.encolar(null);
                        nivel++;
                    }
                }
                else
                {
                    Carta e = (Carta)(object)arbolAux.getDatoRaiz();
                    if (nivel == 0)
                    {
                        Console.Write("nivel de la carta " + nivel + ". ");
                        Console.WriteLine("el valor de la carta es " + e.getCarta() + " y su valor heuri es " + e.getHeuris());
                    }
                    if (nivel == 1)
                    {
                        Console.Write("nivel de la carta " + nivel + ". ");
                        Console.WriteLine("el valor de la carta es " + e.getCarta() + " y su valor heuri es " + e.getHeuris());
                    }
                    if (nivel == 2)
                    {
                        Console.Write("nivel de la carta " + nivel + ". ");
                        Console.WriteLine("el valor de la carta es " + e.getCarta() + " y su valor heuri es " + e.getHeuris());
                    }
                    if (nivel == 3)
                    {
                        Console.Write("nivel de la carta " + nivel + ". ");
                        Console.WriteLine("el valor de la carta es " + e.getCarta() + " y su valor heuri es " + e.getHeuris());
                    }
                    if (nivel == 4)
                    {
                        Console.Write("nivel de la carta " + nivel + ". ");
                        Console.WriteLine("el valor de la carta es " + e.getCarta() + " y su valor heuri es " + e.getHeuris());
                    }
                    if (!this.esHoja())
                    {
                        foreach (var hijo in arbolAux.getHijos())
                        {
                            c.encolar(hijo);
                        }
                    }
                }
            }
        }
コード例 #4
0
        public int Elnivel(T dato)
        {
            Cola <ArbolGeneral <T> > c = new Cola <ArbolGeneral <T> >();
            ArbolGeneral <T>         Aux;


            c.encolar(this);
            c.encolar(null);


            int  nivel     = 0;
            int  nivelDato = 0;
            bool a         = false;


            while (!c.esVacia())
            {
                Aux = c.desencolar();


                if (Aux == null)
                {
                    nivel++;
                    if (!c.esVacia())
                    {
                        c.encolar(null);
                    }
                }

                else
                {
                    if (Aux.getDatoRaiz().Equals(dato))
                    {
                        nivelDato = nivel;
                        a         = true;
                    }

                    foreach (var hijo in Aux.getHijos())
                    {
                        c.encolar(hijo);
                    }
                }
            }

            if (a == true)
            {
                return(nivelDato);
            }

            else
            {
                return(nivelDato = -1);
            }
        }
コード例 #5
0
        public void quadtree(int pixels)
        {
            int nivel    = 0;
            int pxNegros = 0;

            ArbolGeneral <T>         aux;
            ArbolGeneral <T>         nodoNull = new ArbolGeneral <T>((T)(object)-1);
            ArbolGeneral <T>         anterior = nodoNull;
            Cola <ArbolGeneral <T> > cola     = new Cola <ArbolGeneral <T> >();

            cola.encolar(this);

            while (!cola.esVacia())
            {
                aux = cola.desencolar();

                if (aux.getDatoRaiz().ToString() == nodoNull.getDatoRaiz().ToString())
                {
                    nivel++;
                }

                else
                {
                    if (anterior.getDatoRaiz().ToString() == nodoNull.getDatoRaiz().ToString())
                    {
                        cola.encolar(nodoNull);
                    }

                    if (!aux.esHoja())
                    {
                        foreach (var element in aux.getHijos())
                        {
                            cola.encolar(element);
                        }
                    }

                    if (aux.esHoja())
                    {
                        if (aux.getDatoRaiz().ToString() == 1.ToString())
                        {
                            pxNegros = (int)(pxNegros + (1024 / Math.Pow(4, nivel)));
                        }
                    }
                }

                anterior = aux;
            }

            Console.Write(pxNegros);
        }
コード例 #6
0
        //El ancho del arbol es la cantidad de nodos que tengo en un nivel donde haya
        //mas nodos.
        public int ancho()
        {
            Cola <ArbolGeneral <T> > c = new Cola <ArbolGeneral <T> >();
            ArbolGeneral <T>         arbolAux;
            int contArboles = 0, anchoMax = 0;

            c.encolar(this);
            c.encolar(null);
            anchoMax = 1;

            while (!c.esVacia())
            {
                arbolAux = c.desencolar();

                if (arbolAux == null)
                {
                    if (!c.esVacia())
                    {
                        c.encolar(null);
                    }

                    if (contArboles > anchoMax)
                    {
                        anchoMax = contArboles;
                    }

                    contArboles = 0;
                }
                else
                {
                    // Incrementamos el contador de arboles por nivel
                    contArboles++;

                    // Encolamos hijos
                    if (!this.esHoja())
                    {
                        foreach (var hijo in arbolAux.getHijos())
                        {
                            c.encolar(hijo);
                        }
                    }
                }
            }

            return(anchoMax);
        }
コード例 #7
0
        public void porNiveles()
        {
            Cola <ArbolGeneral <T> > c = new Cola <ArbolGeneral <T> >();
            ArbolGeneral <T>         arbolAux;

            c.encolar(this);
            while (!c.esVacia())
            {
                arbolAux = c.desencolar();

                Console.Write(arbolAux.getDatoRaiz() + " ");

                if (!this.esHoja())
                {
                    foreach (var hijo in arbolAux.getHijos())
                    {
                        c.encolar(hijo);
                    }
                }
            }
        }
コード例 #8
0
        public void porNivelesCarta()
        {
            Cola <ArbolGeneral <T> > c = new Cola <ArbolGeneral <T> >();
            ArbolGeneral <T>         arbolAux;

            c.encolar(this);
            while (!c.esVacia())
            {
                arbolAux = c.desencolar();

                Carta e = (Carta)(object)arbolAux.getDatoRaiz();
                Console.WriteLine("el valor de la carta es " + e.getCarta() + " y su valor heuri es " + e.getHeuris());

                if (!this.esHoja())
                {
                    foreach (var hijo in arbolAux.getHijos())
                    {
                        c.encolar(hijo);
                    }
                }
            }
        }