コード例 #1
0
ファイル: ComputerPlayer.cs プロジェクト: NicoDyJ/TPF_Ochoa
        public override int descartarUnaCarta()
        {
            //busca en los hijos del arbol el estado "gana IA" y elige esa carta
            int carta = arbol.getHijos()[0].getDatoRaiz();

            foreach (ArbolGeneral <int> x in arbol.getHijos())
            {
                string ganar = x.estadoGana();
                if (ganar == "gana IA")
                {
                    carta = x.getDatoRaiz();
                }
            }
            //elige el camino del arbol que posee la carta elegida previamente
            foreach (ArbolGeneral <int> x in arbol.getHijos())
            {
                if (x.getDatoRaiz() == carta)
                {
                    arbol = x;
                }
            }
            // imprime y retorna la carta
            Console.WriteLine("Naipe elegido por la Computadora: " + carta);
            return(carta);
        }
コード例 #2
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);
                }
            }
        }
コード例 #3
0
ファイル: ComputerPlayer.cs プロジェクト: NicoDyJ/TPF_Ochoa
        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();
                }
            }
        }