当前位置: 首页>>代码示例>>C#>>正文


C# Estado.esGol方法代码示例

本文整理汇总了C#中Estado.esGol方法的典型用法代码示例。如果您正苦于以下问题:C# Estado.esGol方法的具体用法?C# Estado.esGol怎么用?C# Estado.esGol使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Estado的用法示例。


在下文中一共展示了Estado.esGol方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: max

    private int max(Estado estado, Equipo equipo, ref List<Jugada> listaJugadas, int alfa, int beta, int profundidad)
    {
        // Retornar si es un nodo hoja
        if (profundidad == 0 || estado.esGol())
        {
            return estado.valorar();
        }

        // Generar sucesores
        int valor = -infinito;
        List<Jugada> jugadas = new List<Jugada>();
        // Ficha
        for (int j = 0; j < estado.cantidadFichas; j++)
        {
            // Distancia
            for (int dj = 1; dj <= 2; dj++)
            {
                // Direccion Jugador
                for (int jx = -1; jx <= 1; jx++)
                {
                    for (int jy = -1; jy <= 1; jy++)
                    {
                        if (jx == 0 && jy == 0)
                        {
                            continue;
                        }

                        int djx = estado.jugadores[j].x + jx * dj;
                        int djy = estado.jugadores[j].y + jy * dj;
                        // Validar el movimiento
                        if (!validarMovimiento(estado.jugadores[j].x, estado.jugadores[j].y, djx, djy, false))
                        {
                            continue;
                        }
                        // Mover al jugador
                        Jugada jugadaJugador = new Jugada(estado.jugadores[j].x, estado.jugadores[j].y, djx, djy);
                        jugadas.Add(jugadaJugador);
                        estado.mover(equipo, jugadaJugador, false);
                        // En caso de ser un pase de pelota, iterar en base a esta
                        if (estado.pelota.tieneInfluencia(equipo, true))
                        {
                            bool terminar;
                            int m = iterarPelotaMax(estado, equipo, ref listaJugadas, ref jugadas, ref valor, ref alfa, ref beta, profundidad, out terminar);
                            if (terminar)
                            {
                                estado.mover(equipo, jugadaJugador, true);
                                jugadas.Remove(jugadaJugador);
                                return m;
                            }
                        }
                        // Si no se hizo un pase, bajar un nivel
                        else
                        {
                            int m = min(estado, proximoEquipo(equipo), alfa, beta, profundidad - 1);
                            if (m > valor)
                            {
                                valor = m;

                                // Si se esta buscando la lista de jugadas, hacer una copia de las jugadas en su estado actual
                                if (listaJugadas != null)
                                {
                                    listaJugadas = new List<Jugada>(jugadas);
                                }
                            }
                            if (valor >= beta)
                            {
                                estado.mover(equipo, jugadaJugador, true);
                                jugadas.Remove(jugadaJugador);
                                return valor;
                            }
                            else if (valor > alfa)
                            {
                                alfa = valor;
                            }
                        }
                        // Retornar el jugador
                        estado.mover(equipo, jugadaJugador, true);
                        jugadas.Remove(jugadaJugador);
                    }
                }
            }
        }

        return valor;
    }
开发者ID:AlejoAsd,项目名称:MastergoalUnity,代码行数:85,代码来源:PlayerController.cs


注:本文中的Estado.esGol方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。