Exemplo n.º 1
0
        //Hàm kiểm tra trận đấu kết thúc chưa
        public static Player CheckEnd(int rw, int cl)
        {
            int rowTemp = rw;
            int colTemp = cl;
            int count1, count2, count3, count4;

            count1 = count2 = count3 = count4 = 1;
            Player cur = board[rw, cl];

            OWin.Reset();
            OWin.Add(new Node(rowTemp, colTemp));
            #region Kiem Tra Hang Ngang
            while (colTemp - 1 >= 0 && board[rowTemp, colTemp - 1] == cur)
            {
                OWin.Add(new Node(rowTemp, colTemp - 1));
                count1++;
                colTemp--;
            }
            colTemp = cl;
            while (colTemp + 1 <= column - 1 && board[rowTemp, colTemp + 1] == cur)
            {
                OWin.Add(new Node(rowTemp, colTemp + 1));
                count1++;
                colTemp++;
            }
            if (count1 == 5)
            {
                return(cur);
            }
            #endregion
            #region Kiem Tra Hang Doc
            OWin.Reset();
            colTemp = cl;
            OWin.Add(new Node(rowTemp, colTemp));

            while (rowTemp - 1 >= 0 && board[rowTemp - 1, colTemp] == cur)
            {
                OWin.Add(new Node(rowTemp - 1, colTemp));
                count2++;
                rowTemp--;
            }
            rowTemp = rw;
            while (rowTemp + 1 <= row - 1 && board[rowTemp + 1, colTemp] == cur)
            {
                OWin.Add(new Node(rowTemp + 1, colTemp));
                count2++;
                rowTemp++;
            }
            if (count2 == 5)
            {
                return(cur);
            }
            #endregion
            #region Kiem Tra Duong Cheo Chinh (\)
            colTemp = cl;
            rowTemp = rw;
            OWin.Reset();
            OWin.Add(new Node(rowTemp, colTemp));
            while (rowTemp - 1 >= 0 && colTemp - 1 >= 0 && board[rowTemp - 1, colTemp - 1] == cur)
            {
                OWin.Add(new Node(rowTemp - 1, colTemp - 1));
                count3++;
                rowTemp--;
                colTemp--;
            }
            rowTemp = rw;
            colTemp = cl;
            while (rowTemp + 1 <= row - 1 && colTemp + 1 <= column - 1 && board[rowTemp + 1, colTemp + 1] == cur)
            {
                OWin.Add(new Node(rowTemp + 1, colTemp + 1));
                count3++;
                rowTemp++;
                colTemp++;
            }
            if (count3 == 5)
            {
                return(cur);
            }
            #endregion
            #region Kiem Tra Duong Cheo Phu
            rowTemp = rw;
            colTemp = cl;
            OWin.Reset();
            OWin.Add(new Node(rowTemp, colTemp));
            while (rowTemp + 1 <= row - 1 && colTemp - 1 >= 0 && board[rowTemp + 1, colTemp - 1] == cur)
            {
                OWin.Add(new Node(rowTemp + 1, colTemp - 1));
                count4++;
                rowTemp++;
                colTemp--;
            }
            rowTemp = rw;
            colTemp = cl;
            while (rowTemp - 1 >= 0 && colTemp + 1 <= column - 1 && board[rowTemp - 1, colTemp + 1] == cur)
            {
                OWin.Add(new Node(rowTemp - 1, colTemp + 1));
                count4++;
                rowTemp--;
                colTemp++;
            }
            if (count4 == 5)
            {
                return(cur);
            }
            #endregion
            return(Player.None);
        }