Stockfi sh возвращает только очень простые ходы - PullRequest
0 голосов
/ 26 мая 2020

Я написал шахматы GUI на Python, которые пока работают хорошо, и я пытаюсь заставить их работать с Stockfi sh, используя протокол UCI. Белые - человеческий игрок, и я использую Stockfi sh, чтобы вычислить лучший ход для черных. Проблема, с которой я столкнулся, заключается в том, что Stockfi sh возвращает только очень простые ходы, то есть продвигает первую пешку до упора, затем вторую и так далее. Мне было интересно, использую ли я правильные команды для его запуска. Вот сообщение со Stockfi sh из Python:

    # SEND INFORMATION TO STOCKFISH AND ASK FOR NEXT MOVE
    # WE ONLY DO THIS FOR THE BLACK PLAYER AS HE IS THE ROBOT
    def robotMoves(self):
        fen = self.getFEN() # FETCH THE CURRENT BOARD'S FEN STRING
        j = Popen(['stockfish'], stdin=PIPE, stdout=PIPE, stderr=PIPE)
        j.stdin.write(b'setoption name Hash value 1024\n')
        j.stdin.flush()
        j.stdin.write(b'setoption name threads value 12\n')
        j.stdin.flush()
        j.stdin.write(b'position fen {0}\n'.format(fen))
        j.stdin.flush()
        j.stdin.write(b'go depth 100\n')
        j.stdin.flush()
        proc = j.communicate()[0]
        result = re.findall(r'bestmove [a-h][0-8][a-h][0-8]', proc)
        if len(result):
            myMove = result[0].split(' ')[1]

            # PERFORM PHYSICAL MOVE
            oldRow, oldColumn = self.getRowColumn(myMove[0:2])
            newRow, newColumn = self.getRowColumn(myMove[2:4])
            pieceToMove = self.whatPiece(oldRow, oldColumn)
            self.movePiece(pieceToMove, oldRow, oldColumn, newRow, newColumn)
            self.setMsg('{0} {1} moves from {2} to {3}.'.format(pieceToMove.whichSide, pieceToMove.pieceType, myMove[0:2], myMove[2:4]))
            set_y = newRow * 60 + 12
            set_x = newColumn * 60 + 12
            pieceToMove.piece.place(x=set_x, y=set_y)  

        else:
            # FOR DEBUGGING, NO MOVE RETURNED
            print proc

Моя строка FEN будет выглядеть как «r3r1k1 / pp3nPp / 1b1p1B2 / 1q1P1N2 / 8 / P4Q2 / 1P3PK1 / R6R». Часть движения работает нормально, просто ходы Stockfi sh пока вроде как неутешительны. Спасибо!

Эван

...