Exemplo n.º 1
0
        public void porNiveles()
        {
            Cola <ArbolGeneral <T> > cola = new Cola <ArbolGeneral <T> >();

            cola.encolar(this);
            while (!cola.esVacia())
            {
                ArbolGeneral <T> dato = cola.desencolar();
                Console.WriteLine(dato.getDatoRaiz() + dato.estadoGana());
                foreach (ArbolGeneral <T> x in dato.getHijos())
                {
                    cola.encolar(x);
                }
            }
        }
Exemplo n.º 2
0
        private void funcionEuristica(ArbolGeneral <int> arbolminmax, int limit, int turno)
        {
            // turno ira turnando al IA y al usuario. si turno es par, es turno de IA. impar para el usuario

            turno++;
            int dato = arbolminmax.getDatoRaiz();

            limit = limit - dato;
            if (limit < 0)
            {
                if (turno % 2 == 0)
                {
                    arbolminmax.sePierde();
                }
                else
                {
                    arbolminmax.seGana();
                }
            }
            else
            {
                // si es turno de IA, entonces la funcion euristica minimiza, si es turno del usuario maximiza
                // por defecto si es turno de IA, se implementa que gana IA a menos que haya un solo resultado
                // negativo obtenido de la recursion, entonces se pone en el arbol que pierde (minimizar).
                // lo contrario con el turno del usuario.

                string decide = "";
                if (turno % 2 == 0)
                {
                    decide = "gana IA";
                }
                else
                {
                    decide = "pierde IA";
                }
                foreach (ArbolGeneral <int> x in arbolminmax.getHijos())
                {
                    funcionEuristica(x, limit, turno);
                    string ganador = x.estadoGana();
                    if (turno % 2 == 0)
                    {
                        if (ganador == "pierde IA")
                        {
                            decide = "pierde IA";
                        }
                    }
                    else
                    {
                        if (ganador == "gana IA")
                        {
                            decide = "gana IA";
                        }
                    }
                }
                if (decide == "gana IA")
                {
                    arbolminmax.seGana();
                }
                else
                {
                    arbolminmax.sePierde();
                }
            }
        }