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); }
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); } } }
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); } }
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); } }