Example #1
0
        /// <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;
            }
        }