I am trying to make a chess engine without use of the python chess libraries, so I can learn more about chess programming. Have generated a set of pseudo legal moves (- castling and en passant) and have made a function to generate only the legal moves from the list. my code for this function is here:
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
How can I code a more efficient version?