コード例 #1
0
        void CrearEstadoFinal(EstadoDeJuego.PiezaDeEstado piezaAquitar)
        {
            EstadoDeJuego estado = new EstadoDeJuego();

            if (piezaAquitar != null)
            {
                Debug.Log("se quito " + piezaAquitar.Nombre + " de la lista a presentar");
                estado.QuitarPieza(piezaAquitar);
                Debug.Log("cantidad de piezas despues de quitar= " + estado.IdsActivos.Count.ToString());
                Debug.Log("Cantidad de piezas blancas despues de quitar " + estado.IdsActivosPiezasClaras.Count.ToString());
            }

            Debug.Log("Cantidad de piezas " + estado.ListaDePiezasDeEstado.Count.ToString());
            //pieza.EstadoDelJuego = estado;
            //Debug.Log("Se creo un estado para la pieza " + pieza.Nombre);
            //Debug.Log("La pieza " + estado.ListaDePiezas[0].Nombre +
            //" se guadro en la casilla " + estado.ListaDePiezas[0].Casilla);

            estadoFinal = estado;
        }
コード例 #2
0
ファイル: Calculo.cs プロジェクト: oscarpavon/ajedrez
        Movimiento MovimientoClaras(EstadoDeJuego estado)
        {
            List <Movimiento> movimientos = Juego.IA.CalcularMovimientosPorColorEnEstado(Juego.color.Claro, estado);
            Movimiento        mejorMov    = new Movimiento(Juego.color.Claro);
            int mejorValor = 999;

            Debug.Log("Cantidad de movimientos a calcular " + movimientos.Count);
            foreach (Movimiento mov in movimientos)
            {
                //DarValorDeEstado (mov);
                //if(mov.Valor != 1)
                Debug.Log("Valor de movimiento blancas " + mov.Valor);

                //mejorMov = Min (mejorMov, mov);
                if (mov.Valor < mejorValor)
                {
                    mejorMov   = mov;
                    mejorValor = mov.Valor;
                }
                //Debug.Log ("Valor de estado " + mejorMov.estadoFinal.ValorDeEstado);
            }
            //Debug.Log("Mejor valor blanca " + mejorMov.Valor);
            return(mejorMov);
        }
コード例 #3
0
ファイル: EstadoDeJuego.cs プロジェクト: oscarpavon/ajedrez
 public EstadoDeJuego(EstadoDeJuego estado)
 {
     CrearListaDePiezasDesdeEstado(estado);
     ClasificarPiezasPorColor();
     CrearCasillasDesdeEstado(estado);
 }
コード例 #4
0
ファイル: Calculo.cs プロジェクト: oscarpavon/ajedrez
        public Movimiento MiniMax(int Profundidad, EstadoDeJuego estado, bool esMaximo)
        {
            if (Profundidad == 0)
            {
                if (estado.Turno == true)                   //blancas
                {
                    Movimiento mov = MovimientoClaras(estado);
                    Debug.Log("Fin minimax");

                    return(mov);
                }
                else                     //juegam megram

                {
                }
            }

            if (esMaximo)
            {
                Movimiento mejorMov = new Movimiento(Juego.color.Oscuro);
                int        mejor    = -999;
                foreach (Movimiento mov in ListaDeMovimientosParaCalcular)
                {
                    //DarValorDeEstado (mov);
                    mov.estadoFinal.Turno = true;                     //juegan blancas
                    //Movimiento me = MiniMax (Profundidad - 1, mov.estadoFinal, !esMaximo);
                    Debug.Log("Se va calcular movimiento desde estado blancas");
                    //Debug.Log("Cantidad de piezas en el estado a calcular " + mov.estadoFinal.IdsActivosPiezasClaras.Count);
                    //Debug.Log("Cantidad casillas de estado " + mov.estadoFinal.CasillasDeEstado.Count);

                    //mov.estadoFinal.LogCantidadCasillasOcupadas();
                    Movimiento mejorMovBlanca = MovimientoClaras(mov.estadoFinal);
                    Debug.Log("Mejor valor blancas" + mejorMovBlanca.Valor);
                    //Debug.Log("Valor mov negra " + mov.estadoFinal.ValorDeEstado);
                    //mejorMov = Max (mejorMov, me);

                    if (mov.Valor > mejor)
                    {
                        mejorMov = mov;
                        mejor    = mov.Valor;
                    }
                }
                Debug.Log("Mejor mov negras " + mejorMov.Valor);
                Debug.Log("se creo un arbol para negras");
                return(mejorMov);
            }
            else
            {
                List <Movimiento> movimientos = Juego.IA.CalcularMovimientosPorColorEnEstado(Juego.color.Claro, estado);

                Movimiento mejorMov = new Movimiento(Juego.color.Claro);
                foreach (Movimiento mov in movimientos)
                {
                    mov.estadoFinal.Turno = false;                     //juegan negras
                    Movimiento moviVal = MiniMax(Profundidad - 1, mov.estadoFinal, !esMaximo);
                    mejorMov = Min(mejorMov, moviVal);
                }
                Debug.Log("Se creo un arbol par ablancas");

                return(mejorMov);
            }
        }
コード例 #5
0
ファイル: Calculo.cs プロジェクト: oscarpavon/ajedrez
 public CalculoDeJugada(List <Movimiento> MovimientosCalcular, EstadoDeJuego estadoOriginal)
 {
     this.estadoOriginal = estadoOriginal;
     this.ListaDeMovimientosParaCalcular = MovimientosCalcular;
     //Debug.Log(this.estadoOriginal.ListaDePiezas[0].Casilla);
 }
コード例 #6
0
        public Movimiento(Juego.Pieza PiezaQueSeVaMover, Juego.Casilla CasillaDondeMover, EstadoDeJuego estadoAnterior)
        {
            this.EstadoAnterior = estadoAnterior;

            this.CasillaDondeMover = CasillaDondeMover;
            this.PiezaQueSeVaMover = PiezaQueSeVaMover;
            DarValorDeMovimiento();
            this.EstadoAnterior = new EstadoDeJuego();



            EstadoDeJuego.PiezaDeEstado piezaAquitar = null;
            if (CasillaDondeMover.pieza != null)
            {
                piezaAquitar = new EstadoDeJuego.PiezaDeEstado(CasillaDondeMover.pieza);
            }

            CrearEstadoFinalDesdeEstadoAnterior(piezaAquitar);
            //ActualizarEstadoFinal ();
            QuitarTodasLasCasillasOcupadas();
            AgregarCasillaOcupada();
            //int id = CasillaDondeMover.id;
            //Debug.Log(id);
            //estadoFinal.CasillasDeEstado[id].EstaOcupada = true;
            //estadoFinal.ActualizarCasillasOcupadas ();
        }
コード例 #7
0
ファイル: ControlJuego.cs プロジェクト: oscarpavon/ajedrez
		Movimiento CrearUnMovimiento (EstadoDeJuego estado) {
			Juego.Pieza pieza = Partida.ListaDePiezas[0];
			Juego.Casilla casilla = Partida.ListaDeCasillas[1];
			Movimiento movimientoUno = new Movimiento (pieza, casilla, estado);
			return movimientoUno;
		}