Beispiel #1
0
        private OCo TimKiemNuocDi()
        {
            OCo  ocoResult = new OCo();
            long DiemMax   = 0;

            //thuật toán vét cạn
            for (int i = 0; i < _BanCo.SoDong; i++)
            {
                for (int j = 0; j < _BanCo.SoCot; j++)
                {
                    if (_MangOCo[i, j].SoHuu == 0)
                    {
                        //khỏi tạo các biến
                        long DiemTanCong  = DiemTC_DuyetDoc(i, j) + DiemTC_DuyetNgang(i, j) + DiemTC_DuyetCheoNguoc(i, j) + DiemTC_DuyetCheoXuoi(i, j);
                        long DiemPhongNgu = DiemPN_DuyetDoc(i, j) + DiemPN_DuyetNgang(i, j) + DiemPN_DuyetCheoNguoc(i, j) + DiemPN_DuyetCheoXuoi(i, j);
                        long DiemTam      = DiemTanCong > DiemPhongNgu ? DiemTanCong : DiemPhongNgu;
                        if (DiemMax < DiemTam)
                        {
                            DiemMax   = DiemTam;
                            ocoResult = new OCo(_MangOCo[i, j].Dong, _MangOCo[i, j].Cot, _MangOCo[i, j].ViTri, _MangOCo[i, j].SoHuu);
                        }
                    }
                }
            }
            return(ocoResult);
        }
Beispiel #2
0
 public void KhoiTaoMangOCo()
 {
     for (int i = 0; i < _BanCo.SoDong; i++)
     {
         for (int j = 0; j < _BanCo.SoCot; j++)
         {
             _MangOCo[i, j] = new OCo(i, j, new Point(j * OCo.ChieuRong, i * OCo.ChieuCao), 0);
         }
     }
 }
Beispiel #3
0
        public void KhoiDongComputer(Graphics g)
        {
            if (DS_CacNuocDaDi.Count == 0)
            {
                DanhCo(_BanCo.SoCot / 2 * OCo.ChieuRong + 1, _BanCo.SoDong / 2 * OCo.ChieuCao + 1, g);
            }

            else
            {
                OCo oco = TimKiemNuocDi();
                DanhCo(oco.ViTri.X + 1, oco.ViTri.Y + 1, g);
            }
        }
Beispiel #4
0
        public void KhoiDongComputer(Graphics graphics)
        {
            //hàm gọi computer chạy
            if (DS_CacNuocDaDi.Count == 0)//kiểm tra các nước đi
            {
                //gọi hàm đánh cờ vô để khở tạo các nước đi
                DanhCo(_BanCo.SoCot / 2 * OCo.ChieuRong + 1, _BanCo.SoDong / 2 * OCo.ChieuCao + 1, graphics);
            }

            else
            {
                //nếu không phải đánh đầu tiên thì phải tìm kiếm nước đi hợp lý
                OCo oco = TimKiemNuocDi();
                //gọi hàm đánh cờ vô theo nước đi hợp lý nhất
                DanhCo(oco.ViTri.X + 1, oco.ViTri.Y + 1, graphics);
            }
        }