
def minimax (colour, board):
if gameOver(board) or lookedFarEnough(board):
return evaluateScore(board)
moves = getLegalMoves(colour, board)
if colour == black:
score = -infinity;
for i in moves:
score = max(minimax(white, makeMove(board, i)),
score)
else:
score = +infinity;
for i in moves:
score = min(minimax(black, makeMove(board, i)),
score)
return score
def alphaBeta (colour, board, alpha, beta):
if gameOver(board) or lookedFarEnough(board):
return evaluateScore(board)
moves = getLegalMoves(colour, board)
if colour == black:
for i in moves:
try = alphaBeta(white, makeMove(board, i), alpha, beta)
if try > beta:
beta = try # found a better move
if alpha >= beta:
return beta # no point searching further as WHITE would
# choose a different previous move
return beta # the best score for a move BLACK has found
else:
for i in moves:
try = alphaBeta(black, makeMove(board, i), alpha, beta)
if try < alpha:
alpha = try # found a better move
if alpha >= beta:
return alpha
return alpha # the best score for a move WHITE has found
#undef USE_CORNER_SCORES
#define USE_CORNER_SCORES
This document was produced using groff-1.19.