A Simple AI for chess written in python.
The code runs a chess game retrieving moves for both white and black from pyss given one argument indicating depth The code can be modified to allow a human to input moves as well It prints: the board, the last move, and the current turn
This code basically runs using the minimax algorithm and features alpha beta pruning
More specifically this is essentially the structure get_move: // returns a move
// it tests every legal move from the root node simultaneously and returns the one with the best score
// to score a move I use minimax minimax: // returns a score for a move based on the depth
// this algorithm uses recursion to search deeper by a power of the number of legal moves and once reaching its limit it evaluates the posiiton (it actually starts another search a little deeper after)
evaluate: // returns a heuristic score based purely on the current position
// this is a sum of the material the number of legal moves and the center control of white
// this returns a value negative if black is winning and positive if white is winning
quiescence: // it is necessary to search deeper at the end of the minimax search because otherwise a move like QxP could be seen as good as it wins a pawn but if we stop there we might miss PxQ which would be bad
// the quiescence search looks at all the potential captures and then the next layer of subsequent captures until there are no captures left to ensure that an evaluation is safe