private int Min(int player, int depth) { List <Draw> legalDraws = new List <Draw>(); gameBoard.GetLegalDraws(player, ref legalDraws); if (depth == 0 || legalDraws.Count == 0) { return(Rate()); } int minValue = int.MaxValue; foreach (Draw draw in legalDraws) { gameBoard.MakeDraw(draw.piece, draw.squareIndex); int value = Min((player + 1) % 2, depth - 1); gameBoard.UndoDraw(); if (value < minValue) { minValue = value; if (depth == maxDepth) { currentAIDraw = draw; } } } return(minValue); }