Сгенерировал набор псевдоправильных ходов (- рокировка и на проходе) и создал функцию для генерации только допустимых ходов из списка.
Мой код для этой функции находится здесь:
Код: Выделить всё
def generateLegalMoves(currentPos, colourToMove):
kingNumber = 1 if colourToMove == "b" else 9
opponentColour = "w" if colourToMove == "b" else "b"
legalMoves = []
myKingSquare = currentPos.index(kingNumber)
pseudoLegalList = GeneratePsuedoLegalMoves(currentPos, colourToMove)
for pseudoMove in pseudoLegalList:
newPos = makeMove(currentPos, pseudoMove[0], pseudoMove[1])
newPosPsuedoLegalMoves = GeneratePsuedoLegalMoves(newPos, opponentColour)
isLegal = True
for j in newPosPsuedoLegalMoves:
if j[1] == myKingSquare:
isLegal = False
if isLegal:
legalMoves.append(pseudoMove)
return legalMoves
Подробнее здесь: https://stackoverflow.com/questions/769 ... -efficient
Мобильная версия