public int Evaluate(byte[,] board, byte[] move, byte sign) { byte oppSign = sign == 1 ? (byte)2 : (byte)1; int result = 0; board[move[0], move[1]] = sign; List <string> StringsToCheck = Utils.FindStrings(board, move, signsInRowToWin); board[move[0], move[1]] = oppSign; StringsToCheck.AddRange(Utils.FindStrings(board, move, signsInRowToWin)); board[move[0], move[1]] = 0; PatternCollection patterns = sign == 1 ? ownPatterns : opponentPatterns; foreach (string item in StringsToCheck) { foreach (Pattern pattern in patterns.PatternList) { if (item.Contains(pattern.PatternString)) { result += pattern.Weight; } } } return(result); }
public MiniMax(byte signsInRowToWin) { this.signsInRowToWin = signsInRowToWin; ownPatterns = new PatternCollection(signsInRowToWin, 1); opponentPatterns = new PatternCollection(signsInRowToWin, 2); }