Exemplo n.º 1
0
        public int CheckRow(int[,] numberMatrixIcon, PointNew p1, PointNew p2)
        {
            if (p1.y > p2.y)
            {
                return(0);
            }
            if (p1.x != p2.x)
            {
                return(0);
            }
            int i;

            if (p1.y + 1 == p2.y)
            {
                if ((numberMatrixIcon[p1.x, p1.y] == numberMatrixIcon[p2.x, p2.y]) ||
                    (numberMatrixIcon[p1.x, p1.y] == 0 && numberMatrixIcon[p2.x, p2.y] != 0) ||
                    (numberMatrixIcon[p1.x, p1.y] != 0 && numberMatrixIcon[p2.x, p2.y] == 0))
                {
                    return(1);
                }
                else
                {
                    return(0);
                }
            }
            else
            {
                if ((numberMatrixIcon[p1.x, p1.y] == numberMatrixIcon[p2.x, p2.y]) ||
                    (numberMatrixIcon[p1.x, p1.y] == 0 && numberMatrixIcon[p2.x, p2.y] != 0) ||
                    (numberMatrixIcon[p1.x, p1.y] != 0 && numberMatrixIcon[p2.x, p2.y] == 0))

                {
                    for (i = p1.y + 1; i < p2.y; i++)
                    {
                        if (numberMatrixIcon[p1.x, i] != 0)
                        {
                            return(0);
                        }
                    }
                    return(1);
                }
                else
                {
                    return(0);
                }
            }
        }
Exemplo n.º 2
0
        public int FindColumn(int[,] numberMatrixIcon, PointNew p1, PointNew p2)
        {
            PointNew tg;

            if (p1.x > p2.x)
            {
                tg = p1;
                p1 = p2;
                p2 = tg;
            }
            if (CheckColumn(numberMatrixIcon, p1, p2) == 0)
            {
                return(0);
            }
            arrayPoint[0] = p1;
            arrayPoint[1] = p2;
            return(1);
        }
Exemplo n.º 3
0
        public int ZigZugUpToDown(int [,] matrixNumberIcon, PointNew p1, PointNew p2)
        {
            // Nếu p1 ! p2 loại luôn
            if (matrixNumberIcon[p1.x, p1.y] != matrixNumberIcon[p2.x, p2.y])
            {
                return(0);
            }
            // Nếu p1 nằm bên dưới p2 thì đổi chỗ để dễ xử lý.
            PointNew ptg = new PointNew();

            if (p1.x > p2.x)
            {
                ptg = p1;
                p1  = p2;
                p2  = ptg;
            }

            // Duyệt lần lượt trên xuống dưới
            PointNew p1tg = new PointNew();
            PointNew p2tg = new PointNew();
            int      i;

            for (i = 0; i < 14; i++)
            {
                p1tg.y = p1.y;
                p1tg.x = i;
                p2tg.y = p2.y;
                p2tg.x = i;

                // Kiểm tra 2 điểm góc là 0 hoặc (1 điểm thẳng hàng với 1 trong 2 điểm p1, p2 và 1 góc bằng 0)
                if ((matrixNumberIcon[p1tg.x, p1tg.y] == 0 && matrixNumberIcon[p2tg.x, p2tg.y] == 0) ||
                    (p1tg.x == p2.x && matrixNumberIcon[p1tg.x, p1tg.y] == 0) ||
                    (p2tg.x == p1.x && matrixNumberIcon[p2tg.x, p2tg.y] == 0))
                {
                    if (FindRow(matrixNumberIcon, p1tg, p2tg) == 1)
                    {
                        arrayPoint[0] = p1;
                        arrayPoint[1] = p1tg;
                        arrayPoint[2] = p2tg;
                        arrayPoint[3] = p2;
                        // Trường hợp i < p1.x
                        if (i < p1.x)
                        {
                            // Kiểm tra 2 cột từ p1tg đến p1 và p2tg đến p2
                            if (FindColumn(matrixNumberIcon, p1tg, p1) == 1 && FindColumn(matrixNumberIcon, p2tg, p2) == 1)
                            {
                                return(1);
                            }
                        }

                        // Trường hợp p1.x <i <p2.x
                        else if (p1.x < i && i < p2.x)
                        {
                            // Kiểm tra 2 cột từ p1 đến p1tg và p2tg đến p2
                            if (FindColumn(matrixNumberIcon, p1, p1tg) == 1 && FindColumn(matrixNumberIcon, p2tg, p2) == 1)
                            {
                                return(1);
                            }
                        }

                        //Trường hợp p2.x<i
                        else if (p2.x < i)
                        {
                            //Kiểm tra 2 cột từ p1tg đến p1 và p2 đến p2tg
                            if (FindColumn(matrixNumberIcon, p1tg, p1) == 1 && FindColumn(matrixNumberIcon, p2, p2tg) == 1)
                            {
                                return(1);
                            }
                        }

                        //Trường hợp p1.x = i;
                        else if (p1.x == i)
                        {
                            // Kiểm tra 1 cột từ p2tg đến p2
                            if (FindColumn(matrixNumberIcon, p1tg, p2) == 1)
                            {
                                arrayPoint[2] = p2;
                                arrayPoint[3] = p2;
                                return(1);
                            }
                        }

                        // Trường hợp p2.x=i
                        else if (p2.x == i)
                        {
                            //Kiểm tra 1 cột từ p1 đến p1tg
                            if (FindColumn(matrixNumberIcon, p1, p1tg) == 1)
                            {
                                arrayPoint[2] = p2;
                                arrayPoint[3] = p2;
                                return(1);
                            }
                        }
                    }
                }
            }
            return(0);
        }
