Пример #1
0
 public void copy(KienHang k)
 {
     width       = k.width;
     maKienHang  = k.maKienHang;
     donGia      = k.donGia;
     ngayNhapKho = k.ngayNhapKho;
 }
Пример #2
0
        //-1: Dich den khong hop le
        //-2: Khong co hang o (pre_x, pre_y)
        //-3: Toa do qua gioi han
        public int Move(int pre_k, int pre_x, int pre_y, int new_k, int new_x, int new_y)
        {
            pre_k--; new_k--;

            if (pre_x < 0 || pre_x >= khu[pre_k].getNRow())
            {
                return(-3);
            }
            if (new_x < 0 || new_x >= khu[new_k].getNRow())
            {
                return(-3);
            }
            if (pre_y < 0 || pre_y >= khu[pre_k].getNCol())
            {
                return(-3);
            }
            if (new_y < 0 || new_y >= khu[new_k].getNCol())
            {
                return(-3);
            }

            int w1 = khu[pre_k].get(pre_x, pre_y).getWidth();

            if (w1 == 0)
            {
                return(-2);
            }

            if (w1 == 2)
            {
                if (new_y + 1 >= khu[new_k].getNCol())
                {
                    return(-1);
                }
                KienHang temp1 = new KienHang();
                KienHang temp2 = new KienHang();
                temp1.copy(khu[pre_k].get(pre_x, pre_y));
                temp2.copy(khu[pre_k].get(pre_x, pre_y + 1));
                khu[pre_k].get(pre_x, pre_y).refresh();
                khu[pre_k].get(pre_x, pre_y + 1).refresh();
                if (khu[new_k].get(new_x, new_y + 1).getWidth() != 0 || khu[new_k].get(new_x, new_y).getWidth() != 0)
                {
                    khu[pre_k].set(pre_x, pre_y, temp1);
                    khu[pre_k].set(pre_x, pre_y + 1, temp2);
                    return(-1);
                }
                khu[new_k].set(new_x, new_y, temp1);
                khu[new_k].set(new_x, new_y + 1, temp2);
            }
            if (w1 == -2)
            {
                if (new_y - 1 < 0)
                {
                    return(-1);
                }
                KienHang temp1 = new KienHang();
                KienHang temp2 = new KienHang();
                temp1.copy(khu[pre_k].get(pre_x, pre_y));
                temp2.copy(khu[pre_k].get(pre_x, pre_y - 1));
                khu[pre_k].get(pre_x, pre_y).refresh();
                khu[pre_k].get(pre_x, pre_y - 1).refresh();
                if (khu[new_k].get(new_x, new_y - 1).getWidth() != 0 || khu[new_k].get(new_x, new_y).getWidth() != 0)
                {
                    khu[pre_k].set(pre_x, pre_y, temp1);
                    khu[pre_k].set(pre_x, pre_y - 1, temp2);
                    return(-1);
                }
                khu[new_k].set(new_x, new_y, temp1);
                khu[new_k].set(new_x, new_y - 1, temp2);
            }
            if (w1 == 1)
            {
                if (khu[new_k].get(new_x, new_y).getWidth() != 0)
                {
                    return(-1);
                }
                khu[new_k].set(new_x, new_y, khu[pre_k].get(pre_x, pre_y));
                khu[pre_k].get(pre_x, pre_y).refresh();
            }

            return(1);
        }
Пример #3
0
        public void docFile(StreamReader file)
        {
            string line = file.ReadLine();

            string[] numberArray = line.Split(' ');

            posX       = toInt(numberArray[0]);
            posY       = toInt(numberArray[1]);
            gocNghieng = float.Parse(numberArray[2], System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
            nCol       = toInt(numberArray[3]);
            nRow       = toInt(numberArray[4]);
            int sl = toInt(numberArray[5]);

            kienHang = new List <List <KienHang> >();
            for (int i = 0; i < nRow; ++i)
            {
                kienHang.Add(new List <KienHang>());
                for (int j = 0; j < nCol; ++j)
                {
                    kienHang[i].Add(new KienHang());
                    kienHang[i][j].setXY(i, j);
                }
            }

            for (int i = 0; i < sl; ++i)
            {
                line = file.ReadLine();
                string[] dataInfo = line.Split(' ');
                int      temp_n   = dataInfo.Length;

                int    x           = toInt(dataInfo[0]);
                int    y           = toInt(dataInfo[1]);
                int    w           = toInt(dataInfo[2]);
                string maKienHang  = "";
                int    donGia      = 0;
                Date   ngayNhapKho = new Date();

                if (temp_n >= 4)
                {
                    maKienHang = dataInfo[3];
                }

                if (temp_n >= 5)
                {
                    donGia = toInt(dataInfo[4]);
                }
                if (temp_n >= 6)
                {
                    ngayNhapKho = new Date(dataInfo[5]);
                }

                //KienHang(x, y, ...): (x, y) la vi tri ve len man hinh
                //luc tinh toan can luu y lai
                kienHang[x][y] = new KienHang(x, y, w, maKienHang, donGia, ngayNhapKho);
                if (w == 2)
                {
                    kienHang[x][y + 1] = new KienHang(x, y, -w, maKienHang, donGia, ngayNhapKho);
                }
            }

            for (int i = 0; i < nRow; ++i)
            {
                for (int j = 0; j < nCol; ++j)
                {
                    if (j == nCol - 1)
                    {
                        kienHang[i][j].setKienHangRight(null);
                    }
                    else
                    {
                        kienHang[i][j].setKienHangRight(kienHang[i][j + 1]);
                    }
                }
            }

            for (int i = 0; i < nRow; ++i)
            {
                for (int j = 0; j < nCol; ++j)
                {
                    if (j == 0)
                    {
                        kienHang[i][j].setKienHangLeft(null);
                    }
                    else
                    {
                        kienHang[i][j].setKienHangLeft(kienHang[i][j - 1]);
                    }
                }
            }
        }
Пример #4
0
 public void set(int x, int y, KienHang k)
 {
     kienHang[x][y].copy(k);
 }
Пример #5
0
 public void setKienHangLeft(KienHang k)
 {
     left = k;
 }
Пример #6
0
 public void setKienHangRight(KienHang k)
 {
     right = k;
 }