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

        Board.SetPositionFromFen(Definitions.gameStartFen, true);

        ZobristKey.Init();
        Evaluation.Init();
        if (regenerateOpeningBook)
        {
            OpeningBookGenerator.GenerateBook();
        }
        if (useOpeningBook)
        {
            OpeningBookReader.Init();
        }

        playerManager = GetComponent <MoveManager> ();

        playerManager.CreatePlayers();

        Board.SetPositionFromFen(Definitions.gameStartFen, true);
    }
Beispiel #2
0
    public override void RequestMove()
    {
        moveSearchStartTime = UnityEngine.Time.time;

        base.RequestMove();

        bool bookMovePlayed = false;

        if (OpeningBookReader.IsInBook() && GameManager.instance.useOpeningBook)
        {
            UnityEngine.Debug.Log("In Book");
            Random prng = new Random();

            List <ushort> bookMoves      = OpeningBookReader.GetBookMoves();
            ushort        randomBookMove = bookMoves[prng.Next(0, bookMoves.Count)];
            if (first)
            {
                first = false;
                //randomBookMove = sic;
            }
            if (moveGenerator.GetMoves(false, false).Contains(randomBookMove))              // ensure book move is legal (possible for zobrist keys to have hashed wrong position)
            {
                UnityEngine.Debug.Log("Book move");
                HandleAIMove(randomBookMove);
                bookMovePlayed = true;
            }
            else
            {
                UnityEngine.Debug.LogError("Book error");
            }
        }

        if (!bookMovePlayed)
        {
            moveRequested = true;
            searcher.StartSearch();
        }
    }