private static int FindRandom() { BestMove = null; var rndMoves = Helpers.GenerateRandom(24, 0, 23); foreach(var moveID in rndMoves) { var encodedMoveID = Board.Moves[moveID].ID; if (Board.Move(Board.Moves[moveID].ID)) return encodedMoveID; } return -1; }
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; } }