/// <summary> /// It's a classic tactic which consist to /// offer an angle to the opponent /// to take an other angle and a complete bord /// </summary> /// <param name="ponderationGrid"></param> private void EvaluateBorderFive(int[,] ponderationGrid) { Tuple <int, int> token00 = new Tuple <int, int>(0, 0); Tuple <int, int> token01 = new Tuple <int, int>(0, 1); Tuple <int, int> token05 = new Tuple <int, int>(0, 5); Tuple <int, int> token06 = new Tuple <int, int>(0, 6); Tuple <int, int> token10 = new Tuple <int, int>(1, 0); Tuple <int, int> token11 = new Tuple <int, int>(1, 1); Tuple <int, int> token15 = new Tuple <int, int>(1, 5); Tuple <int, int> token16 = new Tuple <int, int>(1, 6); Tuple <int, int> token70 = new Tuple <int, int>(7, 0); Tuple <int, int> token71 = new Tuple <int, int>(7, 1); Tuple <int, int> token75 = new Tuple <int, int>(7, 5); Tuple <int, int> token76 = new Tuple <int, int>(7, 6); Tuple <int, int> token80 = new Tuple <int, int>(8, 0); Tuple <int, int> token81 = new Tuple <int, int>(8, 1); Tuple <int, int> token85 = new Tuple <int, int>(8, 5); Tuple <int, int> token86 = new Tuple <int, int>(8, 6); if (OpponentToken.Contains(token00) && ( ListPossibleMoves.Keys.Contains(token10) && (ListPossibleMoves[token10].Contains(token11) || CurrentToken.Contains(token11)) && Borders["Top"].Intersect(OpponentToken).Any() && OpponentToken.Contains(token70) && !OpponentToken.Contains(token80) || ListPossibleMoves.Keys.Contains(token01) && (ListPossibleMoves[token01].Contains(token11) || CurrentToken.Contains(token11)) && Borders["Left"].Intersect(OpponentToken).Any() && OpponentToken.Contains(token05) && !OpponentToken.Contains(token06) ) ) { ponderationGrid[1, 1] = 200; } if (OpponentToken.Contains(token06) && ( ListPossibleMoves.Keys.Contains(token05) && (ListPossibleMoves[token05].Contains(token15) || CurrentToken.Contains(token15)) && Borders["Left"].Intersect(OpponentToken).Any() && OpponentToken.Contains(token01) && !OpponentToken.Contains(token00) || ListPossibleMoves.Keys.Contains(token16) && (ListPossibleMoves[token16].Contains(token15) || CurrentToken.Contains(token15)) && Borders["Bottom"].Intersect(OpponentToken).Any() && OpponentToken.Contains(token76) && !OpponentToken.Contains(token86) ) ) { ponderationGrid[1, 5] = 200; } if ( OpponentToken.Contains(token80) && ( ListPossibleMoves.Keys.Contains(token70) && (ListPossibleMoves[token70].Contains(token71) || CurrentToken.Contains(token71)) && Borders["Top"].Intersect(OpponentToken).Any() && OpponentToken.Contains(token10) && !OpponentToken.Contains(token00) || ListPossibleMoves.Keys.Contains(token81) && (ListPossibleMoves[token81].Contains(token71) || CurrentToken.Contains(token71)) && Borders["Right"].Intersect(OpponentToken).Any() && OpponentToken.Contains(token85) && !OpponentToken.Contains(token86) ) ) { ponderationGrid[7, 1] = 200; } if ( OpponentToken.Contains(token86) && ( ListPossibleMoves.Keys.Contains(token85) && (ListPossibleMoves[token85].Contains(token75) || CurrentToken.Contains(token75)) && Borders["Right"].Intersect(OpponentToken).Any() && OpponentToken.Contains(token81) && !OpponentToken.Contains(token80) || ListPossibleMoves.Keys.Contains(token76) && (ListPossibleMoves[token76].Contains(token75) || CurrentToken.Contains(token75)) && Borders["Bottom"].Intersect(OpponentToken).Any() && OpponentToken.Contains(token16) && !OpponentToken.Contains(token06) ) ) { ponderationGrid[7, 5] = 200; } }