private static int Iterate(Node node, int depth, int alpha, int beta, bool Player) { if (depth == 0 || node.IsTerminal(Player)) { return node.GetTotalScore(Player); } if (Player == MaxPlayer) { foreach (Node child in node.Children(Player)) { int temp = Iterate(child, depth - 1, alpha, beta, !Player); if (temp > alpha) { BestMove = child; alpha = temp; } } return alpha; } else { foreach (Node child in node.Children(Player)) { beta = Math.Min(beta, Iterate(child, depth - 1, alpha, beta, !Player)); if (beta < alpha) { break; } } return beta; } }