Exemplo n.º 4
0
        public int ZigZugLeftToRight(int [,] matrixNumberIcon, PointNew p1, PointNew p2)
        {
            // Nếu p1 ! p2 loại luôn
            if (matrixNumberIcon[p1.x, p1.y] != matrixNumberIcon[p2.x, p2.y])
            {
                return(0);
            }
            // Nếu p1 nằm bên phải p2 thì đổi chỗ để dễ xử lý.
            PointNew ptg = new PointNew();

            if (p1.y > p2.y)
            {
                ptg = p1;
                p1  = p2;
                p2  = ptg;
            }

            // Duyệt lần lượt từ trái sang phải
            PointNew p1tg = new PointNew();
            PointNew p2tg = new PointNew();
            int      i;

            for (i = 0; i < 23; i++)
            {
                p1tg.x = p1.x;
                p1tg.y = i;
                p2tg.x = p2.x;
                p2tg.y = i;

                // Kiểm tra 2 điểm góc là 0 hoặc (1 điểm thẳng cột với 1 trong 2 điểm p1, p2 và 1 góc bằng 0)
                if ((matrixNumberIcon[p1tg.x, p1tg.y] == 0 && matrixNumberIcon[p2tg.x, p2tg.y] == 0) ||
                    (p1tg.y == p2.y && matrixNumberIcon[p1tg.x, p1tg.y] == 0) ||
                    (p2tg.y == p1.y && matrixNumberIcon[p2tg.x, p2tg.y] == 0))
                {
                    if (FindColumn(matrixNumberIcon, p1tg, p2tg) == 1)
                    {
                        arrayPoint[0] = p1;
                        arrayPoint[1] = p1tg;
                        arrayPoint[2] = p2tg;
                        arrayPoint[3] = p2;
                        // Trường hợp i < p1.y
                        if (i < p1.y)
                        {
                            // Kiểm tra 2 hàng ngang từ p1tg đến p1 và p2tg đến p2
                            if (FindRow(matrixNumberIcon, p1tg, p1) == 1 && FindRow(matrixNumberIcon, p2tg, p2) == 1)
                            {
                                return(1);
                            }
                        }

                        // Trường hợp p1.y <i <p2.y
                        else if (p1.y < i && i < p2.y)
                        {
                            // Kiểm tra 2 hàng ngang từ p1 đến p1tg và p2tg đến p2
                            if (FindRow(matrixNumberIcon, p1, p1tg) == 1 && FindRow(matrixNumberIcon, p2tg, p2) == 1)
                            {
                                return(1);
                            }
                        }

                        //Trường hợp p2.y<i
                        else if (p2.y < i)
                        {
                            //Kiểm tra 2 hàng ngang từ p1tg đến p1 và p2 đến p2tg
                            if (FindRow(matrixNumberIcon, p1tg, p1) == 1 && FindRow(matrixNumberIcon, p2, p2tg) == 1)
                            {
                                return(1);
                            }
                        }

                        //Trường hợp p1.y = i;
                        else if (p1.y == i)
                        {
                            // Kiểm tra 1 hàng ngang từ p2tg đến p2
                            if (FindRow(matrixNumberIcon, p1tg, p2) == 1)
                            {
                                arrayPoint[2] = p2;
                                arrayPoint[3] = p2;
                                return(1);
                            }
                        }

                        // Trường hợp p2.y=i
                        else if (p2.y == i)
                        {
                            //Kiểm tra 1 hàng ngang từ p1 đến p1tg
                            if (FindRow(matrixNumberIcon, p1, p1tg) == 1)
                            {
                                arrayPoint[2] = p2;
                                arrayPoint[3] = p2;
                                return(1);
                            }
                        }
                    }
                }
            }
            return(0);
        }