Пример #1
0
    public static string Go(Partida ptd)
    {
        ptd.ColorMaquina = ptd.ColorTurno;
        Movimiento respuesta = ptd.Alejo.ElegirMovimiento(ptd);

        ptd.CambiarTurno();
        return("move " + respuesta.ToString());
    }
Пример #2
0
        void Mover(Pieza pieza, Casilla cas)
        {
            piezaAnterior = pieza;
            pieza.MoverA(cas);

            pieza.Seleccionada = false;
            pieza = null;
            Partida.CambiarTurno();
        }
Пример #3
0
    public int AlphaBeta(int profundidad, int alpha, int beta, Partida ptd)
    {
        if (profundidad <= 0)
        {
            return(Evaluar(ptd));
        }
        int cuenta, valor;

        Movimiento[] movimientosLegales = ptd.Tab.GenerarSeudoLegales(ptd.ColorTurno, out cuenta);

        int[] valorMovimiento = new int[cuenta];

        for (int i = 0; i < cuenta; i++)
        {
            bool ilegalPorJaque = ptd.Tab.MoverPieza(movimientosLegales[i], true);

            if (ilegalPorJaque)
            {
                ptd.Tab.DeshacerMovimiento(movimientosLegales[i], true);
                continue;
            }
            ptd.CambiarTurno();
            valor = -AlphaBeta(profundidad - 1, -beta, -alpha, ptd);
            ptd.CambiarTurno();
            ptd.Tab.DeshacerMovimiento(movimientosLegales[i], true);

            valorMovimiento[i] = valor;

            if (valor >= beta && valor != 100000)
            {
                return(beta);
            }

            if (valor > alpha)
            {
                alpha = valor;
                if (ptd.ColorTurno == ptd.ColorMaquina && profundidad == this.Profundidad)
                {
                    this.Eleccion = movimientosLegales[i];
                }
            }
        }
        return(alpha);
    }
Пример #4
0
        void Mover()
        {
            Casilla casilla = ElegirCasilla();

            piezaAnterior = piezaSeleccionada;
            piezaSeleccionada.MoverA(casilla);

            piezaSeleccionada.Seleccionada = false;
            piezaSeleccionada = null;
            Partida.CambiarTurno();
        }
Пример #5
0
    public static string Usermove(string strMov, Partida ptd)
    {
        Movimiento usermove = new Movimiento(strMov);

        ptd.Tab.MoverPieza(usermove, false);
        ptd.CambiarTurno();

        if (ptd.ColorMaquina != 2)
        {
            Movimiento respuesta = ptd.Alejo.ElegirMovimiento(ptd);
            ptd.Tab.MoverPieza(respuesta, false);

            ptd.CambiarTurno();
            return("move " + respuesta.ToString());
        }
        else
        {
            return("no respuesta");
        }
    }