From 3935ac4ada5831629765fc5bb6fb141a8a8c483a Mon Sep 17 00:00:00 2001 From: Zachary Wahrman Date: Fri, 6 Dec 2019 14:32:31 -0500 Subject: [PATCH] Add files via upload --- state.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/state.py b/state.py index d2900e6..9440eaf 100644 --- a/state.py +++ b/state.py @@ -1,3 +1,28 @@ +import math + +max_depth = 0 +def Minimax(state, depth, maximizingPlayer, alpha, beta): + if depth == max_depth: + return state.eval() + if maximizingPlayer: + best_move = -1 * math.inf + for successor_state in state.successors(): + val = Minimax(successor_state, depth + 1, False, alpha, beta) + best_move = max(best_move, val) + alpha = max(alpha, best_move) + if beta <= alpha: + break + return best_move + else: + best_move = math.inf + for successor_state in state.successors(): + val = Minimax(successor_state, depth + 1, True, alpha, beta) + best_move = min(best_move, val) + beta = min(beta, best_move) + if beta <= alpha: + break + return best_move + WHITE = "W" BLACK = "B" @@ -167,3 +192,13 @@ def generate_moves(self, board, color): else: break return possible_moves + + #Evaluation function + def eval(self, board, playerColor, opponentColor): + player_moves = self.generate_moves(playerColor) + opponent_moves = self.generate_moves(opponentColor) + if player_moves == 0: + return -1 * math.inf + if opponent_moves == 0: + return math.inf + return len(player_moves) - (len(opponent_moves)*3) \ No newline at end of file