Пример #1
0
    IEnumerator AICycle()
    {
        if (typeAI != AIType.Montecarlo)
        {
            yield return(null);

            Actions act = AI.Decide();
            yield return(null);

            myEffector.Execute(act);
        }
        else
        {
            MontecarloAI aux = (MontecarloAI)AI;
            aux.MontecarloDecide(currentGame.GetSnapshot());
            while (!aux.Ready)
            {
                yield return(null);
            }

#if UNITY_EDITOR
            if (aux.ActionToExecute == Actions.None)
            {
                Debug.LogError("ERROR EN MONTECARLO: NO SE HA OBTENIDO ACCION");
            }
#endif
            myEffector.Execute(aux.ActionToExecute);
        }
    }
Пример #2
0
        /// <summary>
        /// Execute l'effecteur le plus approprie selon l'agent
        /// </summary>
        public void ExecuteMoves()
        {
            // Observe l’environnement
            CaptureSignals();

            // Met A jour les croyance a partir des nouveaux fait observe et des croyances deja etablie
            InferenceEngine.InferenceCycle(ref _beliefs, _rules);

            if (_queuedActions.Count == 0)
            {
                PlanNextMove();
            }
            Effector action = _queuedActions.Dequeue();

            action.Execute(this);
        }
Пример #3
0
        /// <summary>
        /// Execute l'effecteur le plus approprie selon l'agent
        /// </summary>
        /// <returns>Faux si l'agent n'a plus de mouvement</returns>
        public bool ExecuteAMove()
        {
            // Observe l’environnement
            CheckersState currentState = CaptureSignals();

            // Construit l'arbre ? (Uniquement si pb de performance)

            // Recupere toute les actions possible
            // Defini le but actuel prioritaire
            // Pour toute les actions possible on recupere celle qui est associe a la mesure d'utilite la plus forte
            Effector nextMove = AlphaBetaSearch(currentState);//MinimaxDecision(currentState);

            // Execute le mouvement
            if (nextMove == null)
            {
                return(false);
            }
            nextMove.Execute(m_board);
            return(true);
        }