예제 #1
0
파일: IA.cs 프로젝트: yoh974/morpionP2P
        //cette fonction recherche si 2 'O' sont alignées horizontalement, verticalement, et en diagonale et met un 'O' pour gagner
        int iaPlayToWin()
        {
            //une chaine pour tester la présence de O
            string car_ord = _signe_ordinateur;

            string tabLigne = "";

            for (int i = 0; i < 9; i += 3)
            {
                if (i == 0)
                {
                    //test des colonnes
                    for (int j = 0; j < 3; j++)
                    {
                        //concaténation des colonnes
                        tabLigne = _grille.getCaseValue(j) + _grille.getCaseValue(j + 3) + _grille.getCaseValue(j + 6);
                        //test des différentes position des O et affectation du O à l'unique case vide
                        if (tabLigne == car_ord + car_ord)
                        {
                            if (_grille.getCaseValue(j) == "")
                            {
                                return(j);
                            }
                            else if (_grille.getCaseValue(j + 3) == "")
                            {
                                return(j + 3);
                            }
                            else if (_grille.getCaseValue(j + 6) == "")
                            {
                                return(j + 6);
                            }
                        }
                    }

                    //diagonale à partir de la position 0
                    tabLigne = _grille.getCaseValue(0) + _grille.getCaseValue(4) + _grille.getCaseValue(8);
                    if (tabLigne == car_ord + car_ord)
                    {
                        if (_grille.getCaseValue(0) == "")
                        {
                            return(0);
                        }
                        else if (_grille.getCaseValue(4) == "")
                        {
                            return(4);
                        }
                        else if (_grille.getCaseValue(8) == "")
                        {
                            return(8);
                        }
                    }

                    //diagonale à partir de la position 2
                    tabLigne = _grille.getCaseValue(2) + _grille.getCaseValue(4) + _grille.getCaseValue(6);

                    if (tabLigne == car_ord + car_ord)
                    {
                        if (_grille.getCaseValue(2) == "")
                        {
                            return(2);
                        }
                        else if (_grille.getCaseValue(4) == "")
                        {
                            return(4);
                        }
                        else if (_grille.getCaseValue(6) == "")
                        {
                            return(6);
                        }
                    }
                }

                //test des lignes
                tabLigne = _grille.getCaseValue(i) + _grille.getCaseValue(i + 1) + _grille.getCaseValue(i + 2);

                if (tabLigne == car_ord + car_ord)
                {
                    if (_grille.getCaseValue(i) == "")
                    {
                        return(i);
                    }
                    else if (_grille.getCaseValue(i + 1) == "")
                    {
                        return(i + 1);
                    }
                    else if (_grille.getCaseValue(i + 2) == "")
                    {
                        return(i + 2);
                    }
                }
            }

            return(-1);
        }