Ejemplo n.º 1
0
        public Movimiento CalcularMovimiento(ArbolGeneral <Planeta> arbol)
        {
            if (!arbol.getDatoRaiz().EsPlanetaDeLaIA())
            {
                ArrayList lista = new ArrayList();
                lista = preordenCaminoIA(lista, arbol);
                Planeta origen  = (Planeta)lista[lista.Count - 1];
                Planeta destino = (Planeta)lista[lista.Count - 2];
                return(new Movimiento(origen, destino));
            }
            else
            {
                ArrayList lista = new ArrayList();
                lista = preordenCaminoJugador(lista, arbol);
                int     a = 0, b = 1;
                Planeta origen  = (Planeta)lista[a];
                Planeta destino = (Planeta)lista[b];
                for (int i = 0; i < lista.Count; i++)
                {
                    Planeta elegido       = (Planeta)lista[i];
                    Planeta elegidoMasUno = (Planeta)lista[i + 1];
                    if (elegido.EsPlanetaDeLaIA() && !elegidoMasUno.EsPlanetaDeLaIA())
                    {
                        return(new Movimiento(elegido, elegidoMasUno));
                    }
                }

                return(new Movimiento(origen, destino));
            }
        }
Ejemplo n.º 2
0
        public ArrayList preordenCaminoIA(ArrayList lista, ArbolGeneral <Planeta> arbol)
        {
            Planeta planeta = arbol.getDatoRaiz();

            lista.Add(planeta);
            if (planeta.EsPlanetaDeLaIA())
            {
                return(lista);
            }
            else
            {
                foreach (ArbolGeneral <Planeta> i in arbol.getHijos())
                {
                    ArrayList lista2 = preordenCaminoIA(lista, i);
                    if (lista2 != null)
                    {
                        return(lista2);
                    }
                    lista.RemoveAt(lista.Count - 1);
                }
            }

            return(null);
        }