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; }
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); }
public EstadoDeJuego(EstadoDeJuego estado) { CrearListaDePiezasDesdeEstado(estado); ClasificarPiezasPorColor(); CrearCasillasDesdeEstado(estado); }
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); } }
public CalculoDeJugada(List <Movimiento> MovimientosCalcular, EstadoDeJuego estadoOriginal) { this.estadoOriginal = estadoOriginal; this.ListaDeMovimientosParaCalcular = MovimientosCalcular; //Debug.Log(this.estadoOriginal.ListaDePiezas[0].Casilla); }
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 (); }
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; }