Exemple #1
0
    void Start()
    {
        if (gameModeIndexSet)
        {
            gameMode = (GameMode)gameModeIndex;
        }
        if (gameMode == GameMode.Regular)
        {
            // GetComponent<ClockGround>().StartClock();
        }

        BoardGround.SetPositionFromFen(DefinitionsGround.gameStartFen, true);

        ZobristKeyGround.Init();
        EvaluationGround.Init();
        if (regenerateOpeningBook)
        {
            OpeningBookGeneratorGround.GenerateBook();
        }
        if (useOpeningBook)
        {
            OpeningBookReaderGround.Init();
        }

        playerManager = GetComponent <MoveManagerGround> ();

        playerManager.CreatePlayers();

        BoardGround.SetPositionFromFen(DefinitionsGround.gameStartFen, true);
    }
    /*
     * int QuiescenceSearch(int alpha, int beta, bool isWhite, bool topLevel) {
     *      SortedList<int, ushort>  captureMoves = moveGenerator.GetMoves (true, false);
     *
     *      if (captureMoves.Count == 0) {
     *              nodesSearched ++;
     *              int evaluation = Evaluate();
     *              if (topLevel) {
     *                      quiescenceScore = evaluation;
     *              }
     *              return Evaluate();
     *      }
     *
     *      int value = int.MinValue;
     *      if (isWhite) { // white is trying to attain the highest evaluation possible
     *
     *              for (int i =0; i < captureMoves.Count; i ++) {
     *                      BoardGround.MakeMove(captureMoves[i]);
     *                      value = Math.Max(value,QuiescenceSearch(alpha, beta, false, false));
     *                      alpha = Math.Max(alpha, value);
     *                      BoardGround.UnmakeMove(captureMoves[i]);
     *
     *                      if(topLevel && findingMoveForWhite) { // has searched full depth and is now looking at top layer of moves to select the best
     *                              if (value>quiescenceScore) {
     *                                      quiescenceScore = value;;
     *                              }
     *                      }
     *
     *                      if (beta <= alpha) { // break
     *                              breakCount++;
     *                              break;
     *                      }
     *              }
     *              return value;
     *      }
     *
     *      // black is trying to obtain the lowest evaluation possible
     *      value = int.MaxValue;
     *      for (int i =0; i < captureMoves.Count; i ++) {
     *              BoardGround.MakeMove(captureMoves[i]);
     *              value = Math.Min(value,QuiescenceSearch(alpha, beta, true, false));
     *              beta = Math.Min(beta, value);
     *              BoardGround.UnmakeMove(captureMoves[i]);
     *
     *              if(topLevel && !findingMoveForWhite) { // has searched full depth and is now looking at top layer of moves to select the best
     *                      if (value<quiescenceScore) {
     *                              quiescenceScore = value;;
     *                      }
     *              }
     *
     *              if (beta <= alpha) { // break
     *                      breakCount++;
     *                      break;
     *              }
     *      }
     *
     *      return value;
     * }
     */

    public int Evaluate()
    {
        return(EvaluationGround.Evaluate());
    }